|
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