Completed
Pull Request — master (#480)
by Jonas
02:13
created

EventStatus::getEventStatusReasons()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 4
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php declare(strict_types=1);
2
3
namespace CultuurNet\UDB3\Event\ValueObjects;
4
5
use Broadway\Serializer\SerializableInterface;
6
use CultuurNet\UDB3\Model\ValueObject\Translation\Language;
7
8
final class EventStatus implements SerializableInterface
9
{
10
    /**
11
     * @var EventStatusType
12
     */
13
    private $eventStatusType;
14
15
    /**
16
     * @var EventStatusReason[]
17
     */
18
    private $eventStatusReasons;
19
20
    public function __construct(EventStatusType $eventStatusType, array $eventStatusReasons)
21
    {
22
        // TODO: Make sure language key is unique.
23
        $this->eventStatusType = $eventStatusType;
24
        $this->eventStatusReasons = $eventStatusReasons;
25
    }
26
27
    public function getEventStatusType(): EventStatusType
28
    {
29
        return $this->eventStatusType;
30
    }
31
32
    public function getEventStatusReasons(): array
33
    {
34
        return $this->eventStatusReasons;
35
    }
36
37
    public static function deserialize(array $data): EventStatus
38
    {
39
        $eventStatusReasons = [];
40
        foreach ($data['eventStatusReason'] as $language => $eventStatusReason) {
41
            $eventStatusReasons[] = new EventStatusReason(
42
                new Language($language),
43
                $eventStatusReason
44
            );
45
        }
46
47
        return new EventStatus(
48
            EventStatusType::fromNative($data['eventStatus']),
49
            $eventStatusReasons
50
        );
51
    }
52
53
    public function serialize(): array
54
    {
55
        $eventStatusReasons = [];
56
        foreach ($this->eventStatusReasons as $statusReason) {
57
            $eventStatusReasons[$statusReason->getLanguage()->getCode()] = $statusReason->getReason();
58
        }
59
60
        return [
61
            'eventStatus' => $this->eventStatusType->toNative(),
62
            'eventStatusReason' => $eventStatusReasons,
63
        ];
64
    }
65
}
66