Passed
Push — master ( 3b506f...fcfb7c )
by Omid
02:05 queued 11s
created

Video::setUploadDate()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 6
rs 10
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace MovingImage\Client\VMPro\Entity;
6
7
use DateTime;
8
use JMS\Serializer\Annotation\Type;
9
use JMS\Serializer\Annotation\SerializedName;
10
use MovingImage\Meta\Interfaces\VideoInterface;
11
12
class Video implements VideoInterface
13
{
14
    /**
15
     * @Type("string")
16
     */
17
    private $id;
18
19
    /**
20
     * @Type("string")
21
     */
22
    private $title;
23
24
    /**
25
     * @Type("string")
26
     */
27
    private $description;
28
29
    /**
30
     * @Type("string")
31
     */
32
    private $thumbnail;
33
34
    /**
35
     * @Type("integer")
36
     */
37
    private $length;
38
39
    /**
40
     * @Type("integer")
41
     * @SerializedName("createdDate")
42
     */
43
    private $createdDate;
44
45
    /**
46
     * @Type("integer")
47
     * @SerializedName("modifiedDate")
48
     */
49
    private $modifiedDate;
50
51
    /**
52
     * @Type("integer")
53
     * @SerializedName("uploadDate")
54
     */
55
    private $uploadDate;
56
57
    /**
58
     * @Type("integer")
59
     */
60
    private $generation;
61
62
    /**
63
     * @Type("integer")
64
     */
65
    private $plays;
66
67
    /**
68
     * @Type("integer")
69
     */
70
    private $views;
71
72
    /**
73
     * @Type("boolean")
74
     * @SerializedName("allFormatsAvailable")
75
     */
76
    private $allFormatsAvailable;
77
78
    /**
79
     * @TODO replace it with array collection
80
     *
81
     * @Type("array")
82
     * @SerializedName("customMetadata")
83
     */
84
    private $customMetadata;
85
86
    /**
87
     * @TODO replace it with array collection
88
     *
89
     * @Type("array")
90
     */
91
    private $keywords;
92
93
    /**
94
     * @TODO replace it with array collection
95
     *
96
     * @Type("array")
97
     */
98
    private $stills;
99
100
    /**
101
     * @Type("boolean")
102
     */
103
    private $published;
104
105
    /**
106
     * @Type("array")
107
     */
108
    private $channels;
109
110
    /**
111
     * @Type("string")
112
     * @SerializedName("uploadFileName")
113
     */
114
    private $uploadFileName;
115
116
    /**
117
     * @Type("boolean")
118
     */
119
    private $downloadable;
120
121
    public function setId(string $id): self
122
    {
123
        $this->id = $id;
124
125
        return $this;
126
    }
127
128
    public function getId(): string
129
    {
130
        return $this->id;
131
    }
132
133
    public function getTitle(): ?string
134
    {
135
        return $this->title;
136
    }
137
138
    public function setTitle(string $title): self
139
    {
140
        $this->title = $title;
141
142
        return $this;
143
    }
144
145
    public function getDescription(): ?string
146
    {
147
        return $this->description;
148
    }
149
150
    public function setDescription(string $description): self
151
    {
152
        $this->description = $description;
153
154
        return $this;
155
    }
156
157
    public function getThumbnail(): ?string
158
    {
159
        return $this->thumbnail;
160
    }
161
162
    public function setThumbnail(string $thumbnail): self
163
    {
164
        $this->thumbnail = $thumbnail;
165
166
        return $this;
167
    }
168
169
    public function getLength(): ?int
170
    {
171
        return $this->length;
172
    }
173
174
    public function setLength(int $length): self
175
    {
176
        $this->length = $length;
177
178
        return $this;
179
    }
180
181
    public function getCreatedDate(): DateTime
182
    {
183
        $date = new DateTime();
184
        $date->setTimestamp(intval($this->createdDate / 1000));
185
186
        return $date;
187
    }
188
189
    public function setCreatedDate(DateTime $createdDate): Video
190
    {
191
        $this->createdDate = $createdDate->getTimestamp() * 1000;
192
193
        return $this;
194
    }
195
196
    public function getModifiedDate(): ?DateTime
197
    {
198
        $date = new DateTime();
199
        $date->setTimestamp(intval($this->modifiedDate / 1000));
200
201
        return $date;
202
    }
203
204
    public function setModifiedDate(DateTime $modifiedDate): self
205
    {
206
        $this->modifiedDate = $modifiedDate->getTimestamp() * 1000;
207
208
        return $this;
209
    }
210
211
    public function getUploadDate(): ?DateTime
212
    {
213
        $date = new DateTime();
214
        $date->setTimestamp(intval($this->uploadDate / 1000));
215
216
        return $date;
217
    }
218
219
    public function setUploadDate(DateTime $uploadDate): self
220
    {
221
        $this->uploadDate = $uploadDate->getTimestamp() * 1000;
222
223
        return $this;
224
    }
225
226
    public function getGeneration(): ?int
227
    {
228
        return $this->generation;
229
    }
230
231
    public function setGeneration(int $generation): self
232
    {
233
        $this->generation = $generation;
234
235
        return $this;
236
    }
237
238
    public function getPlays(): int
239
    {
240
        if (!$this->plays) {
241
            return 0;
242
        }
243
244
        return $this->plays;
245
    }
246
247
    public function setPlays(int $plays): self
248
    {
249
        $this->plays = $plays;
250
251
        return $this;
252
    }
253
254
    public function getViews(): int
255
    {
256
        if (!$this->views) {
257
            return 0;
258
        }
259
260
        return $this->views;
261
    }
262
263
    public function setViews(int $views): self
264
    {
265
        $this->views = $views;
266
267
        return $this;
268
    }
269
270
    public function areAllFormatsAvailable(): bool
271
    {
272
        if (!$this->allFormatsAvailable) {
273
            return false;
274
        }
275
276
        return $this->allFormatsAvailable;
277
    }
278
279
    public function setAllFormatsAvailable(bool $allFormatsAvailable): self
280
    {
281
        $this->allFormatsAvailable = $allFormatsAvailable;
282
283
        return $this;
284
    }
285
286
    public function getCustomMetadata(): array
287
    {
288
        if (!$this->customMetadata) {
289
            return [];
290
        }
291
292
        return $this->customMetadata;
293
    }
294
295
    public function setCustomMetadata(array $customMetadata): self
296
    {
297
        $this->customMetadata = $customMetadata;
298
299
        return $this;
300
    }
301
302
    public function getKeywords(): array
303
    {
304
        if (!$this->keywords) {
305
            return [];
306
        }
307
308
        return $this->keywords;
309
    }
310
311
    public function setKeywords(array $keywords): self
312
    {
313
        $this->keywords = $keywords;
314
315
        return $this;
316
    }
317
318
    public function getStills(): array
319
    {
320
        if (!$this->stills) {
321
            return [];
322
        }
323
324
        //sorting preview's images from smallest to biggest
325
        usort($this->stills, function (array $item1, array $item2) {
326
            if (isset($item1['dimension']['height'], $item2['dimension']['height']) && $item1['dimension']['height'] != $item2['dimension']['height']) {
327
                return ($item1['dimension']['height'] > $item2['dimension']['height']) ? 1 : -1;
328
            }
329
330
            return 0;
331
        });
332
333
        return $this->stills;
334
    }
335
336
    public function setStills(array $stills): self
337
    {
338
        $this->stills = $stills;
339
340
        return $this;
341
    }
342
343
    public function setPublished(bool $published): self
344
    {
345
        $this->published = $published;
346
347
        return $this;
348
    }
349
350
    public function isPublished(): bool
351
    {
352
        if (!$this->published) {
353
            return false;
354
        }
355
356
        return $this->published;
357
    }
358
359
    public function setDownloadable(bool $downloadable): self
360
    {
361
        $this->downloadable = $downloadable;
362
363
        return $this;
364
    }
365
366
    public function isDownloadable(): bool
367
    {
368
        if (!$this->downloadable) {
369
            return false;
370
        }
371
372
        return $this->downloadable;
373
    }
374
375
    public function getStatus(): int
376
    {
377
        return $this->isPublished()
378
            ? VideoInterface::STATUS_PUBLISHED
379
            : VideoInterface::STATUS_NOT_PUBLISHED;
380
    }
381
382
    public function getChannels(): array
383
    {
384
        if (!$this->channels) {
385
            return [];
386
        }
387
388
389
        return $this->channels;
390
    }
391
392
    public function setChannels(array $channels): self
393
    {
394
        $this->channels = $channels;
395
396
        return $this;
397
    }
398
399
    public function getUploadFileName(): string
400
    {
401
        if (!$this->uploadFileName) {
402
            return '';
403
        }
404
405
        return $this->uploadFileName;
406
    }
407
408
    public function setUploadFileName(string $uploadFileName): self
409
    {
410
        $this->uploadFileName = $uploadFileName;
411
412
        return $this;
413
    }
414
}
415