TaxRequest   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 76
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Test Coverage

Coverage 100%

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 4
dl 0
loc 76
ccs 27
cts 27
cp 1
rs 10
c 0
b 0
f 0

8 Methods

Rating   Name   Duplication   Size   Complexity  
A getNexusAddresses() 0 4 1
A setNexusAddresses() 0 6 1
A addNexusAddress() 0 4 1
A getLineItems() 0 4 1
A setLineItems() 0 6 1
A addLineItem() 0 4 1
A toArray() 0 12 1
A getCacheKey() 0 4 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