Completed
Push — master ( 5decb7...aee104 )
by Thibaud
14:37 queued 11:26
created

Basket   A

Complexity

Total Complexity 28

Size/Duplication

Total Lines 229
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Test Coverage

Coverage 77.55%

Importance

Changes 10
Bugs 0 Features 0
Metric Value
wmc 28
c 10
b 0
f 0
lcom 1
cbo 3
dl 0
loc 229
ccs 38
cts 49
cp 0.7755
rs 10

19 Methods

Rating   Name   Duplication   Size   Complexity  
A fromList() 0 10 2
A fromValue() 0 4 1
A __construct() 0 4 1
A getRawData() 0 4 1
A getId() 0 4 1
A getName() 0 4 1
A getDescription() 0 4 1
A getPusher() 0 4 2
A isUnread() 0 4 1
A getCreatedOn() 0 4 2
A getUpdatedOn() 0 4 2
A isValidationBasket() 0 4 1
A getValidationUsers() 0 10 3
A getExpiresOn() 0 4 2
A getValidationInfo() 0 4 1
A isValidationConfirmed() 0 4 1
A isValidationInitiator() 0 4 1
A getValidationInitiatorUser() 0 6 2
A getOwner() 0 4 2
1
<?php
2
3
/*
4
 * This file is part of Phraseanet SDK.
5
 *
6
 * (c) Alchemy <[email protected]>
7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
12
namespace PhraseanetSDK\Entity;
13
14
use Doctrine\Common\Collections\ArrayCollection;
15
16
class Basket
17
{
18
19 2
    public static function fromList(array $values)
20
    {
21 2
        $baskets = array();
22
23 2
        foreach ($values as $value) {
24 2
            $baskets[$value->basket_id] = self::fromValue($value);
25 2
        }
26
27 2
        return $baskets;
28
    }
29
30 2
    public static function fromValue(\stdClass $value)
31
    {
32 2
        return new self($value);
33
    }
34
35
    /**
36
     * @var \stdClass
37
     */
38
    protected $source;
39
40
    /**
41
     * @var User|null
42
     */
43
    protected $owner;
44
45
    /**
46
     * @var User|null
47
     */
48
    protected $pusher;
49
50
    /**
51
     * @var \DateTime
52
     */
53
    protected $createdOn;
54
55
    /**
56
     * @var \DateTime
57
     */
58
    protected $updatedOn;
59
60
    /**
61
     * ArrayCollection|User[]
62
     */
63
    protected $validationUsers;
64
65
    /**
66
     * @var \DateTime
67
     */
68
    protected $expiresOn;
69
70
    /**
71
     * @var User|null
72
     */
73
    protected $validationInitiatorUser;
74
75 2
    public function __construct(\stdClass $source)
76
    {
77 2
        $this->source = $source;
78 2
    }
79
80
    /**
81
     * @return \stdClass
82
     */
83
    public function getRawData()
84
    {
85
        return $this->source;
86
    }
87
88
    /**
89
     * The basket id
90
     *
91
     * @return integer
92
     */
93 2
    public function getId()
94
    {
95 2
        return $this->source->basket_id;
96
    }
97
98
    /**
99
     * The basket name
100
     *
101
     * @return string
102
     */
103 2
    public function getName()
104
    {
105 2
        return $this->source->name;
106
    }
107
108
    /**
109
     * The basket description
110
     *
111
     * @return string
112
     */
113 2
    public function getDescription()
114
    {
115 2
        return $this->source->description;
116
    }
117
118
    /**
119
     * The user who created the basket when the current basket
120
     * is a validation basket
121
     *
122
     * @return integer|null
123
     */
124
    public function getPusher()
125
    {
126
        return $this->pusher ?: $this->pusher = User::fromValue($this->source->pusher);
127
    }
128
129
    /**
130
     * Tell whether the basket has been read or not
131
     *
132
     * @return Boolean
133
     */
134 2
    public function isUnread()
135
    {
136 2
        return $this->source->unread;
137
    }
138
139
    /**
140
     * Creation date
141
     *
142
     * @return \DateTime
143
     */
144 2
    public function getCreatedOn()
145
    {
146 2
        return $this->createdOn ?: $this->createdOn = new \DateTime($this->source->created_on);
147
    }
148
149
    /**
150
     * Last update date
151
     *
152
     * @return \DateTime
153
     */
154 2
    public function getUpdatedOn()
155
    {
156 2
        return $this->updatedOn ?: $this->updatedOn = new \DateTime($this->source->updated_on);
157
    }
158
159
    /**
160
     * Tell whether the basket is a validation basket
161
     *
162
     * @return Boolean
163
     */
164 2
    public function isValidationBasket()
165
    {
166 2
        return $this->source->validation_basket;
167
    }
168
169
    /**
170
     * Return a collection of PhraseanetSDK\entity\BasketValidationParticipant object
171
     * if the basket is a validation basket otherwise it returns null
172
     *
173
     * @return ArrayCollection|null
174
     */
175 2
    public function getValidationUsers()
176
    {
177 2
        if (! $this->isValidationBasket()) {
178
            return null;
179
        }
180
181 2
        return $this->validationUsers ?: $this->validationUsers = new ArrayCollection(
182 2
            BasketValidationParticipant::fromList($this->source->validation_users)
183 2
        );
184
    }
185
186
    /**
187
     * The expiration validation date, if the basket is a validation basket
188
     *
189
     * @return \DateTime|null
190
     */
191 2
    public function getExpiresOn()
192
    {
193 2
        return $this->expiresOn ?: $this->expiresOn = new \DateTime($this->source->expires_on);
194
    }
195
196
    /**
197
     * Get some information about the validation, if the basket is a validation
198
     * basket
199
     *
200
     * @return string|null
201
     */
202 2
    public function getValidationInfo()
203
    {
204 2
        return $this->source->validation_infos;
205
    }
206
207
    /**
208
     * Tell whether the validation is confirmed
209
     *
210
     * @return bool
211
     */
212 2
    public function isValidationConfirmed()
213
    {
214 2
        return (bool) $this->source->validation_confirmed;
215
    }
216
217
    /**
218
     * Tell whether the current authenticated user initiates the validation process
219
     *
220
     * @return bool
221
     */
222 2
    public function isValidationInitiator()
223
    {
224 2
        return (bool) $this->source->validation_initiator;
225
    }
226
227
    /**
228
     * @return User|null
229
     */
230
    public function getValidationInitiatorUser()
231
    {
232
        return $this->validationInitiatorUser ?: $this->validationInitiatorUser = User::fromValue(
233
            $this->source->validation_initiator_user
234
        );
235
    }
236
237
    /**
238
     * @return User
239
     */
240
    public function getOwner()
241
    {
242
        return $this->owner ?: $this->owner = User::fromValue($this->source->owner);
243
    }
244
}
245