ReserveTickets   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
dl 0
loc 49
rs 10
c 0
b 0
f 0
wmc 6

6 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 3 1
A withoutDiscountCode() 0 3 1
A hasDiscountCode() 0 3 1
A withDiscountCode() 0 6 1
A getDiscountCode() 0 3 1
A getReservationRequests() 0 3 1
1
<?php
2
3
/**
4
 * Created by PhpStorm.
5
 * User: imhotek
6
 * Date: 28/11/16
7
 * Time: 21:48
8
 */
9
10
namespace ConferenceTools\Tickets\Domain\Command\Ticket;
11
12
use Carnage\Cqrs\Command\CommandInterface;
13
use ConferenceTools\Tickets\Domain\ValueObject\DiscountCode;
14
use ConferenceTools\Tickets\Domain\ValueObject\TicketReservationRequest;
15
16
class ReserveTickets implements CommandInterface
17
{
18
    /**
19
     * @var TicketReservationRequest[]
20
     */
21
    private $reservationRequests;
22
23
    /**
24
     * @var DiscountCode
25
     */
26
    private $discountCode;
27
28
    public function __construct(TicketReservationRequest ...$reservationRequests)
29
    {
30
        $this->reservationRequests = $reservationRequests;
31
    }
32
33
    public static function withoutDiscountCode(TicketReservationRequest ...$reservationRequests)
34
    {
35
        return new static(...$reservationRequests);
36
    }
37
38
    public static function withDiscountCode(DiscountCode $discountCode, TicketReservationRequest ...$reservationRequests)
39
    {
40
        $instance = new static(...$reservationRequests);
41
        $instance->discountCode = $discountCode;
42
43
        return $instance;
44
    }
45
46
    /**
47
     * @return TicketReservationRequest[]
48
     */
49
    public function getReservationRequests(): array
50
    {
51
        return $this->reservationRequests;
52
    }
53
54
    public function hasDiscountCode(): bool
55
    {
56
        return !($this->discountCode === null);
57
    }
58
59
    /**
60
     * @return DiscountCode
61
     */
62
    public function getDiscountCode(): DiscountCode
63
    {
64
        return $this->discountCode;
65
    }
66
}
67