Completed
Pull Request — master (#409)
by Jonas
04:39
created

WriteService::dispatch()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 9
rs 9.9666
c 0
b 0
f 0
cc 1
nc 1
nop 1
1
<?php
2
3
namespace CultuurNet\UDB3\Label\Services;
4
5
use Broadway\CommandHandling\CommandBusInterface;
6
use Broadway\UuidGenerator\UuidGeneratorInterface;
7
use CultuurNet\UDB3\Label\Commands\Create;
8
use CultuurNet\UDB3\Label\Commands\MakeInvisible;
9
use CultuurNet\UDB3\Label\Commands\MakePrivate;
10
use CultuurNet\UDB3\Label\Commands\MakePublic;
11
use CultuurNet\UDB3\Label\Commands\MakeVisible;
12
use CultuurNet\UDB3\Label\ValueObjects\Privacy;
13
use CultuurNet\UDB3\Label\ValueObjects\Visibility;
14
use CultuurNet\UDB3\Label\ValueObjects\LabelName;
15
use ValueObjects\Identity\UUID;
16
17
class WriteService implements WriteServiceInterface
18
{
19
    /**
20
     * @var CommandBusInterface
21
     */
22
    private $commandBus;
23
24
    /**
25
     * @var UuidGeneratorInterface
26
     */
27
    private $uuidGenerator;
28
29
    public function __construct(
30
        CommandBusInterface $commandBus,
31
        UuidGeneratorInterface $uuidGenerator
32
    ) {
33
        $this->commandBus = $commandBus;
34
        $this->uuidGenerator = $uuidGenerator;
35
    }
36
37
    public function create(
38
        LabelName $name,
39
        Visibility $visibility,
40
        Privacy $privacy
41
    ): UUID {
42
        $uuid = new UUID($this->uuidGenerator->generate());
43
44
        $command = new Create(
45
            $uuid,
46
            $name,
47
            $visibility,
48
            $privacy
49
        );
50
51
        $this->commandBus->dispatch($command);
52
53
        return $uuid;
54
    }
55
56
    public function makeVisible(UUID $uuid): void
57
    {
58
        $this->commandBus->dispatch(new MakeVisible($uuid));
59
    }
60
61
    public function makeInvisible(UUID $uuid): void
62
    {
63
        $this->commandBus->dispatch(new MakeInvisible($uuid));
64
    }
65
66
    public function makePublic(UUID $uuid): void
67
    {
68
        $this->commandBus->dispatch(new MakePublic($uuid));
69
    }
70
71
    public function makePrivate(UUID $uuid): void
72
    {
73
        $this->commandBus->dispatch(new MakePrivate($uuid));
74
    }
75
}
76