BringerOfBadNews::__construct()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 1

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
cc 1
eloc 1
nc 1
nop 1
dl 0
loc 3
rs 10
c 2
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\TriedBlockingWithUnknownCard;
13
use Stratadox\CardGame\Match\Event\TriedEndingAlreadyEndedTurn;
14
use Stratadox\CardGame\Match\Event\TriedEndingPlayPhaseOutOfTurn;
15
use Stratadox\CardGame\Match\Event\TriedPlayingCardOutOfTurn;
16
use Stratadox\CardGame\Match\Event\TriedStartingCombatOutOfTurn;
17
use Stratadox\CardGame\Match\Event\TriedStartingMatchForPendingProposal;
18
use Stratadox\CardGame\Match\Event\TriedStartingMatchWithoutProposal;
19
use Stratadox\CardGame\Proposal\TriedAcceptingExpiredProposal;
20
use Stratadox\CardGame\Proposal\TriedAcceptingUnknownProposal;
21
use Stratadox\CardGame\ReadModel\Refusals;
22
use Stratadox\CardGame\RefusalEvent;
23
24
final class BringerOfBadNews implements EventHandler
25
{
26
    private $refusals;
27
28
    public function __construct(Refusals $refusals)
29
    {
30
        $this->refusals = $refusals;
31
    }
32
33
    public function events(): iterable
34
    {
35
        return [
36
            TriedOpeningAccountForUnknownEntity::class,
37
            TriedStartingMatchForPendingProposal::class,
38
            TriedAcceptingExpiredProposal::class,
39
            TriedAcceptingUnknownProposal::class,
40
            TriedStartingMatchWithoutProposal::class,
41
            PlayerDidNotHaveTheMana::class,
42
            TriedPlayingCardOutOfTurn::class,
43
            TriedEndingPlayPhaseOutOfTurn::class,
44
            TriedAttackingWithUnknownCard::class,
45
            TriedAttackingOutOfTurn::class,
46
            TriedBlockingWithUnknownCard::class,
47
            TriedBlockingOutOfTurn::class,
48
            TriedStartingCombatOutOfTurn::class,
49
            TriedEndingAlreadyEndedTurn::class,
50
        ];
51
    }
52
53
    public function handle(DomainEvent $event): void
54
    {
55
        assert($event instanceof RefusalEvent);
56
57
        $this->refusals->addFor($event->aggregateId(), $event->reason());
58
    }
59
}
60