Intake::__construct()   A
last analyzed

Complexity

Conditions 3
Paths 1

Size

Total Lines 27
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 19
c 1
b 0
f 0
dl 0
loc 27
ccs 0
cts 24
cp 0
rs 9.6333
cc 3
nc 1
nop 1
crap 12
1
<?php
2
3
declare(strict_types=1);
4
5
namespace CdekSDK2\BaseTypes;
6
7
use CdekSDK2\Dto\Statuses;
8
use JMS\Serializer\Annotation\SkipWhenEmpty;
9
use JMS\Serializer\Annotation\Type;
10
11
/**
12
 * Class Intake
13
 * @package CdekSDK2\BaseTypes
14
 */
15
class Intake extends Base
16
{
17
    /**
18
     * Идентификатор заявки
19
     * @Type("string")
20
     * @var string
21
     */
22
    public $uuid;
23
24
    /**
25
     * Идентификатор заказа
26
     * @Type("string")
27
     * @var string
28
     */
29
    public $order_uuid;
30
31
    /**
32
     * Номер заказа СДЭК
33
     * @Type("int")
34
     * @var int
35
     */
36
    public $cdek_number;
37
38
    /**
39
     * Дата ожидания курьера (дата в формате ISO 8601: YYYY-MM-DD)
40
     * @Type("string")
41
     * @var string
42
     */
43
    public $intake_date;
44
45
    /**
46
     * Время начала ожидания курьера (время в формате ISO 8601: hh:mm)
47
     * @Type("string")
48
     * @var string
49
     */
50
    public $intake_time_from;
51
52
    /**
53
     * Время окончания ожидания курьера (время в формате ISO 8601: hh:mm)
54
     * @Type("string")
55
     * @var string
56
     */
57
    public $intake_time_to;
58
59
    /**
60
     * Время начала обеда, должно входить в диапазон [intake_time_to;intake_time_to]
61
     * @Type("string")
62
     * @var string
63
     */
64
    public $lunch_time_from;
65
66
    /**
67
     * Время окончания обеда, должно входить в диапазон [intake_time_to;intake_time_to]
68
     * @Type("string")
69
     * @var string
70
     */
71
    public $lunch_time_to;
72
73
    /**
74
     * Описание груза
75
     * @Type("string")
76
     * @var string
77
     */
78
    public $name;
79
80
    /**
81
     * Общий вес (в граммах)
82
     * @Type("int")
83
     * @var int
84
     */
85
    public $weight;
86
87
    /**
88
     * Габариты упаковки. Длина (в сантиметрах)
89
     * @Type("int")
90
     * @var int
91
     */
92
    public $length;
93
94
    /**
95
     * Габариты упаковки. Ширина (в сантиметрах)
96
     * @Type("int")
97
     * @var int
98
     */
99
    public $width;
100
101
    /**
102
     * Габариты упаковки. Высота (в сантиметрах)
103
     * @Type("int")
104
     * @var int
105
     */
106
    public $height;
107
108
    /**
109
     * Комментарий к заявке для курьера
110
     * @Type("string")
111
     * @var string
112
     */
113
    public $comment;
114
115
    /**
116
     * Отправитель
117
     * @Type("CdekSDK2\BaseTypes\Contact")
118
     * @var Contact
119
     */
120
    public $sender;
121
122
    /**
123
     * Адрес отправителя (забора)
124
     * @Type("CdekSDK2\BaseTypes\Location")
125
     * @var Location
126
     */
127
    public $from_location;
128
129
    /**
130
     * Необходим прозвон отправителя
131
     * @Type("bool")
132
     * @var bool
133
     */
134
    public $need_call = false;
135
136
    /**
137
     * @SkipWhenEmpty()
138
     * @Type("array<CdekSDK2\Dto\Statuses>")
139
     * @var Statuses[]
140
     */
141
    public $statuses;
142
143
    /**
144
     * Intake constructor.
145
     * @param array $param
146
     */
147
    public function __construct(array $param = [])
148
    {
149
        parent::__construct($param);
150
        $this->rules = [
151
            'intake_date' => 'required|date:Y-m-d',
152
            'intake_time_from' => 'required|date:H:i',
153
            'intake_time_to' => 'required|date:H:i',
154
            'weight' => 'numeric',
155
            'sender' => [
156
                '',
157
                function ($value) {
158
                    if ($value instanceof Contact) {
159
                        return $value->validate();
160
                    }
161
                }
162
            ],
163
            'from_location' => [
164
                '',
165
                function ($value) {
166
                    if ($value instanceof Location) {
167
                        return $value->validate();
168
                    }
169
                }
170
            ],
171
            'length' => 'numeric',
172
            'width' => 'numeric',
173
            'height' => 'numeric',
174
        ];
175
    }
176
}
177