Completed
Push — master ( d26128...b08c4e )
by Andrii
03:02
created

Sale::getPlan()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 1
nc 1
nop 0
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
/**
3
 * PHP Billing Library
4
 *
5
 * @link      https://github.com/hiqdev/php-billing
6
 * @package   php-billing
7
 * @license   BSD-3-Clause
8
 * @copyright Copyright (c) 2017-2018, HiQDev (http://hiqdev.com/)
9
 */
10
11
namespace hiqdev\php\billing\sale;
12
13
use DateTimeImmutable;
14
use hiqdev\php\billing\customer\CustomerInterface;
15
use hiqdev\php\billing\plan\PlanInterface;
16
use hiqdev\php\billing\target\TargetInterface;
17
18
/**
19
 * Sale.
20
 *
21
 * @author Andrii Vasyliev <[email protected]>
22
 */
23
class Sale implements SaleInterface
24
{
25
    /**
26
     * @var int
27
     */
28
    protected $id;
29
30
    /**
31
     * @var TargetInterface
32
     */
33
    protected $target;
34
35
    /**
36
     * @var CustomerInterface
37
     */
38
    protected $customer;
39
40
    /**
41
     * @var PlanInterface
42
     */
43
    protected $plan;
44
45
    /**
46
     * @var DateTimeImmutable
47
     */
48
    protected $time;
49
50 3
    public function __construct(
51
                            $id,
52
        TargetInterface     $target,
53
        CustomerInterface   $customer,
54
        PlanInterface       $plan,
55
        DateTimeImmutable   $time = null
56
    ) {
57 3
        $this->id = $id;
58 3
        $this->target = $target;
59 3
        $this->customer = $customer;
60 3
        $this->plan = $plan;
61 3
        $this->time = $time;
62 3
    }
63
64
    public function getId()
65
    {
66
        return $this->id;
67
    }
68
69
    public function getTarget()
70
    {
71
        return $this->target;
72
    }
73
74
    public function getCustomer()
75
    {
76
        return $this->customer;
77
    }
78
79 2
    public function getPlan()
80
    {
81 2
        return $this->plan;
82
    }
83
84
    public function getTime()
85
    {
86
        return $this->time;
87
    }
88
89
    public function hasId()
90
    {
91
        return $this->id !== null;
92
    }
93
94
    public function setId($id)
95
    {
96
        if ((string) $this->id === (string) $id) {
97
            return;
98
        }
99
        if ($this->hasId()) {
100
            throw new \Exception('cannot reassign sale id');
101
        }
102
        $this->id = $id;
103
    }
104
}
105