BringerOfBadNews   A
last analyzed

Complexity

Total Complexity 3

Size/Duplication

Total Lines 34
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
eloc 19
c 2
b 0
f 0
dl 0
loc 34
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A events() 0 17 1
A __construct() 0 3 1
A handle() 0 5 1
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