|
5 | 5 | namespace PhpList\RestBundle\Messaging\Controller; |
6 | 6 |
|
7 | 7 | use OpenApi\Attributes as OA; |
8 | | -use PhpList\Core\Domain\Identity\Model\PrivilegeFlag; |
9 | | -use PhpList\Core\Domain\Messaging\Model\Filter\MessageFilter; |
10 | 8 | use PhpList\Core\Domain\Messaging\Model\Message; |
11 | | -use PhpList\Core\Domain\Messaging\Service\MessageManager; |
12 | 9 | use PhpList\Core\Security\Authentication; |
13 | 10 | use PhpList\RestBundle\Common\Controller\BaseController; |
14 | | -use PhpList\RestBundle\Common\Service\Provider\PaginatedDataProvider; |
15 | 11 | use PhpList\RestBundle\Common\Validator\RequestValidator; |
16 | 12 | use PhpList\RestBundle\Messaging\Request\CreateMessageRequest; |
17 | 13 | use PhpList\RestBundle\Messaging\Request\UpdateMessageRequest; |
18 | | -use PhpList\RestBundle\Messaging\Serializer\MessageNormalizer; |
| 14 | +use PhpList\RestBundle\Messaging\Service\CampaignService; |
19 | 15 | use Symfony\Bridge\Doctrine\Attribute\MapEntity; |
20 | 16 | use Symfony\Component\HttpFoundation\JsonResponse; |
21 | 17 | use Symfony\Component\HttpFoundation\Request; |
|
30 | 26 | #[Route('/campaigns', name: 'campaign_')] |
31 | 27 | class CampaignController extends BaseController |
32 | 28 | { |
33 | | - private MessageNormalizer $normalizer; |
34 | | - private MessageManager $messageManager; |
35 | | - private PaginatedDataProvider $paginatedProvider; |
| 29 | + private CampaignService $campaignService; |
36 | 30 |
|
37 | 31 | public function __construct( |
38 | 32 | Authentication $authentication, |
39 | 33 | RequestValidator $validator, |
40 | | - MessageNormalizer $normalizer, |
41 | | - MessageManager $messageManager, |
42 | | - PaginatedDataProvider $paginatedProvider, |
| 34 | + CampaignService $campaignService, |
43 | 35 | ) { |
44 | 36 | parent::__construct($authentication, $validator); |
45 | | - $this->normalizer = $normalizer; |
46 | | - $this->messageManager = $messageManager; |
47 | | - $this->paginatedProvider = $paginatedProvider; |
| 37 | + $this->campaignService = $campaignService; |
48 | 38 | } |
49 | 39 |
|
50 | 40 | #[Route('', name: 'get_list', methods: ['GET'])] |
@@ -104,12 +94,10 @@ public function __construct( |
104 | 94 | )] |
105 | 95 | public function getMessages(Request $request): JsonResponse |
106 | 96 | { |
107 | | - $authUer = $this->requireAuthentication($request); |
108 | | - |
109 | | - $filter = (new MessageFilter())->setOwner($authUer); |
| 97 | + $authUser = $this->requireAuthentication($request); |
110 | 98 |
|
111 | 99 | return $this->json( |
112 | | - $this->paginatedProvider->getPaginatedList($request, $this->normalizer, Message::class, $filter), |
| 100 | + $this->campaignService->getMessages($request, $authUser), |
113 | 101 | Response::HTTP_OK |
114 | 102 | ); |
115 | 103 | } |
@@ -158,11 +146,7 @@ public function getMessage( |
158 | 146 | ): JsonResponse { |
159 | 147 | $this->requireAuthentication($request); |
160 | 148 |
|
161 | | - if (!$message) { |
162 | | - throw $this->createNotFoundException('Campaign not found.'); |
163 | | - } |
164 | | - |
165 | | - return $this->json($this->normalizer->normalize($message), Response::HTTP_OK); |
| 149 | + return $this->json($this->campaignService->getMessage($message), Response::HTTP_OK); |
166 | 150 | } |
167 | 151 |
|
168 | 152 | #[Route('', name: 'create', methods: ['POST'])] |
@@ -217,18 +201,17 @@ public function getMessage( |
217 | 201 | ), |
218 | 202 | ] |
219 | 203 | )] |
220 | | - public function createMessage(Request $request, MessageNormalizer $normalizer): JsonResponse |
| 204 | + public function createMessage(Request $request): JsonResponse |
221 | 205 | { |
222 | 206 | $authUser = $this->requireAuthentication($request); |
223 | | - if (!$authUser->getPrivileges()->has(PrivilegeFlag::Campaigns)) { |
224 | | - throw $this->createAccessDeniedException('You are not allowed to create campaigns.'); |
225 | | - } |
226 | 207 |
|
227 | 208 | /** @var CreateMessageRequest $createMessageRequest */ |
228 | 209 | $createMessageRequest = $this->validator->validate($request, CreateMessageRequest::class); |
229 | | - $data = $this->messageManager->createMessage($createMessageRequest->getDto(), $authUser); |
230 | 210 |
|
231 | | - return $this->json($normalizer->normalize($data), Response::HTTP_CREATED); |
| 211 | + return $this->json( |
| 212 | + $this->campaignService->createMessage($createMessageRequest, $authUser), |
| 213 | + Response::HTTP_CREATED |
| 214 | + ); |
232 | 215 | } |
233 | 216 |
|
234 | 217 | #[Route('/{messageId}', name: 'update', requirements: ['messageId' => '\d+'], methods: ['PUT'])] |
@@ -294,18 +277,14 @@ public function updateMessage( |
294 | 277 | #[MapEntity(mapping: ['messageId' => 'id'])] ?Message $message = null, |
295 | 278 | ): JsonResponse { |
296 | 279 | $authUser = $this->requireAuthentication($request); |
297 | | - if (!$authUser->getPrivileges()->has(PrivilegeFlag::Campaigns)) { |
298 | | - throw $this->createAccessDeniedException('You are not allowed to update campaigns.'); |
299 | | - } |
300 | 280 |
|
301 | | - if (!$message) { |
302 | | - throw $this->createNotFoundException('Campaign not found.'); |
303 | | - } |
304 | 281 | /** @var UpdateMessageRequest $updateMessageRequest */ |
305 | 282 | $updateMessageRequest = $this->validator->validate($request, UpdateMessageRequest::class); |
306 | | - $data = $this->messageManager->updateMessage($updateMessageRequest->getDto(), $message, $authUser); |
307 | 283 |
|
308 | | - return $this->json($this->normalizer->normalize($data), Response::HTTP_OK); |
| 284 | + return $this->json( |
| 285 | + $this->campaignService->updateMessage($updateMessageRequest, $authUser, $message), |
| 286 | + Response::HTTP_OK |
| 287 | + ); |
309 | 288 | } |
310 | 289 |
|
311 | 290 | #[Route('/{messageId}', name: 'delete', requirements: ['messageId' => '\d+'], methods: ['DELETE'])] |
@@ -356,15 +335,8 @@ public function deleteMessage( |
356 | 335 | #[MapEntity(mapping: ['messageId' => 'id'])] ?Message $message = null |
357 | 336 | ): JsonResponse { |
358 | 337 | $authUser = $this->requireAuthentication($request); |
359 | | - if (!$authUser->getPrivileges()->has(PrivilegeFlag::Campaigns)) { |
360 | | - throw $this->createAccessDeniedException('You are not allowed to delete campaigns.'); |
361 | | - } |
362 | | - |
363 | | - if (!$message) { |
364 | | - throw $this->createNotFoundException('Campaign not found.'); |
365 | | - } |
366 | 338 |
|
367 | | - $this->messageManager->delete($message); |
| 339 | + $this->campaignService->deleteMessage($authUser, $message); |
368 | 340 |
|
369 | 341 | return $this->json(null, Response::HTTP_NO_CONTENT); |
370 | 342 | } |
|
0 commit comments