Passed
Push — master ( 4327f5...645913 )
by Chris
03:00
created

Delegate::applyDelegateCheckedIn()   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
c 0
b 0
f 0
nc 1
nop 1
dl 0
loc 3
rs 10
ccs 2
cts 2
cp 1
crap 1
1
<?php
2
3
4
namespace ConferenceTools\Checkin\Domain\Model\Delegate;
5
6
use Carnage\Cqrs\Aggregate\AbstractAggregate;
7
use ConferenceTools\Checkin\Domain\Event\Delegate\DelegateCheckedIn;
8
use ConferenceTools\Checkin\Domain\Event\Delegate\DelegateInformationUpdated;
9
use ConferenceTools\Checkin\Domain\Event\Delegate\DelegateRegistered;
10
use ConferenceTools\Checkin\Domain\ValueObject\DelegateInfo;
11
use ConferenceTools\Checkin\Domain\ValueObject\Ticket;
12
13
class Delegate extends AbstractAggregate
14
{
15
    private $id;
16
    private $delegateInfo;
17
    private $checkedIn = false;
18
19 3
    public function getId()
20
    {
21 3
        return $this->id;
22
    }
23
24 1
    public static function register(
25
        string $id,
26
        DelegateInfo $delegateInfo,
27
        Ticket $ticket,
28
        string $purchaserEmail
29
    ) {
30 1
        $instance = new static();
31 1
        $instance->apply(new DelegateRegistered($id, $delegateInfo, $ticket, $purchaserEmail));
32
33 1
        return $instance;
34
    }
35
36 4
    protected function applyDelegateRegistered(DelegateRegistered $event)
37
    {
38 4
        $this->id = $event->getDelegateId();
39 4
        $this->delegateInfo = $event->getDelegateInfo();
40 4
    }
41
42 1
    public function updateDelegateInformation(DelegateInfo $delegateInfo)
43
    {
44 1
        $this->apply(new DelegateInformationUpdated($this->id, $delegateInfo));
45 1
    }
46
47 1
    protected function applyDelegateInformationUpdated(DelegateInformationUpdated $event)
48
    {
49 1
        $this->delegateInfo = $event->getDelegateInfo();
50 1
    }
51
52 2
    public function checkIn()
53
    {
54 2
        if ($this->checkedIn) {
55 1
            throw new \DomainException('Delegate has already been checked in');
56
        }
57
58 1
        $this->apply(new DelegateCheckedIn($this->id));
59 1
    }
60
61 2
    protected function applyDelegateCheckedIn(DelegateCheckedIn $event)
62
    {
63 2
        $this->checkedIn = true;
64
    }
65
}