Item::__construct()   A
last analyzed

Complexity

Conditions 2
Paths 1

Size

Total Lines 20
Code Lines 15

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 15
c 1
b 0
f 0
dl 0
loc 20
ccs 0
cts 18
cp 0
rs 9.7666
cc 2
nc 1
nop 1
crap 6
1
<?php
2
3
declare(strict_types=1);
4
5
namespace CdekSDK2\BaseTypes;
6
7
use JMS\Serializer\Annotation\Type;
8
9
/**
10
 * Class Item
11
 * @package CdekSDK2\BaseTypes
12
 */
13
class Item extends Base
14
{
15
    /**
16
     * Наименование товара
17
     * @Type("string")
18
     * @var string
19
     */
20
    public $name;
21
22
    /**
23
     * Идентификатор/артикул товара
24
     * @Type("string")
25
     * @var string
26
     */
27
    public $ware_key;
28
29
    /**
30
     * Маркировка товара/вложения
31
     * @Type("string")
32
     * @var string
33
     */
34
    public $marking;
35
36
    /**
37
     * Оплата за товар при получении
38
     * @Type("CdekSDK2\BaseTypes\Money")
39
     * @var Money
40
     */
41
    public $payment;
42
43
    /**
44
     * Объявленная стоимость товара
45
     * @Type("float")
46
     * @var float
47
     */
48
    public $cost;
49
50
    /**
51
     * Вес (за единицу товара, в граммах)
52
     * @Type("int")
53
     * @var int
54
     */
55
    public $weight;
56
57
    /**
58
     * Вес брутто (только для международных заказов)
59
     * @Type("int")
60
     * @var int
61
     */
62
    public $weight_gross;
63
64
    /**
65
     * Количество единиц товара
66
     * @Type("int")
67
     * @var int
68
     */
69
    public $amount;
70
71
    /**
72
     * Количество врученных единиц товара (в штуках)
73
     * @Type("int")
74
     * @var int
75
     */
76
    public $delivery_amount;
77
78
    /**
79
     * Наименование на иностранном языке
80
     * @Type("string")
81
     * @var string
82
     */
83
    public $name_i18n;
84
85
    /**
86
     * Бренд на иностранном языке
87
     * @Type("string")
88
     * @var string
89
     */
90
    public $brand;
91
92
    /**
93
     * Код страны в формате ISO_3166-1_alpha-2
94
     * @Type("string")
95
     * @var string
96
     */
97
    public $country_code;
98
99
    /**
100
     * Код материала
101
     * @Type("int")
102
     * @var int
103
     */
104
    public $material;
105
106
    /**
107
     * Содержит ли радиочастотные модули (wifi/gsm)
108
     * @Type("bool")
109
     * @var bool
110
     */
111
    public $wifi_gsm = false;
112
113
    /**
114
     * Ссылка на сайт интернет-магазина с описанием товара
115
     * @Type("string")
116
     * @var string
117
     */
118
    public $url;
119
120
    /**
121
     * Item constructor.
122
     * @param array $param
123
     */
124
    public function __construct(array $param = [])
125
    {
126
        parent::__construct($param);
127
        $this->rules = [
128
            'name' => 'required',
129
            'ware_key' => 'required',
130
            'cost' => 'required|numeric',
131
            'weight' => 'required|numeric',
132
            'amount' => 'required|integer',
133
            'payment' => [
134
                'required',
135
                function ($value) {
136
                    if ($value instanceof Money) {
137
                        $value->validate();
138
                    }
139
                }
140
            ],
141
            'weight_gross' => 'numeric',
142
            'country_code' => 'alpha:2',
143
            'url' => 'url',
144
        ];
145
    }
146
}
147