ActivitySendQueueProcess   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 30
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 13
c 0
b 0
f 0
dl 0
loc 30
rs 10
wmc 4

3 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A createMessageCollectionDto() 0 13 2
A send() 0 8 1
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * This file is part of forecast.it.fill project.
7
 * (c) Patrick Jaja <[email protected]>
8
 * This source file is subject to the MIT license that is bundled
9
 * with this source code in the file LICENSE.
10
 */
11
12
namespace ForecastAutomation\Activity\Business;
13
14
use ForecastAutomation\Activity\Shared\Dto\ActivityDtoCollection;
15
use ForecastAutomation\ProjektronClient\Shared\Config\ProjektronClientQueueConstants;
16
use ForecastAutomation\QueueClient\QueueClientFacade;
17
use ForecastAutomation\QueueClient\Shared\Dto\MessageCollectionDto;
18
use ForecastAutomation\QueueClient\Shared\Dto\MessageDto;
19
20
class ActivitySendQueueProcess
21
{
22
    public function __construct(
23
        private QueueClientFacade $queueClientFacade,
24
    ) {
25
    }
26
27
    public function send(ActivityDtoCollection $activityDtoCollection): int
28
    {
29
        $this->queueClientFacade->sendMessages(
30
            ProjektronClientQueueConstants::QUEUE_NAME,
31
            $this->createMessageCollectionDto($activityDtoCollection)
32
        );
33
34
        return \count($activityDtoCollection->activityDtos);
35
    }
36
37
    private function createMessageCollectionDto(ActivityDtoCollection $activityDtoCollection): MessageCollectionDto
38
    {
39
        $messages = [];
40
        foreach ($activityDtoCollection as $activityDto) {
41
            $messages[] =
42
                new MessageDto(
43
                    ['created' => $activityDto->created->format('c')] + (array) $activityDto,
44
                    ProjektronClientQueueConstants::QUEUE_NAME, // ToDo: Move to output plugin
45
                    ProjektronClientQueueConstants::IMPORT_EVENT
46
                );
47
        }
48
49
        return new MessageCollectionDto(...$messages);
50
    }
51
}
52