Passed
Push — master ( 981eff...8f57e5 )
by Nico
17:25 queued 11:44
created

PlotMemberService::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 4
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 0
nc 1
nop 2
dl 0
loc 4
ccs 2
cts 2
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Stu\Module\Communication\Lib;
6
7
use Stu\Module\Message\Lib\PrivateMessageSenderInterface;
8
use Stu\Orm\Entity\NPCQuest;
9
use Stu\Orm\Entity\User;
10
use Stu\Orm\Repository\RpgPlotMemberRepositoryInterface;
11
12
final class PlotMemberService implements PlotMemberServiceInterface
13
{
14 1
    public function __construct(
15
        private RpgPlotMemberRepositoryInterface $rpgPlotMemberRepository,
16
        private PrivateMessageSenderInterface $privateMessageSender
17 1
    ) {}
18
19
    public function addUserToPlotIfExists(NPCQuest $quest, User $user): void
20
    {
21
        $plot = $quest->getPlot();
22
23
        if ($plot === null || !$plot->isActive()) {
24
            return;
25
        }
26
27
        if ($this->rpgPlotMemberRepository->getByPlotAndUser($plot->getId(), $user->getId()) !== null) {
28
            return;
29
        }
30
31
        $member = $this->rpgPlotMemberRepository->prototype()
32
            ->setUser($user)
33
            ->setRpgPlot($plot);
34
35
        $this->rpgPlotMemberRepository->save($member);
36
37
        $this->privateMessageSender->send(
38
            $quest->getUserId(),
39
            $user->getId(),
40
            sprintf(
41
                'Du wurdest dem RPG-Plot \'%s\' als Schreiber hinzugefügt (Quest: %s)',
42
                $plot->getTitle(),
43
                $quest->getTitle()
44
            )
45
        );
46
    }
47
}