Item   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 83
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 2

Test Coverage

Coverage 87.1%

Importance

Changes 0
Metric Value
wmc 8
lcom 1
cbo 2
dl 0
loc 83
ccs 27
cts 31
cp 0.871
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A getCount() 0 4 1
A withCount() 0 7 1
A getDiscount() 0 4 1
A withDiscount() 0 7 1
A toArray() 0 12 3
A createFromArray() 0 15 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Billogram\Model\Invoice;
6
7
use Billogram\Model\CreatableFromArray;
8
use Billogram\Model\Item\BaseItem;
9
use Billogram\Model\Item\Bookkeeping;
10
11
/**
12
 * @author Ibrahim Hizeoui <[email protected]>
13
 */
14
class Item extends BaseItem implements CreatableFromArray
15
{
16
    /**
17
     * @var int count
18
     */
19
    private $count;
20
21
    /**
22
     * @var int
23
     */
24
    private $discount;
25
26
    /**
27
     * @return int
28
     */
29
    public function getCount(): int
30
    {
31
        return $this->count;
32
    }
33
34
    /**
35
     * @param int $count
36
     *
37
     * @return Item
38
     */
39 2
    public function withCount(int $count)
40
    {
41 2
        $new = clone $this;
42 2
        $new->count = $count;
43
44 2
        return $new;
45
    }
46
47
    /**
48
     * @return int
49
     */
50
    public function getDiscount(): int
51
    {
52
        return $this->discount;
53
    }
54
55
    /**
56
     * @param int $discount
57
     *
58
     * @return Item
59
     */
60 2
    public function withDiscount(int $discount)
61
    {
62 2
        $new = clone $this;
63 2
        $new->discount = $discount;
64
65 2
        return $new;
66
    }
67
68 2
    public function toArray()
69
    {
70 2
        $data = parent::toArray();
71 2
        if (null !== $this->count) {
72 2
            $data['count'] = $this->count;
73
        }
74 2
        if (null !== $this->discount) {
75 2
            $data['discount'] = $this->discount;
76
        }
77
78 2
        return $data;
79
    }
80
81 3
    public static function createFromArray(array $data)
82
    {
83 3
        $item = new self();
84 3
        $item->count = $data['count'] ?? null;
85 3
        $item->discount = $data['discount'] ?? null;
86 3
        $item->itemNo = $data['item_no'] ?? null;
87 3
        $item->title = $data['title'] ?? null;
88 3
        $item->description = $data['description'] ?? null;
89 3
        $item->price = $data['price'] ?? null;
90 3
        $item->vat = $data['vat'] ?? null;
91 3
        $item->unit = $data['unit'] ?? null;
92 3
        $item = $item->withBookkeeping(Bookkeeping::createFromArray($data['bookkeeping'])) ?? null;
93
94 3
        return $item;
95
    }
96
}
97