UpdateActivityLogHandler   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 28
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 11
c 0
b 0
f 0
dl 0
loc 28
rs 10
wmc 4

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __invoke() 0 16 3
A __construct() 0 5 1
1
<?php
2
3
namespace Locastic\Loggastic\MessageHandler;
4
5
use Locastic\Loggastic\Bridge\Elasticsearch\Context\Traits\ElasticNormalizationContextTrait;
6
use Locastic\Loggastic\DataProvider\CurrentDataTrackerProviderInterface;
7
use Locastic\Loggastic\DataProcessor\ActivityLogProcessorInterface;
8
use Locastic\Loggastic\Message\UpdateActivityLogMessageInterface;
9
use Locastic\Loggastic\Metadata\LoggableContext\Factory\LoggableContextFactory;
10
use Locastic\Loggastic\Model\Output\CurrentDataTrackerInterface;
11
use Symfony\Component\Messenger\Attribute\AsMessageHandler;
12
13
#[AsMessageHandler]
14
final class UpdateActivityLogHandler
15
{
16
    use ElasticNormalizationContextTrait;
17
18
    public function __construct(
19
        private readonly ActivityLogProcessorInterface $activityLogProcessor,
20
        private readonly CurrentDataTrackerProviderInterface $currentDataTrackerProvider,
21
        private readonly LoggableContextFactory $loggableContextFactory
22
    ) {
23
    }
24
25
    public function __invoke(UpdateActivityLogMessageInterface $message): void
26
    {
27
        $updatedItem = $message->getUpdatedItem();
28
29
        $loggableContext = $this->loggableContextFactory->create($message->getClassName());
30
        if (!is_array($loggableContext)) {
31
            return;
32
        }
33
34
        $currentDataTracker = $this->currentDataTrackerProvider->getCurrentDataTrackerByClassAndId($message->getClassName(), $updatedItem->getId());
35
36
        if (!$currentDataTracker instanceof CurrentDataTrackerInterface) {
37
            return;
38
        }
39
40
        $this->activityLogProcessor->processUpdatedItem($message, $currentDataTracker);
41
    }
42
}
43