Completed
Pull Request — master (#384)
by Kristof
03:20
created

Projector::applyOrganizerProjectedToJSONLD()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.9332
c 0
b 0
f 0
cc 1
nc 1
nop 2
1
<?php
2
3
namespace CultuurNet\UDB3\MyOrganizers\ReadModel;
4
5
use Broadway\EventHandling\EventListenerInterface;
6
use CultuurNet\UDB3\DomainMessageAdapter as DomainMessage;
7
use CultuurNet\UDB3\EventHandling\DelegateEventHandlingToSpecificMethodTraitWithDomainMessageAdapter;
8
use CultuurNet\UDB3\Organizer\Events\OrganizerCreated;
9
use CultuurNet\UDB3\Organizer\Events\OrganizerCreatedWithUniqueWebsite;
10
use CultuurNet\UDB3\Organizer\Events\OrganizerDeleted;
11
use CultuurNet\UDB3\Organizer\Events\OrganizerEvent;
12
use CultuurNet\UDB3\Organizer\OrganizerProjectedToJSONLD;
13
14
class Projector implements EventListenerInterface
15
{
16
    use DelegateEventHandlingToSpecificMethodTraitWithDomainMessageAdapter;
17
18
    /**
19
     * @var RepositoryInterface
20
     */
21
    private $repository;
22
23
    public function __construct(
24
        RepositoryInterface $repository
25
    ) {
26
        $this->repository = $repository;
27
    }
28
29
    public function applyOrganizerProjectedToJSONLD(
30
        OrganizerProjectedToJSONLD $organizerProjectedToJSONLD,
31
        DomainMessage $domainMessage
32
    ) {
33
34
        $this->repository->setUpdateDate(
35
            $organizerProjectedToJSONLD->getId(),
36
            $domainMessage->getRecordedDateTime()
37
        );
38
    }
39
40
    public function applyOrganizerCreated(
41
        OrganizerCreated $organizerCreated,
42
        DomainMessage $domainMessage
43
    ) {
44
        $this->addToRepository(
45
            $organizerCreated,
46
            $domainMessage
47
        );
48
    }
49
50
    public function applyOrganizerCreatedWithUniqueWebsite(
51
        OrganizerCreatedWithUniqueWebsite $organizerCreatedWithUniqueWebsite,
52
        DomainMessage $domainMessage
53
    ) {
54
        $this->addToRepository(
55
            $organizerCreatedWithUniqueWebsite,
56
            $domainMessage
57
        );
58
    }
59
60
    private function addToRepository(
61
        OrganizerEvent $organizerEvent,
62
        DomainMessage $domainMessage
63
    ) {
64
        $this->repository->add(
65
            $organizerEvent->getOrganizerId(),
66
            $domainMessage->getUserId(),
67
            $domainMessage->getRecordedDateTime()
68
        );
69
    }
70
71
    public function applyOrganizerDeleted(
72
        OrganizerDeleted $organizerDeleted
73
    ) {
74
        $this->repository->delete($organizerDeleted->getOrganizerId());
75
    }
76
}
77