Completed
Pull Request — master (#384)
by Kristof
08:53
created

UDB2Projector   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 7

Importance

Changes 0
Metric Value
wmc 2
lcom 1
cbo 7
dl 0
loc 50
rs 10
c 0
b 0
f 0

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 7 1
A applyOrganizerImportedFromUDB2() 0 21 1
1
<?php
2
3
namespace CultuurNet\UDB3\MyOrganizers\ReadModel;
4
5
use Broadway\EventHandling\EventListenerInterface;
6
use CultuurNet\UDB3\Cdb\ActorItemFactory;
7
use CultuurNet\UDB3\Cdb\ItemBaseAdapterFactory;
8
use CultuurNet\UDB3\EventHandling\DelegateEventHandlingToSpecificMethodTrait;
9
use CultuurNet\UDB3\Organizer\Events\OrganizerImportedFromUDB2;
10
11
class UDB2Projector implements EventListenerInterface
12
{
13
    use DelegateEventHandlingToSpecificMethodTrait;
14
15
    /**
16
     * @var RepositoryInterface
17
     */
18
    private $repository;
19
20
    /**
21
     * @var ItemBaseAdapterFactory
22
     */
23
    protected $itemBaseAdapterFactory;
24
25
    /**
26
     * UDB2Projector constructor.
27
     *
28
     * @param RepositoryInterface $repository
29
     * @param ItemBaseAdapterFactory $itemBaseAdapterFactory
30
     */
31
    public function __construct(
32
        RepositoryInterface $repository,
33
        ItemBaseAdapterFactory $itemBaseAdapterFactory
34
    ) {
35
        $this->repository = $repository;
36
        $this->itemBaseAdapterFactory = $itemBaseAdapterFactory;
37
    }
38
39
    public function applyOrganizerImportedFromUDB2(
40
        OrganizerImportedFromUDB2 $organizerImportedFromUDB2
41
    ) {
42
        $udb2Actor = ActorItemFactory::createActorFromCdbXml(
43
            $organizerImportedFromUDB2->getCdbXmlNamespaceUri(),
44
            $organizerImportedFromUDB2->getCdbXml()
45
        );
46
47
        $udb2ActorAdapter = $this->itemBaseAdapterFactory->create($udb2Actor);
48
49
        $this->repository->add(
50
            $udb2Actor->getCdbId(),
51
            $udb2ActorAdapter->getResolvedCreatorUserId(),
52
            $udb2ActorAdapter->getCreationDateTime()
53
        );
54
        
55
        $this->repository->setUpdateDate(
56
            $udb2Actor->getCdbId(),
57
            $udb2ActorAdapter->getLastUpdateDateTime()
58
        );
59
    }
60
}
61