Test Failed
Push — master ( e0c95c...ecb0ac )
by Patrick
10:20 queued 15s
created

PeriodicalActivityDataImportProcess   A

Complexity

Total Complexity 6

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 21
c 0
b 0
f 0
dl 0
loc 49
rs 10
wmc 6

4 Methods

Rating   Name   Duplication   Size   Complexity  
A generateActivityToDate() 0 5 1
A generateActivity() 0 16 2
A __construct() 0 4 1
A createMessageCollectionDto() 0 13 2
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\PeriodicalActivity\Business;
13
14
use ForecastAutomation\Activity\Shared\Dto\ActivityDto;
15
use ForecastAutomation\Activity\Shared\Dto\ActivityDtoCollection;
16
use ForecastAutomation\ForecastClient\Shared\Config\ForecastClientQueueConstants;
17
use ForecastAutomation\PeriodicalActivity\Shared\Dto\PeriodicalActivityConfigDto;
18
use ForecastAutomation\QueueClient\QueueClientFacade;
19
use ForecastAutomation\QueueClient\Shared\Dto\MessageCollectionDto;
20
use ForecastAutomation\QueueClient\Shared\Dto\MessageDto;
21
22
class PeriodicalActivityDataImportProcess
23
{
24
    public const PERIODICAL_SUFFIX = 'Geplanter Termin';
25
26
    public function __construct(
27
        private PeriodicalActivityConfigReader $periodicalActivityConfigReader,
28
        private QueueClientFacade $queueClientFacade
29
    ) {
30
    }
31
32
    public function generateActivityToDate(string $periodicalDate): ActivityDtoCollection
33
    {
34
        return $this->generateActivity(
35
            $this->periodicalActivityConfigReader->readPeriodicalConfig($periodicalDate),
36
            $periodicalDate
37
        );
38
    }
39
40
    private function createMessageCollectionDto(ActivityDtoCollection $activityDtoCollection): MessageCollectionDto
0 ignored issues
show
Unused Code introduced by
The method createMessageCollectionDto() is not used, and could be removed.

This check looks for private methods that have been defined, but are not used inside the class.

Loading history...
41
    {
42
        $messages = [];
43
        foreach ($activityDtoCollection as $activityDto) {
44
            $messages[] =
45
                new MessageDto(
46
                    ['created' => $activityDto->created->format('c')] + (array) $activityDto,
47
                    ForecastClientQueueConstants::QUEUE_NAME,
48
                    ForecastClientQueueConstants::IMPORT_EVENT
49
                );
50
        }
51
52
        return new MessageCollectionDto(...$messages);
53
    }
54
55
    private function generateActivity(
56
        array $periodicalConfigDtoCollection,
57
        string $periodicalDate
58
    ): ActivityDtoCollection {
59
        $activityDtoArray = [];
60
        /** @var PeriodicalActivityConfigDto $periodicalConfigDto */
61
        foreach ($periodicalConfigDtoCollection as $periodicalConfigDto) {
62
            $activityDtoArray[] = new ActivityDto(
63
                $periodicalConfigDto->project_id,
64
                sprintf('%s: %s', self::PERIODICAL_SUFFIX, $periodicalConfigDto->note),
65
                new \DateTime(date('d-m-Y', strtotime($periodicalDate))),
66
                $periodicalConfigDto->duration
67
            );
68
        }
69
70
        return new ActivityDtoCollection(...$activityDtoArray);
71
    }
72
}
73