Passed
Push — master ( c87045...1efded )
by Chris
34s
created

DiscountCodeMetadata::isAvailableOn()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 2

Importance

Changes 0
Metric Value
cc 2
eloc 1
nc 2
nop 1
dl 0
loc 3
ccs 2
cts 2
cp 1
crap 2
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace ConferenceTools\Tickets\Domain\ValueObject;
4
5
class DiscountCodeMetadata
6
{
7
    private $discountCode;
8
    private $availableFrom;
9
    private $availableTo;
10
11
    public function __construct(
12
        DiscountCode $discountCode,
13
        \DateTime $availableFrom,
14
        \DateTime $availableTo
15
    ) {
16
        $this->discountCode = $discountCode;
17
        $this->availableFrom = $availableFrom;
18
        $this->availableTo = $availableTo;
19
    }
20
21
    public static function fromArray(DiscountCode $discountCode, array $metadata)
22
    {
23
        $instance = new static(
24
            $discountCode,
25
            $metadata['availableFrom'] ?? (new \DateTime())->sub(new \DateInterval('P1D')),
26
            $metadata['availableTo'] ?? (new \DateTime())->add(new \DateInterval('P1D'))
27
        );
28
29
        return $instance;
30
    }
31
32
    /**
33
     * @return DiscountCode
34
     */
35
    public function getDiscountCode(): DiscountCode
36
    {
37
        return $this->discountCode;
38
    }
39
40
41
    /**
42
     * @return \DateTime
43
     */
44
    public function getAvailableFrom(): \DateTime
45
    {
46
        return $this->availableFrom;
47
    }
48
49
    /**
50
     * @return \DateTime
51
     */
52
    public function getAvailableTo(): \DateTime
53
    {
54
        return $this->availableTo;
55
    }
56
57 4
    public function isAvailableOn(\DateTime $date)
58
    {
59 4
        return ($this->availableFrom < $date && $date < $this->availableTo);
60
    }
61
}