|
6 | 6 |
|
7 | 7 | use OpenApi\Attributes as OA; |
8 | 8 | use PhpList\Core\Domain\Messaging\Model\Message; |
| 9 | +use PhpList\Core\Domain\Messaging\Service\CampaignProcessor; |
9 | 10 | use PhpList\Core\Security\Authentication; |
10 | 11 | use PhpList\RestBundle\Common\Controller\BaseController; |
11 | 12 | use PhpList\RestBundle\Common\Validator\RequestValidator; |
|
27 | 28 | class CampaignController extends BaseController |
28 | 29 | { |
29 | 30 | private CampaignService $campaignService; |
| 31 | + private CampaignProcessor $campaignProcessor; |
30 | 32 |
|
31 | 33 | public function __construct( |
32 | 34 | Authentication $authentication, |
33 | 35 | RequestValidator $validator, |
34 | 36 | CampaignService $campaignService, |
| 37 | + CampaignProcessor $campaignProcessor, |
35 | 38 | ) { |
36 | 39 | parent::__construct($authentication, $validator); |
37 | 40 | $this->campaignService = $campaignService; |
| 41 | + $this->campaignProcessor = $campaignProcessor; |
38 | 42 | } |
39 | 43 |
|
40 | 44 | #[Route('', name: 'get_list', methods: ['GET'])] |
@@ -340,4 +344,53 @@ public function deleteMessage( |
340 | 344 |
|
341 | 345 | return $this->json(null, Response::HTTP_NO_CONTENT); |
342 | 346 | } |
| 347 | + |
| 348 | + #[Route('/{messageId}/send', name: 'send_campaign', requirements: ['messageId' => '\d+'], methods: ['POST'])] |
| 349 | + #[OA\Post( |
| 350 | + path: '/campaigns/{messageId}/send', |
| 351 | + description: '🚧 **Status: Beta** – This method is under development. Avoid using in production. ' . |
| 352 | + 'Processes/sends campaign/message by id.', |
| 353 | + summary: 'Processes/sends campaign/message by id.', |
| 354 | + tags: ['campaigns'], |
| 355 | + parameters: [ |
| 356 | + new OA\Parameter( |
| 357 | + name: 'session', |
| 358 | + description: 'Session ID obtained from authentication', |
| 359 | + in: 'header', |
| 360 | + required: true, |
| 361 | + schema: new OA\Schema( |
| 362 | + type: 'string' |
| 363 | + ) |
| 364 | + ), |
| 365 | + new OA\Parameter( |
| 366 | + name: 'messageId', |
| 367 | + description: 'message ID', |
| 368 | + in: 'path', |
| 369 | + required: true, |
| 370 | + schema: new OA\Schema(type: 'string') |
| 371 | + ) |
| 372 | + ], |
| 373 | + responses: [ |
| 374 | + new OA\Response( |
| 375 | + response: 200, |
| 376 | + description: 'Success', |
| 377 | + content: new OA\JsonContent(ref: '#/components/schemas/Message') |
| 378 | + ), |
| 379 | + new OA\Response( |
| 380 | + response: 403, |
| 381 | + description: 'Failure', |
| 382 | + content: new OA\JsonContent(ref: '#/components/schemas/UnauthorizedResponse') |
| 383 | + ) |
| 384 | + ] |
| 385 | + )] |
| 386 | + public function sendMessage( |
| 387 | + Request $request, |
| 388 | + #[MapEntity(mapping: ['messageId' => 'id'])] ?Message $message = null |
| 389 | + ): JsonResponse { |
| 390 | + $this->requireAuthentication($request); |
| 391 | + |
| 392 | + $this->campaignProcessor->process($message); |
| 393 | + |
| 394 | + return $this->json($this->campaignService->getMessage($message), Response::HTTP_OK); |
| 395 | + } |
343 | 396 | } |
0 commit comments