TaxRequest::addLineItem()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 1

Importance

Changes 0
Metric Value
dl 0
loc 4
ccs 3
cts 3
cp 1
rs 10
c 0
b 0
f 0
cc 1
eloc 2
nc 1
nop 1
crap 1
1
<?php
2
3
namespace LAShowroom\TaxJarBundle\Model\Tax;
4
5
use LAShowroom\TaxJarBundle\Model\Address;
6
use LAShowroom\TaxJarBundle\Model\BaseRequest;
7
use LAShowroom\TaxJarBundle\Model\LineItem;
8
use Webmozart\Assert\Assert;
9
10
class TaxRequest extends BaseRequest
11
{
12
    /**
13
     * @var Address[]
14
     */
15
    private $nexusAddresses = [];
16
17
    /**
18
     * @var LineItem[]
19
     */
20
    private $lineItems = [];
21
22
    /**
23
     * @return Address[]
24
     */
25 2
    public function getNexusAddresses()
26
    {
27 2
        return $this->nexusAddresses;
28
    }
29
30
    /**
31
     * @param Address[] $nexusAddresses
32
     */
33 2
    public function setNexusAddresses(array $nexusAddresses)
34
    {
35 2
        Assert::allIsInstanceOf($nexusAddresses, Address::class);
36
37 2
        $this->nexusAddresses = $nexusAddresses;
38 2
    }
39
40 12
    public function addNexusAddress($id, Address $address)
41
    {
42 12
        $this->nexusAddresses[$id] = $address;
43 12
    }
44
45
    /**
46
     * @return LineItem[]
47
     */
48 2
    public function getLineItems()
49
    {
50 2
        return $this->lineItems;
51
    }
52
53
    /**
54
     * @param LineItem[] $lineItems
55
     */
56 2
    public function setLineItems(array $lineItems)
57
    {
58 2
        Assert::allIsInstanceOf($lineItems, LineItem::class);
59
60 2
        $this->lineItems = $lineItems;
61 2
    }
62
63 12
    public function addLineItem(LineItem $lineItem)
64
    {
65 12
        $this->lineItems[] = $lineItem;
66 12
    }
67
68 12
    public function toArray()
69
    {
70 12
        return array_merge(parent::toArray(),
71
        [
72
            'line_items' => array_map(function(LineItem $elem) {
73 12
                return $elem->toArray();
74 12
            }, $this->lineItems),
75 12
            'nexus_addresses' => array_map(function(Address $elem, $id) {
76 12
                return array_merge($elem->toArray(), ['id' => $id, ]);
77 12
            }, $this->nexusAddresses, array_keys($this->nexusAddresses)),
78
        ]);
79
    }
80
81 8
    public function getCacheKey()
82
    {
83 8
        return sprintf('tax_request_%s', md5(json_encode($this->toArray())));
84
    }
85
}
86