Passed
Push — master ( 2b63db...3a2bd9 )
by Stefan
07:15
created

Package::getDimensions()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
c 2
b 0
f 1
dl 0
loc 4
rs 10
cc 1
eloc 2
nc 1
nop 0
1
<?php
2
3
namespace Ups\Entity;
4
5
use DOMDocument;
6
use DOMElement;
7
use Ups\NodeInterface;
8
9
class Package implements NodeInterface
10
{
11
    const PKG_OVERSIZE1 = '1';
12
    const PKG_OVERSIZE2 = '2';
13
    const PKG_LARGE = '4';
14
15
    /**
16
     * @var PackagingType
17
     */
18
    private $packagingType;
19
20
    /**
21
     * @var PackageWeight
22
     */
23
    private $packageWeight;
24
25
    /**
26
     * @var string
27
     */
28
    private $description;
29
30
    /**
31
     * @var PackageServiceOptions
32
     */
33
    private $packageServiceOptions;
34
35
    /**
36
     * @var string
37
     */
38
    private $upsPremiumCareIndicator;
39
40
    /**
41
     * @var ReferenceNumber
42
     */
43
    private $referenceNumber;
44
45
    /**
46
     * @var string
47
     */
48
    private $trackingNumber;
49
50
    /**
51
     * @var bool
52
     */
53
    private $isLargePackage;
54
55
    /**
56
     * @var bool
57
     */
58
    private $additionalHandling;
59
60
    /**
61
     * @var Dimensions|null
62
     */
63
    private $dimensions;
64
65
    /**
66
     * @var Activity[]
67
     */
68
    private $activities = [];
69
70
    /**
71
     * @param null|object $attributes
72
     */
73
    public function __construct($attributes = null)
74
    {
75
        $this->setPackagingType(new PackagingType(
76
            isset($attributes->PackagingType) ? $attributes->PackagingType : null)
77
        );
78
        $this->setReferenceNumber(new ReferenceNumber());
79
        $this->setPackageWeight(new PackageWeight());
80
        $this->setPackageServiceOptions(new PackageServiceOptions());
81
82
        if (null !== $attributes) {
83
            if (isset($attributes->PackageWeight)) {
84
                $this->setPackageWeight(new PackageWeight($attributes->PackageWeight));
85
            }
86
            if (isset($attributes->Description)) {
87
                $this->setDescription($attributes->Description);
88
            }
89
            if (isset($attributes->PackageServiceOptions)) {
90
                $this->setPackageServiceOptions(new PackageServiceOptions($attributes->PackageServiceOptions));
91
            }
92
            if (isset($attributes->UPSPremiumCareIndicator)) {
93
                $this->setUpsPremiumCareIndicator($attributes->UPSPremiumCareIndicator);
94
            }
95
            if (isset($attributes->ReferenceNumber)) {
96
                $this->setReferenceNumber(new ReferenceNumber($attributes->ReferenceNumber));
97
            }
98
            if (isset($attributes->TrackingNumber)) {
99
                $this->setTrackingNumber($attributes->TrackingNumber);
100
            }
101
            if (isset($attributes->LargePackage)) {
102
                $this->setLargePackage($attributes->LargePackage);
103
            }
104
            if (isset($attributes->Dimensions)) {
105
                $this->setDimensions(new Dimensions($attributes->Dimensions));
106
            }
107
            if (isset($attributes->Activity)) {
108
                $activities = $this->getActivities();
109
                if (is_array($attributes->Activity)) {
110
                    foreach ($attributes->Activity as $Activity) {
111
                        $activities[] = new Activity($Activity);
112
                    }
113
                } else {
114
                    $activities[] = new Activity($attributes->Activity);
115
                }
116
                $this->setActivities($activities);
117
            }
118
        }
119
    }
120
121
    /**
122
     * @param null|DOMDocument $document
123
     *
124
     * @return DOMElement
125
     */
126
    public function toNode(DOMDocument $document = null)
127
    {
128
        if (null === $document) {
129
            $document = new DOMDocument();
130
        }
131
132
        $packageNode = $document->createElement('Package');
133
134
        if ($this->getDescription()) {
135
            $packageNode->appendChild($document->createElement('Description', $this->getDescription()));
136
        }
137
        $packageNode->appendChild($this->getPackagingType()->toNode($document));
138
        $packageNode->appendChild($this->getPackageWeight()->toNode($document));
139
140
141
        if (null !== $this->getDimensions()) {
142
            $packageNode->appendChild($this->getDimensions()->toNode($document));
143
        }
144
145
        if ($this->isLargePackage()) {
146
            $packageNode->appendChild($document->createElement('LargePackageIndicator'));
147
        }
148
149
        if ($this->getAdditionalHandling()) {
150
            $packageNode->appendChild($document->createElement('AdditionalHandling'));
151
        }
152
153
        if ($this->getPackageServiceOptions()) {
154
            $packageNode->appendChild($this->getPackageServiceOptions()->toNode($document));
155
        }
156
157
        if ($this->getReferenceNumber()
158
            && !is_null($this->getReferenceNumber()->getCode())
159
            && !is_null($this->getReferenceNumber()->getValue())
160
        ) {
161
            $packageNode->appendChild($this->getReferenceNumber()->toNode($document));
162
        }
163
164
        return $packageNode;
165
    }
166
167
    /**
168
     * @return Activity[]
169
     */
170
    public function getActivities()
171
    {
172
        return $this->activities;
173
    }
174
175
    /**
176
     * @param Activity[] $activities
177
     *
178
     * @return Package
179
     */
180
    public function setActivities(array $activities)
181
    {
182
        $this->activities = $activities;
183
184
        return $this;
185
    }
186
187
    /**
188
     * @return string
189
     */
190
    public function getDescription()
191
    {
192
        return $this->description;
193
    }
194
195
    /**
196
     * @param string $description
197
     *
198
     * @return Package
199
     */
200
    public function setDescription($description)
201
    {
202
        $this->description = $description;
203
204
        return $this;
205
    }
206
207
    /**
208
     * @return Dimensions|null
209
     */
210
    public function getDimensions()
211
    {
212
        return $this->dimensions;
213
    }
214
215
    /**
216
     * @param Dimensions $dimensions
217
     *
218
     * @return Package
219
     */
220
    public function setDimensions(Dimensions $dimensions)
221
    {
222
        $this->dimensions = $dimensions;
223
224
        return $this;
225
    }
226
227
    /**
228
     * @return bool
229
     */
230
    public function isLargePackage()
231
    {
232
        return $this->isLargePackage;
233
    }
234
235
    /**
236
     * @param bool $largePackage
237
     *
238
     * @return Package
239
     */
240
    public function setLargePackage($largePackage)
241
    {
242
        $this->isLargePackage = $largePackage;
243
244
        return $this;
245
    }
246
247
    /**
248
     * @return PackageServiceOptions
249
     */
250
    public function getPackageServiceOptions()
251
    {
252
        return $this->packageServiceOptions;
253
    }
254
255
    /**
256
     * @param PackageServiceOptions $packageServiceOptions
257
     *
258
     * @return Package
259
     */
260
    public function setPackageServiceOptions(PackageServiceOptions $packageServiceOptions)
261
    {
262
        $this->packageServiceOptions = $packageServiceOptions;
263
264
        return $this;
265
    }
266
267
    /**
268
     * @return PackageWeight
269
     */
270
    public function getPackageWeight()
271
    {
272
        return $this->packageWeight;
273
    }
274
275
    /**
276
     * @param PackageWeight $packageWeight
277
     *
278
     * @return Package
279
     */
280
    public function setPackageWeight(PackageWeight $packageWeight)
281
    {
282
        $this->packageWeight = $packageWeight;
283
284
        return $this;
285
    }
286
287
    /**
288
     * @return PackagingType
289
     */
290
    public function getPackagingType()
291
    {
292
        return $this->packagingType;
293
    }
294
295
    /**
296
     * @param PackagingType $packagingType
297
     *
298
     * @return Package
299
     */
300
    public function setPackagingType(PackagingType $packagingType)
301
    {
302
        $this->packagingType = $packagingType;
303
304
        return $this;
305
    }
306
307
    /**
308
     * @return ReferenceNumber
309
     */
310
    public function getReferenceNumber()
311
    {
312
        return $this->referenceNumber;
313
    }
314
315
    /**
316
     * @param ReferenceNumber $referenceNumber
317
     *
318
     * @return Package
319
     */
320
    public function setReferenceNumber(ReferenceNumber $referenceNumber)
321
    {
322
        $this->referenceNumber = $referenceNumber;
323
324
        return $this;
325
    }
326
327
    public function removeReferenceNumber()
328
    {
329
        $this->referenceNumber = null;
330
    }
331
332
    /**
333
     * @return string
334
     */
335
    public function getTrackingNumber()
336
    {
337
        return $this->trackingNumber;
338
    }
339
340
    /**
341
     * @param string $trackingNumber
342
     *
343
     * @return Package
344
     */
345
    public function setTrackingNumber($trackingNumber)
346
    {
347
        $this->trackingNumber = $trackingNumber;
348
349
        return $this;
350
    }
351
352
    /**
353
     * @return string
354
     */
355
    public function getUpsPremiumCareIndicator()
356
    {
357
        return $this->upsPremiumCareIndicator;
358
    }
359
360
    /**
361
     * @param string $upsPremiumCareIndicator
362
     *
363
     * @return Package
364
     */
365
    public function setUpsPremiumCareIndicator($upsPremiumCareIndicator)
366
    {
367
        $this->upsPremiumCareIndicator = $upsPremiumCareIndicator;
368
369
        return $this;
370
    }
371
372
    /**
373
     * @return boolean
374
     */
375
    public function getAdditionalHandling()
376
    {
377
        return $this->additionalHandling;
378
    }
379
380
    /**
381
     * @param boolean $additionalHandling
382
     */
383
    public function setAdditionalHandling($additionalHandling)
384
    {
385
        $this->additionalHandling = $additionalHandling;
386
    }
387
}
388