Passed
Pull Request — main (#10)
by Artem
02:23
created

ContentHistory::getCreatedDate()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
c 1
b 0
f 0
nc 1
nop 0
dl 0
loc 3
rs 10
1
<?php
2
declare(strict_types=1);
3
4
namespace CloudPlayDev\ConfluenceClient\Entity;
5
6
use DateTimeImmutable;
7
use DateTimeInterface;
8
use Webmozart\Assert\Assert;
9
10
class ContentHistory implements Hydratable
11
{
12
13
14
    private DateTimeInterface $createdDate;
15
    private DateTimeInterface $updatedDate;
16
    private bool $isLatest = false;
17
    private User $createdBy;
18
    private User $updatedBy;
19
20
    private int $lastVersionNumber;
21
22
    public static function load(array $data): ContentHistory
23
    {
24
        $contentHistory = new self;
25
        Assert::keyExists($data, 'createdDate');
26
        Assert::keyExists($data, 'createdBy');
27
        Assert::keyExists($data, 'lastUpdated');
28
        Assert::isArray($data['createdBy']);
29
        Assert::isArray($data['lastUpdated']);
30
        Assert::boolean($data['latest']);
31
32
        Assert::keyExists($data['lastUpdated'], 'by');
33
        Assert::isArray($data['lastUpdated']['by']);
34
35
        if(isset($data['latest'])) {
36
            Assert::boolean($data['latest']);
37
            $contentHistory->setLatest($data['latest']);
38
        }
39
40
        $contentHistory->setCreatedDate(DateTimeImmutable::createFromFormat('Y-m-d\TH:i:s.vZ', $data['createdDate']));
41
        $contentHistory->setCreatedBy(User::load($data['createdBy']));
42
        $contentHistory->setUpdatedBy(User::load($data['lastUpdated']['by']));
43
44
        $contentHistory->setUpdatedDate(DateTimeImmutable::createFromFormat('Y-m-d\TH:i:s.vZ', $data['lastUpdated']['when']));
45
46
        $contentHistory->setLastVersionNumber($data['lastUpdated']['number']);
47
48
        return $contentHistory;
49
    }
50
51
    private function setLatest(bool $latest): ContentHistory
52
    {
53
        $this->isLatest = $latest;
54
        return $this;
55
    }
56
57
    private function setCreatedDate(DateTimeInterface $createFromFormat): ContentHistory
58
    {
59
        $this->createdDate = $createFromFormat;
60
        return $this;
61
    }
62
63
    private function setCreatedBy(User $user): ContentHistory
64
    {
65
        $this->createdBy = $user;
66
        return $this;
67
    }
68
69
    private function setUpdatedBy(User $user): ContentHistory
70
    {
71
        $this->updatedBy = $user;
72
        return $this;
73
    }
74
75
    public function setUpdatedDate(DateTimeInterface $updatedDate): ContentHistory
76
    {
77
        $this->updatedDate = $updatedDate;
78
        return $this;
79
    }
80
81
    public function getUpdatedDate(): DateTimeInterface
82
    {
83
        return $this->updatedDate;
84
    }
85
86
    public function getCreatedDate(): DateTimeInterface
87
    {
88
        return $this->createdDate;
89
    }
90
91
    public function isLatest(): bool
92
    {
93
        return $this->isLatest;
94
    }
95
96
    public function getCreatedBy(): User
97
    {
98
        return $this->createdBy;
99
    }
100
101
    public function getUpdatedBy(): User
102
    {
103
        return $this->updatedBy;
104
    }
105
106
    public function getLastVersionNumber(): int
107
    {
108
        return $this->lastVersionNumber;
109
    }
110
111
    public function setLastVersionNumber(int $lastVersionNumber): void
112
    {
113
        $this->lastVersionNumber = $lastVersionNumber;
114
    }
115
116
117
}
118