Package::__construct()   A
last analyzed

Complexity

Conditions 3
Paths 1

Size

Total Lines 15
Code Lines 13

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 14
CRAP Score 3

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 13
c 1
b 0
f 0
dl 0
loc 15
ccs 14
cts 14
cp 1
rs 9.8333
cc 3
nc 1
nop 1
crap 3
1
<?php
2
3
declare(strict_types=1);
4
5
namespace CdekSDK2\BaseTypes;
6
7
use JMS\Serializer\Annotation\Type;
8
9
/**
10
 * Class Package
11
 * @package CdekSDK2\BaseTypes
12
 */
13
class Package extends Base
14
{
15
    /**
16
     * Номер упаковки
17
     * @Type("string")
18
     * @var string
19
     */
20
    public $number;
21
22
    /**
23
     * Штрихкод упаковки в ИС СДЭК
24
     * @Type("string")
25
     * @var string
26
     */
27
    public $barcode;
28
29
    /**
30
     * Общий вес (в граммах)
31
     * @Type("int")
32
     * @var int
33
     */
34
    public $weight;
35
36
    /**
37
     * Объемный вес (в граммах)
38
     * @Type("int")
39
     * @var int
40
     */
41
    public $weight_volume;
42
43
    /**
44
     * Расчетный вес (в граммах)
45
     * @Type("int")
46
     * @var int
47
     */
48
    public $weight_calc;
49
50
    /**
51
     * Габариты упаковки. Длина (в сантиметрах)
52
     * @Type("int")
53
     * @var int
54
     */
55
    public $length;
56
57
    /**
58
     * Габариты упаковки. Ширина (в сантиметрах)
59
     * @Type("int")
60
     * @var int
61
     */
62
    public $width;
63
64
    /**
65
     * Габариты упаковки. Высота (в сантиметрах)
66
     * @Type("int")
67
     * @var int
68
     */
69
    public $height;
70
71
    /**
72
     * Комментарий к упаковке
73
     * @Type("string")
74
     * @var string
75
     */
76
    public $comment;
77
78
    /**
79
     * Позиции товаров в упаковке
80
     * @Type("array<CdekSDK2\BaseTypes\Item>")
81
     * @var Item[]
82
     */
83
    public $items;
84
85
    /**
86
     * Уникальный номер упаковки в ИС СДЭК. Обязательно для уже существующей в заказе упаковки
87
     * @Type("string")
88
     * @var string
89
     */
90
    public $package_id;
91
92
    /**
93
     * Package constructor.
94
     * @param array $param
95
     */
96 3
    public function __construct(array $param = [])
97
    {
98 3
        parent::__construct($param);
99 3
        $this->rules = [
100 3
            'number' => 'required',
101 3
            'weight' => 'required|numeric',
102 3
            'length' => 'required|numeric',
103 3
            'width' => 'required|numeric',
104 3
            'height' => 'required|numeric',
105 3
            'items' => [
106 3
                'required', 'array',
107 3
                function ($value) {
108 1
                    foreach ($value as $item) {
109 1
                        if ($item instanceof Item) {
110 1
                            $item->validate();
111
                        }
112
                    }
113 3
                }
114 3
            ],
115 3
        ];
116
    }
117
}
118