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

PlotMemberService   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 32
Duplicated Lines 0 %

Test Coverage

Coverage 10.53%

Importance

Changes 0
Metric Value
eloc 17
dl 0
loc 32
ccs 2
cts 19
cp 0.1053
rs 10
c 0
b 0
f 0
wmc 5

2 Methods

Rating   Name   Duplication   Size   Complexity  
A __construct() 0 4 1
A addUserToPlotIfExists() 0 25 4
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
}