Passed
Push — main ( 3246e1...0b7762 )
by Vasil
03:42
created

Office::toArray()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 7
Code Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 6
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 5
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 7
ccs 6
cts 6
cp 1
crap 1
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace VasilDakov\Speedy\Model;
6
7
use DateTime;
8
use Doctrine\Common\Collections\ArrayCollection;
9
use VasilDakov\Speedy\Exception\InvalidArgumentException;
10
use JMS\Serializer\Annotation as Serializer;
11
use VasilDakov\Speedy\ToArray;
12
13
/**
14
 * Class Office
15
 *
16
 * @Serializer\AccessType("public_method")
17
 * @author Vasil Dakov <[email protected]>
18
 * @copyright 2009-2022 Neutrino.bg
19
 * @version 1.0
20
 * @psalm-suppress MissingConstructor
21
 * @psalm-suppress PropertyNotSetInConstructor
22
 */
23
class Office
24
{
25
    use ToArray;
26
27
    public const TYPE_APT    = 1;
28
    public const TYPE_OFFICE = 2;
29
30
    public const TYPES = [
31
        self::TYPE_APT    => 'APT',
32
        self::TYPE_OFFICE => 'OFFICE'
33
    ];
34
35
    public const CARGO_TYPE_PARCEL = 1;
36
    public const CARGO_TYPE_PALLET = 2;
37
    public const CARGO_TYPE_TIRE   = 3;
38
39
    public const CARGO_TYPES = [
40
        self::CARGO_TYPE_PARCEL => 'PARCEL',
41
        self::CARGO_TYPE_PALLET => 'PALLET',
42
        self::CARGO_TYPE_TIRE   => 'TIRE'
43
    ];
44
45
    /**
46
     * @var int
47
     * @Serializer\Type("int")
48
     */
49
    private int $id;
50
51
    /**
52
     * @var string
53
     * @Serializer\Type("string")
54
     */
55
    private string $name;
56
57
    /**
58
     * @var string
59
     * @Serializer\Type("string")
60
     */
61
    private string $nameEn;
62
63
    /**
64
     * @var int
65
     * @Serializer\Type("int")
66
     */
67
    private int $siteId;
68
69
    /**
70
     * @var Address
71
     * @Serializer\Type("VasilDakov\Speedy\Model\Address")
72
     */
73
    private Address $address;
74
75
    /**
76
     * @var DateTime
77
     * @Serializer\Type("DateTime<'H:s'>")
78
     */
79
    private DateTime $workingTimeFrom;
80
81
    /**
82
     * @var DateTime
83
     * @Serializer\Type("DateTime<'H:s'>")
84
     */
85
    private DateTime $workingTimeTo;
86
87
    /**
88
     * @var DateTime
89
     * @Serializer\Type("DateTime<'H:s'>")
90
     */
91
    private DateTime $workingTimeHalfFrom;
92
93
    /**
94
     * @var DateTime
95
     * @Serializer\Type("DateTime<'H:s'>")
96
     */
97
    private DateTime $workingTimeHalfTo;
98
99
    /**
100
     * @var DateTime
101
     * @Serializer\Type("DateTime<'H:s'>")
102
     */
103
    private DateTime $workingTimeDayOffFrom;
104
105
    /**
106
     * @var DateTime
107
     * @Serializer\Type("DateTime<'H:s'>")
108
     */
109
    private DateTime $workingTimeDayOffTo;
110
111
    /**
112
     * @var DateTime
113
     * @Serializer\Type("DateTime<'H:s'>")
114
     */
115
    private DateTime $sameDayDepartureCutoff;
116
117
    /**
118
     * @var DateTime
119
     * @Serializer\Type("DateTime<'H:s'>")
120
     */
121
    private DateTime $sameDayDepartureCutoffHalf;
122
123
    /**
124
     * @var DateTime
125
     * @Serializer\Type("DateTime<'H:s'>")
126
     */
127
    private DateTime $sameDayDepartureCutoffDayOff;
128
129
    /**
130
     * @var Size
131
     * @Serializer\Type("VasilDakov\Speedy\Model\Size")
132
     */
133
    private Size $maxParcelDimensions;
134
135
    /**
136
     * @var float
137
     * @Serializer\Type("float")
138
     */
139
    private float $maxParcelWeight;
140
141
    /**
142
     * @var string
143
     * @Serializer\Type("string")
144
     */
145
    private string $type;
146
147
    /**
148
     * @var int
149
     * @Serializer\Type("int")
150
     */
151
    private int $nearbyOfficeId;
152
153
    /**
154
     * @var ArrayCollection
155
     * @Serializer\Type("ArrayCollection<VasilDakov\Speedy\Model\OfficeWorkingTimeSchedule>")
156
     */
157
    private ArrayCollection $workingTimeSchedule;
158
159
    /**
160
     * @var bool
161
     * @Serializer\Type("bool")
162
     */
163
    private bool $palletOffice;
164
165
    /**
166
     * @var bool
167
     * @Serializer\Type("bool")
168
     */
169
    private bool $cardPaymentAllowed;
170
171
    /**
172
     * @var bool
173
     * @Serializer\Type("bool")
174
     */
175
    private bool $cashPaymentAllowed;
176
177
    /**
178
     * @var DateTime
179
     * @Serializer\Type("DateTime<'Y-m-d'>")
180
     */
181
    private DateTime $validFrom;
182
183
    /**
184
     * @var DateTime
185
     * @Serializer\Type("DateTime<'Y-m-d'>")
186
     */
187
    private DateTime $validTo;
188
189
    /**
190
     * @var array
191
     * @Serializer\Type("array")
192
     */
193
    private array $cargoTypesAllowed;
194
195
    /**
196
     * @var bool
197
     * @Serializer\Type("bool")
198
     */
199
    private bool $pickUpAllowed;
200
201
    /**
202
     * @var bool
203
     * @Serializer\Type("bool")
204
     */
205
    private bool $dropOffAllowed;
206
207
208
    public function __construct()
209
    {
210
        $this->workingTimeSchedule = new ArrayCollection();
211
    }
212
213
    /**
214
     * @return int
215
     */
216 1
    public function getId(): int
217
    {
218 1
        return $this->id;
219
    }
220
221
    /**
222
     * @param int $id
223
     */
224 3
    public function setId(int $id): void
225
    {
226 3
        $this->id = $id;
227
    }
228
229
    /**
230
     * @return string
231
     */
232 1
    public function getName(): string
233
    {
234 1
        return $this->name;
235
    }
236
237
    /**
238
     * @param string $name
239
     */
240 3
    public function setName(string $name): void
241
    {
242 3
        $this->name = $name;
243
    }
244
245
    /**
246
     * @return string
247
     */
248 1
    public function getNameEn(): string
249
    {
250 1
        return $this->nameEn;
251
    }
252
253
    /**
254
     * @param string $nameEn
255
     */
256 3
    public function setNameEn(string $nameEn): void
257
    {
258 3
        $this->nameEn = $nameEn;
259
    }
260
261
    /**
262
     * @return int
263
     */
264 1
    public function getSiteId(): int
265
    {
266 1
        return $this->siteId;
267
    }
268
269
    /**
270
     * @param int $siteId
271
     */
272 3
    public function setSiteId(int $siteId): void
273
    {
274 3
        $this->siteId = $siteId;
275
    }
276
277
    /**
278
     * @return Address
279
     */
280 1
    public function getAddress(): Address
281
    {
282 1
        return $this->address;
283
    }
284
285
    /**
286
     * @param Address $address
287
     */
288 3
    public function setAddress(Address $address): void
289
    {
290 3
        $this->address = $address;
291
    }
292
293
    /**
294
     * @return DateTime
295
     */
296 1
    public function getWorkingTimeFrom(): DateTime
297
    {
298 1
        return $this->workingTimeFrom;
299
    }
300
301
    /**
302
     * @param DateTime $workingTimeFrom
303
     */
304 3
    public function setWorkingTimeFrom(DateTime $workingTimeFrom): void
305
    {
306 3
        $this->workingTimeFrom = $workingTimeFrom;
307
    }
308
309
    /**
310
     * @return DateTime
311
     */
312 1
    public function getWorkingTimeTo(): DateTime
313
    {
314 1
        return $this->workingTimeTo;
315
    }
316
317
    /**
318
     * @param DateTime $workingTimeTo
319
     */
320 3
    public function setWorkingTimeTo(DateTime $workingTimeTo): void
321
    {
322 3
        $this->workingTimeTo = $workingTimeTo;
323
    }
324
325
    /**
326
     * @return DateTime
327
     */
328 1
    public function getWorkingTimeHalfFrom(): DateTime
329
    {
330 1
        return $this->workingTimeHalfFrom;
331
    }
332
333
    /**
334
     * @param DateTime $workingTimeHalfFrom
335
     */
336 3
    public function setWorkingTimeHalfFrom(DateTime $workingTimeHalfFrom): void
337
    {
338 3
        $this->workingTimeHalfFrom = $workingTimeHalfFrom;
339
    }
340
341
    /**
342
     * @return DateTime
343
     */
344 1
    public function getWorkingTimeHalfTo(): DateTime
345
    {
346 1
        return $this->workingTimeHalfTo;
347
    }
348
349
    /**
350
     * @param DateTime $workingTimeHalfTo
351
     */
352 3
    public function setWorkingTimeHalfTo(DateTime $workingTimeHalfTo): void
353
    {
354 3
        $this->workingTimeHalfTo = $workingTimeHalfTo;
355
    }
356
357
    /**
358
     * @return DateTime
359
     */
360 1
    public function getWorkingTimeDayOffFrom(): DateTime
361
    {
362 1
        return $this->workingTimeDayOffFrom;
363
    }
364
365
    /**
366
     * @param DateTime $workingTimeDayOffFrom
367
     */
368 3
    public function setWorkingTimeDayOffFrom(DateTime $workingTimeDayOffFrom): void
369
    {
370 3
        $this->workingTimeDayOffFrom = $workingTimeDayOffFrom;
371
    }
372
373
    /**
374
     * @return DateTime
375
     */
376 1
    public function getWorkingTimeDayOffTo(): DateTime
377
    {
378 1
        return $this->workingTimeDayOffTo;
379
    }
380
381
    /**
382
     * @param DateTime $workingTimeDayOffTo
383
     */
384 3
    public function setWorkingTimeDayOffTo(DateTime $workingTimeDayOffTo): void
385
    {
386 3
        $this->workingTimeDayOffTo = $workingTimeDayOffTo;
387
    }
388
389
    /**
390
     * @return DateTime
391
     */
392 1
    public function getSameDayDepartureCutoff(): DateTime
393
    {
394 1
        return $this->sameDayDepartureCutoff;
395
    }
396
397
    /**
398
     * @param DateTime $sameDayDepartureCutoff
399
     */
400 3
    public function setSameDayDepartureCutoff(DateTime $sameDayDepartureCutoff): void
401
    {
402 3
        $this->sameDayDepartureCutoff = $sameDayDepartureCutoff;
403
    }
404
405
    /**
406
     * @return DateTime
407
     */
408 1
    public function getSameDayDepartureCutoffHalf(): DateTime
409
    {
410 1
        return $this->sameDayDepartureCutoffHalf;
411
    }
412
413
    /**
414
     * @param DateTime $sameDayDepartureCutoffHalf
415
     */
416 3
    public function setSameDayDepartureCutoffHalf(DateTime $sameDayDepartureCutoffHalf): void
417
    {
418 3
        $this->sameDayDepartureCutoffHalf = $sameDayDepartureCutoffHalf;
419
    }
420
421
    /**
422
     * @return DateTime
423
     */
424 1
    public function getSameDayDepartureCutoffDayOff(): DateTime
425
    {
426 1
        return $this->sameDayDepartureCutoffDayOff;
427
    }
428
429
    /**
430
     * @param DateTime $sameDayDepartureCutoffDayOff
431
     */
432 3
    public function setSameDayDepartureCutoffDayOff(DateTime $sameDayDepartureCutoffDayOff): void
433
    {
434 3
        $this->sameDayDepartureCutoffDayOff = $sameDayDepartureCutoffDayOff;
435
    }
436
437
    /**
438
     * @return Size
439
     */
440 1
    public function getMaxParcelDimensions(): Size
441
    {
442 1
        return $this->maxParcelDimensions;
443
    }
444
445
    /**
446
     * @param Size $maxParcelDimensions
447
     */
448 3
    public function setMaxParcelDimensions(Size $maxParcelDimensions): void
449
    {
450 3
        $this->maxParcelDimensions = $maxParcelDimensions;
451
    }
452
453
    /**
454
     * @return float
455
     */
456 1
    public function getMaxParcelWeight(): float
457
    {
458 1
        return $this->maxParcelWeight;
459
    }
460
461
    /**
462
     * @param float $maxParcelWeight
463
     */
464 3
    public function setMaxParcelWeight(float $maxParcelWeight): void
465
    {
466 3
        $this->maxParcelWeight = $maxParcelWeight;
467
    }
468
469
    /**
470
     * @return string
471
     */
472 1
    public function getType(): string
473
    {
474 1
        return $this->type;
475
    }
476
477
    /**
478
     * @param string $type
479
     */
480 3
    public function setType(string $type): void
481
    {
482 3
        $this->type = $type;
483
    }
484
485
    /**
486
     * @return int
487
     */
488 1
    public function getNearbyOfficeId(): int
489
    {
490 1
        return $this->nearbyOfficeId;
491
    }
492
493
    /**
494
     * @param int $nearbyOfficeId
495
     */
496 3
    public function setNearbyOfficeId(int $nearbyOfficeId): void
497
    {
498 3
        $this->nearbyOfficeId = $nearbyOfficeId;
499
    }
500
501
    /**
502
     * @return ArrayCollection
503
     */
504 1
    public function getWorkingTimeSchedule(): ArrayCollection
505
    {
506 1
        return $this->workingTimeSchedule;
507
    }
508
509
    /**
510
     * @param ArrayCollection $workingTimeSchedule
511
     */
512 3
    public function setWorkingTimeSchedule(ArrayCollection $workingTimeSchedule): void
513
    {
514 3
        $this->workingTimeSchedule = $workingTimeSchedule;
515
    }
516
517
    /**
518
     * @return bool
519
     */
520 1
    public function isPalletOffice(): bool
521
    {
522 1
        return $this->palletOffice;
523
    }
524
525
    /**
526
     * @param bool $palletOffice
527
     */
528 3
    public function setPalletOffice(bool $palletOffice): void
529
    {
530 3
        $this->palletOffice = $palletOffice;
531
    }
532
533
    /**
534
     * @return bool
535
     */
536 1
    public function isCardPaymentAllowed(): bool
537
    {
538 1
        return $this->cardPaymentAllowed;
539
    }
540
541
    /**
542
     * @param bool $cardPaymentAllowed
543
     */
544 3
    public function setCardPaymentAllowed(bool $cardPaymentAllowed): void
545
    {
546 3
        $this->cardPaymentAllowed = $cardPaymentAllowed;
547
    }
548
549
    /**
550
     * @return bool
551
     */
552 1
    public function isCashPaymentAllowed(): bool
553
    {
554 1
        return $this->cashPaymentAllowed;
555
    }
556
557
    /**
558
     * @param bool $cashPaymentAllowed
559
     */
560 3
    public function setCashPaymentAllowed(bool $cashPaymentAllowed): void
561
    {
562 3
        $this->cashPaymentAllowed = $cashPaymentAllowed;
563
    }
564
565
    /**
566
     * @return DateTime
567
     */
568 1
    public function getValidFrom(): DateTime
569
    {
570 1
        return $this->validFrom;
571
    }
572
573
    /**
574
     * @param DateTime $validFrom
575
     */
576 3
    public function setValidFrom(DateTime $validFrom): void
577
    {
578 3
        $this->validFrom = $validFrom;
579
    }
580
581
    /**
582
     * @return DateTime
583
     */
584 1
    public function getValidTo(): DateTime
585
    {
586 1
        return $this->validTo;
587
    }
588
589
    /**
590
     * @param DateTime $validTo
591
     */
592 3
    public function setValidTo(DateTime $validTo): void
593
    {
594 3
        $this->validTo = $validTo;
595
    }
596
597
    /**
598
     * @return array
599
     */
600 1
    public function getCargoTypesAllowed(): array
601
    {
602 1
        return $this->cargoTypesAllowed;
603
    }
604
605
    /**
606
     * @param array $cargoTypesAllowed
607
     */
608 3
    public function setCargoTypesAllowed(array $cargoTypesAllowed): void
609
    {
610 3
        $this->cargoTypesAllowed = $cargoTypesAllowed;
611
    }
612
613
    /**
614
     * @return bool
615
     */
616 1
    public function isPickUpAllowed(): bool
617
    {
618 1
        return $this->pickUpAllowed;
619
    }
620
621
    /**
622
     * @param bool $pickUpAllowed
623
     */
624 3
    public function setPickUpAllowed(bool $pickUpAllowed): void
625
    {
626 3
        $this->pickUpAllowed = $pickUpAllowed;
627
    }
628
629
    /**
630
     * @return bool
631
     */
632 1
    public function isDropOffAllowed(): bool
633
    {
634 1
        return $this->dropOffAllowed;
635
    }
636
637
    /**
638
     * @param bool $dropOffAllowed
639
     */
640 3
    public function setDropOffAllowed(bool $dropOffAllowed): void
641
    {
642 3
        $this->dropOffAllowed = $dropOffAllowed;
643
    }
644
}
645