WebsiteUniqueConstraintService   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 33
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 2

Importance

Changes 0
Metric Value
wmc 5
lcom 0
cbo 2
dl 0
loc 33
rs 10
c 0
b 0
f 0

3 Methods

Rating   Name   Duplication   Size   Complexity  
A hasUniqueConstraint() 0 5 2
A needsUpdateUniqueConstraint() 0 4 1
A getUniqueConstraintValue() 0 10 2
1
<?php
2
3
namespace CultuurNet\UDB3\Organizer\Events;
4
5
use Broadway\Domain\DomainMessage;
6
use CultuurNet\UDB3\EventSourcing\DBAL\UniqueConstraintServiceInterface;
7
use ValueObjects\StringLiteral\StringLiteral;
8
9
class WebsiteUniqueConstraintService implements UniqueConstraintServiceInterface
10
{
11
    /**
12
     * @inheritdoc
13
     */
14
    public function hasUniqueConstraint(DomainMessage $domainMessage)
15
    {
16
        return $domainMessage->getPayload() instanceof OrganizerCreatedWithUniqueWebsite ||
17
            $domainMessage->getPayload() instanceof WebsiteUpdated;
18
    }
19
20
    /**
21
     * @inheritdoc
22
     */
23
    public function needsUpdateUniqueConstraint(DomainMessage $domainMessage)
24
    {
25
        return $domainMessage->getPayload() instanceof WebsiteUpdated;
26
    }
27
28
    /**
29
     * @inheritdoc
30
     */
31
    public function getUniqueConstraintValue(DomainMessage $domainMessage)
32
    {
33
        if (!$this->hasUniqueConstraint($domainMessage)) {
34
            throw new \InvalidArgumentException('Given domain message has no unique constraint.');
35
        }
36
37
        /* @var OrganizerCreatedWithUniqueWebsite|WebsiteUpdated $payload */
38
        $payload = $domainMessage->getPayload();
39
        return new StringLiteral((string) $payload->getWebsite());
40
    }
41
}
42