Passed
Push — master ( 30d3d2...4e3abd )
by Jesse
01:56
created

BringerOfBadNews::events()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 13
Code Lines 11

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 1
eloc 11
nc 1
nop 0
dl 0
loc 13
rs 9.9
c 1
b 0
f 0
1
<?php declare(strict_types=1);
2
3
namespace Stratadox\CardGame\EventHandler;
4
5
use function assert;
6
use Stratadox\CardGame\Account\TriedOpeningAccountForUnknownEntity;
7
use Stratadox\CardGame\DomainEvent;
8
use Stratadox\CardGame\Match\Event\PlayerDidNotHaveTheMana;
9
use Stratadox\CardGame\Match\Event\TriedAttackingOutOfTurn;
10
use Stratadox\CardGame\Match\Event\TriedAttackingWithUnknownCard;
11
use Stratadox\CardGame\Match\Event\TriedBlockingOutOfTurn;
12
use Stratadox\CardGame\Match\Event\TriedPlayingCardOutOfTurn;
13
use Stratadox\CardGame\Match\Event\TriedStartingMatchForPendingProposal;
14
use Stratadox\CardGame\Match\Event\TriedStartingMatchWithoutProposal;
15
use Stratadox\CardGame\Proposal\TriedAcceptingExpiredProposal;
16
use Stratadox\CardGame\Proposal\TriedAcceptingUnknownProposal;
17
use Stratadox\CardGame\ReadModel\Refusals;
18
use Stratadox\CardGame\RefusalEvent;
19
20
final class BringerOfBadNews implements EventHandler
21
{
22
    private $refusals;
23
24
    public function __construct(Refusals $refusals)
25
    {
26
        $this->refusals = $refusals;
27
    }
28
29
    public function events(): iterable
30
    {
31
        return [
32
            TriedOpeningAccountForUnknownEntity::class,
33
            TriedStartingMatchForPendingProposal::class,
34
            TriedAcceptingExpiredProposal::class,
35
            TriedAcceptingUnknownProposal::class,
36
            TriedStartingMatchWithoutProposal::class,
37
            PlayerDidNotHaveTheMana::class,
38
            TriedPlayingCardOutOfTurn::class,
39
            TriedAttackingWithUnknownCard::class,
40
            TriedAttackingOutOfTurn::class,
41
            TriedBlockingOutOfTurn::class,
42
        ];
43
    }
44
45
    public function handle(DomainEvent $event): void
46
    {
47
        assert($event instanceof RefusalEvent);
48
49
        $this->refusals->addFor($event->aggregateId(), $event->reason());
50
    }
51
}
52