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

TicketMetadata   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 73
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 0

Test Coverage

Coverage 60%

Importance

Changes 0
Metric Value
dl 0
loc 73
ccs 12
cts 20
cp 0.6
rs 10
c 0
b 0
f 0
wmc 8
lcom 1
cbo 0

7 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 11 1
A createWithoutDates() 0 9 1
A getTicketType() 0 4 1
A getAvailableFrom() 0 4 1
A getAvailableTo() 0 4 1
A isAvailableOn() 0 4 2
A isPrivateTicket() 0 4 1
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
}