Passed
Push — master ( 3a89ba...cbeafa )
by Chris
32s
created

TicketMetadata::getTicketType()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 2
nc 1
nop 0
dl 0
loc 4
rs 10
c 0
b 0
f 0
ccs 0
cts 2
cp 0
crap 2
1
<?php
2
3
namespace OpenTickets\Tickets\Domain\ValueObject;
4
5
class TicketMetadata
6
{
7
    private $ticketType;
8
    private $availableFrom;
9
    private $availableTo;
10
    private $privateTicket;
11
12
    /**
13
     * TicketMetadata constructor.
14
     * @param TicketType $ticketType
15
     * @param \DateTime $availableFrom
16
     * @param \DateTime $availableTo
17
     * @param bool $privateTicket
18
     */
19 3
    public function __construct(
20
        TicketType $ticketType,
21
        \DateTime $availableFrom,
22
        \DateTime $availableTo,
23
        bool $privateTicket
24
    ) {
25 3
        $this->ticketType = $ticketType;
26 3
        $this->availableFrom = $availableFrom;
27 3
        $this->availableTo = $availableTo;
28 3
        $this->privateTicket = $privateTicket;
29 3
    }
30
31 3
    public static function createWithoutDates(TicketType $ticketType, $privateTicket): TicketMetadata
32
    {
33 3
        return new self(
34
            $ticketType,
35 3
            (new \DateTime())->sub(new \DateInterval('P1D')),
36 3
            (new \DateTime())->add(new \DateInterval('P1D')),
37
            $privateTicket
38
        );
39
    }
40
41
    /**
42
     * @return TicketType
43
     */
44
    public function getTicketType(): TicketType
45
    {
46
        return $this->ticketType;
47
    }
48
49
    /**
50
     * @return \DateTime
51
     */
52
    public function getAvailableFrom(): \DateTime
53
    {
54
        return $this->availableFrom;
55
    }
56
57
    /**
58
     * @return \DateTime
59
     */
60
    public function getAvailableTo(): \DateTime
61
    {
62
        return $this->availableTo;
63
    }
64
65 3
    public function isAvailableOn(\DateTime $date)
66
    {
67 3
        return ($this->availableFrom < $date && $date < $this->availableTo);
68
    }
69
70
    /**
71
     * @return boolean
72
     */
73
    public function isPrivateTicket(): bool
74
    {
75
        return $this->privateTicket;
76
    }
77
}