Created   A
last analyzed

Complexity

Total Complexity 5

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 5

Importance

Changes 0
Metric Value
wmc 5
lcom 1
cbo 5
dl 0
loc 59
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 11 1
A getVisibility() 0 4 1
A getPrivacy() 0 4 1
A deserialize() 0 9 1
A serialize() 0 7 1
1
<?php
2
3
namespace CultuurNet\UDB3\Label\Events;
4
5
use CultuurNet\UDB3\Label\ValueObjects\LabelName;
6
use CultuurNet\UDB3\Label\ValueObjects\Privacy;
7
use CultuurNet\UDB3\Label\ValueObjects\Visibility;
8
use ValueObjects\Identity\UUID;
9
10
class Created extends AbstractEvent
11
{
12
    public const VISIBILITY = 'visibility';
13
    public const PRIVACY = 'privacy';
14
15
    /**
16
     * @var Visibility
17
     */
18
    private $visibility;
19
20
    /**
21
     * @var Privacy
22
     */
23
    private $privacy;
24
25
    public function __construct(
26
        UUID $uuid,
27
        LabelName $name,
28
        Visibility $visibility,
29
        Privacy $privacy
30
    ) {
31
        parent::__construct($uuid, $name);
32
33
        $this->visibility = $visibility;
34
        $this->privacy = $privacy;
35
    }
36
37
    public function getVisibility(): Visibility
38
    {
39
        return $this->visibility;
40
    }
41
42
    public function getPrivacy(): Privacy
43
    {
44
        return $this->privacy;
45
    }
46
47
    /**
48
     * @param array $data
49
     * @return Created
50
     */
51
    public static function deserialize(array $data)
52
    {
53
        return new self(
54
            new UUID($data[self::UUID]),
55
            new LabelName($data[self::NAME]),
56
            Visibility::fromNative($data[self::VISIBILITY]),
57
            Privacy::fromNative($data[self::PRIVACY])
58
        );
59
    }
60
61
    public function serialize(): array
62
    {
63
        return parent::serialize() + [
64
            self::VISIBILITY => $this->getVisibility()->toNative(),
65
            self::PRIVACY => $this->getPrivacy()->toNative(),
66
        ];
67
    }
68
}
69