Passed
Push — master ( ea03fa...981937 )
by Nico
23:24 queued 15:02
created

EditBorder::handle()   A

Complexity

Conditions 3
Paths 3

Size

Total Lines 18
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 12

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 3
eloc 9
c 1
b 0
f 0
nc 3
nop 1
dl 0
loc 18
ccs 0
cts 10
cp 0
crap 12
rs 9.9666
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Stu\Module\Admin\Action\Map\EditBorder;
6
7
use Stu\Module\Admin\View\Map\Noop\Noop;
8
use Stu\Module\Control\ActionControllerInterface;
9
use Stu\Module\Control\GameControllerInterface;
10
use Stu\Orm\Repository\MapBorderTypeRepositoryInterface;
11
use Stu\Orm\Repository\MapRepositoryInterface;
12
13
final class EditBorder implements ActionControllerInterface
14
{
15
    public const ACTION_IDENTIFIER = 'B_EDIT_BORDER';
16
17
    private EditBorderRequestInterface $editBorderRequest;
18
19
    private MapBorderTypeRepositoryInterface $mapBorderTypeRepository;
20
21
    private MapRepositoryInterface $mapRepository;
22
23
    public function __construct(
24
        EditBorderRequestInterface $editBorderRequest,
25
        MapBorderTypeRepositoryInterface $mapBorderTypeRepository,
26
        MapRepositoryInterface $mapRepository
27
    ) {
28
        $this->editBorderRequest = $editBorderRequest;
29
        $this->mapBorderTypeRepository = $mapBorderTypeRepository;
30
        $this->mapRepository = $mapRepository;
31
    }
32
33
    public function handle(GameControllerInterface $game): void
34
    {
35
        $selectedField = $this->mapRepository->find($this->editBorderRequest->getFieldId());
36
37
        if ($selectedField === null) {
38
            return;
39
        }
40
41
        $border = $this->mapBorderTypeRepository->find($this->editBorderRequest->getBorder());
42
        if ($border === null) {
43
            return;
44
        }
45
46
        $selectedField->setBorderTypeId($border->getId());
47
48
        $this->mapRepository->save($selectedField);
49
50
        $game->setView(Noop::VIEW_IDENTIFIER);
51
    }
52
53
    public function performSessionCheck(): bool
54
    {
55
        return false;
56
    }
57
}
58