Failed Conditions
Pull Request — master (#2358)
by Nico
10:36 queued 05:05
created

AllianceActionManager::mayEditFactionMode()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 14
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 3
CRAP Score 6.9849

Importance

Changes 0
Metric Value
cc 4
eloc 7
nc 4
nop 2
dl 0
loc 14
ccs 3
cts 7
cp 0.4286
crap 6.9849
rs 10
c 0
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Stu\Module\Alliance\Lib;
6
7
use Noodlehaus\ConfigInterface;
8
use RuntimeException;
9
use Stu\Component\Alliance\Enum\AllianceJobPermissionEnum;
10
use Stu\Component\Station\Dock\DockTypeEnum;
11
use Stu\Module\Message\Lib\PrivateMessageSenderInterface;
12
use Stu\Module\PlayerSetting\Lib\UserConstants;
0 ignored issues
show
Bug introduced by
The type Stu\Module\PlayerSetting\Lib\UserConstants was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
13
use Stu\Orm\Entity\Alliance;
14
use Stu\Orm\Entity\AllianceJob;
15
use Stu\Orm\Entity\User;
16
use Stu\Orm\Repository\AllianceJobRepositoryInterface;
17
use Stu\Orm\Repository\AllianceRepositoryInterface;
18
use Stu\Orm\Repository\DockingPrivilegeRepositoryInterface;
19
use Stu\Orm\Repository\UserRepositoryInterface;
20
21
final class AllianceActionManager implements AllianceActionManagerInterface
22
{
23 1
    public function __construct(
24
        private AllianceJobRepositoryInterface $allianceJobRepository,
25
        private AllianceRepositoryInterface $allianceRepository,
26
        private DockingPrivilegeRepositoryInterface $dockingPrivilegeRepository,
27
        private PrivateMessageSenderInterface $privateMessageSender,
28
        private UserRepositoryInterface $userRepository,
29
        private ConfigInterface $config,
30
        private AllianceJobManagerInterface $allianceJobManager
31 1
    ) {}
32
33
    #[\Override]
34
    public function assignUserToJob(User $user, AllianceJob $job): void
35
    {
36
        $this->allianceJobManager->assignUserToJob($user, $job);
37
    }
38
39
    #[\Override]
40
    public function delete(Alliance $alliance, bool $sendMesage = true): void
41
    {
42
        $this->dockingPrivilegeRepository->truncateByTypeAndTarget(DockTypeEnum::ALLIANCE, $alliance->getId());
43
44
        $text = sprintf(_('Die Allianz %s wurde aufgelöst'), $alliance->getName());
45
46
        foreach ($alliance->getMembers() as $user) {
47
            if ($sendMesage === true) {
48
                $this->privateMessageSender->send(UserConstants::USER_NOONE, $user->getId(), $text);
49
            }
50
51
            $user->setAlliance(null);
52
53
            $this->userRepository->save($user);
54
        }
55
56
        if ($alliance->hasAvatar()) {
57
            $result = @unlink(
58
                sprintf(
59
                    '%s/%s/%s.png',
60
                    $this->config->get('game.webroot'),
61
                    $this->config->get('game.alliance_avatar_path'),
62
                    $alliance->getAvatar()
63
                )
64
            );
65
66
            if ($result === false) {
67
                throw new RuntimeException('alliance avatar could not be deleted');
68
            }
69
        }
70
71
        foreach ($alliance->getJobs() as $job) {
72
            $this->allianceJobRepository->delete($job);
73
        }
74
75
        $this->allianceRepository->delete($alliance);
76
    }
77
78 5
    #[\Override]
79
    public function mayEdit(Alliance $alliance, User $user): bool
80
    {
81 5
        return $this->allianceJobManager->hasUserPermission(
82 5
            $user,
83 5
            $alliance,
84 5
            AllianceJobPermissionEnum::EDIT_ALLIANCE->value
85 5
        );
86
    }
87
88 2
    #[\Override]
89
    public function mayManageForeignRelations(Alliance $alliance, User $user): bool
90
    {
91 2
        return $this->allianceJobManager->hasUserFounderPermission($user, $alliance)
92 2
            || $this->allianceJobManager->hasUserSuccessorPermission($user, $alliance)
93 2
            || $this->allianceJobManager->hasUserDiplomaticPermission($user, $alliance)
94 2
            || $this->allianceJobManager->hasUserPermission($user, $alliance, AllianceJobPermissionEnum::EDIT_DIPLOMATIC_DOCUMENTS->value)
95 2
            || $this->allianceJobManager->hasUserPermission($user, $alliance, AllianceJobPermissionEnum::CREATE_AGREEMENTS->value);
96
    }
97
98 1
    #[\Override]
99
    public function mayCreateAgreements(Alliance $alliance, User $user): bool
100
    {
101 1
        return $this->allianceJobManager->hasUserPermission(
102 1
            $user,
103 1
            $alliance,
104 1
            AllianceJobPermissionEnum::CREATE_AGREEMENTS->value
105 1
        )
106 1
            || $this->allianceJobManager->hasUserFounderPermission($user, $alliance)
107 1
            || $this->allianceJobManager->hasUserSuccessorPermission($user, $alliance)
108 1
            || $this->allianceJobManager->hasUserDiplomaticPermission($user, $alliance);
109
    }
110
111 3
    #[\Override]
112
    public function mayManageAlliance(Alliance $alliance, User $user): bool
113
    {
114 3
        return $this->allianceJobManager->hasUserFounderPermission($user, $alliance)
115 3
            || $this->allianceJobManager->hasUserSuccessorPermission($user, $alliance)
116 3
            || $this->allianceJobManager->hasUserDiplomaticPermission($user, $alliance)
117 3
            || $this->allianceJobManager->hasUserPermission($user, $alliance, AllianceJobPermissionEnum::MANAGE_JOBS->value)
118 3
            || $this->allianceJobManager->hasUserPermission($user, $alliance, AllianceJobPermissionEnum::VIEW_COLONIES->value)
119 3
            || $this->allianceJobManager->hasUserPermission($user, $alliance, AllianceJobPermissionEnum::VIEW_MEMBER_DATA->value)
120 3
            || $this->allianceJobManager->hasUserPermission($user, $alliance, AllianceJobPermissionEnum::VIEW_SHIPS->value);
121
    }
122
123 1
    #[\Override]
124
    public function mayEditDiplomaticDocuments(Alliance $alliance, User $user): bool
125
    {
126 1
        return $this->allianceJobManager->hasUserPermission(
127 1
            $user,
128 1
            $alliance,
129 1
            AllianceJobPermissionEnum::EDIT_DIPLOMATIC_DOCUMENTS->value
130 1
        ) || $this->allianceJobManager->hasUserFounderPermission($user, $alliance)
131 1
            || $this->allianceJobManager->hasUserSuccessorPermission($user, $alliance)
132 1
            || $this->allianceJobManager->hasUserDiplomaticPermission($user, $alliance);
133
    }
134
135 2
    #[\Override]
136
    public function mayManageApplications(Alliance $alliance, User $user): bool
137
    {
138 2
        return $this->allianceJobManager->hasUserPermission(
139 2
            $user,
140 2
            $alliance,
141 2
            AllianceJobPermissionEnum::MANAGE_APPLICATIONS->value
142 2
        );
143
    }
144
145 1
    #[\Override]
146
    public function mayManageJobs(Alliance $alliance, User $user): bool
147
    {
148 1
        return $this->allianceJobManager->hasUserPermission(
149 1
            $user,
150 1
            $alliance,
151 1
            AllianceJobPermissionEnum::MANAGE_JOBS->value
152 1
        );
153
    }
154
155 1
    #[\Override]
156
    public function mayViewColonies(Alliance $alliance, User $user): bool
157
    {
158 1
        return $this->allianceJobManager->hasUserPermission(
159 1
            $user,
160 1
            $alliance,
161 1
            AllianceJobPermissionEnum::VIEW_COLONIES->value
162 1
        );
163
    }
164
165 1
    #[\Override]
166
    public function mayViewMemberData(Alliance $alliance, User $user): bool
167
    {
168 1
        return $this->allianceJobManager->hasUserPermission(
169 1
            $user,
170 1
            $alliance,
171 1
            AllianceJobPermissionEnum::VIEW_MEMBER_DATA->value
172 1
        );
173
    }
174
175 1
    #[\Override]
176
    public function mayViewShips(Alliance $alliance, User $user): bool
177
    {
178 1
        return $this->allianceJobManager->hasUserPermission(
179 1
            $user,
180 1
            $alliance,
181 1
            AllianceJobPermissionEnum::VIEW_SHIPS->value
182 1
        );
183
    }
184
185 1
    #[\Override]
186
    public function mayViewAllianceStorage(Alliance $alliance, User $user): bool
187
    {
188 1
        return $this->allianceJobManager->hasUserPermission(
189 1
            $user,
190 1
            $alliance,
191 1
            AllianceJobPermissionEnum::VIEW_ALLIANCE_STORAGE->value
192 1
        );
193
    }
194
195 1
    #[\Override]
196
    public function mayViewAllianceHistory(Alliance $alliance, User $user): bool
197
    {
198 1
        return $this->allianceJobManager->hasUserPermission(
199 1
            $user,
200 1
            $alliance,
201 1
            AllianceJobPermissionEnum::VIEW_ALLIANCE_HISTORY->value
202 1
        );
203
    }
204
205
    #[\Override]
206
    public function sendMessage(int $allianceId, string $text): void
207
    {
208
        $alliance = $this->allianceRepository->find($allianceId);
209
210
        if ($alliance === null) {
211
            return;
212
        }
213
214
        foreach ($alliance->getMembers() as $member) {
215
            $this->privateMessageSender->send(UserConstants::USER_NOONE, $member->getId(), $text);
216
        }
217
    }
218
219 1
    #[\Override]
220
    public function mayEditFactionMode(Alliance $alliance, int $factionId): bool
221
    {
222 1
        if ($alliance->getFaction() === null) {
223 1
            return true;
224
        }
225
226
        foreach ($alliance->getMembers() as $obj) {
227
            if ($obj->getFactionId() !== $factionId) {
228
                return false;
229
            }
230
        }
231
232
        return true;
233
    }
234
}
235