|
12 | 12 | use PhpList\RestBundle\Common\Controller\BaseController; |
13 | 13 | use PhpList\RestBundle\Common\Validator\RequestValidator; |
14 | 14 | use PhpList\RestBundle\Messaging\Request\CreateMessageRequest; |
| 15 | +use PhpList\RestBundle\Messaging\Request\ResendMessageToListsRequest; |
15 | 16 | use PhpList\RestBundle\Messaging\Request\UpdateMessageRequest; |
16 | 17 | use PhpList\RestBundle\Messaging\Service\CampaignService; |
17 | 18 | use Symfony\Bridge\Doctrine\Attribute\MapEntity; |
@@ -405,4 +406,64 @@ public function sendMessage( |
405 | 406 |
|
406 | 407 | return $this->json($this->campaignService->getMessage($message), Response::HTTP_OK); |
407 | 408 | } |
| 409 | + |
| 410 | + #[Route('/{messageId}/resend', name: 'resend_campaign', requirements: ['messageId' => '\d+'], methods: ['POST'])] |
| 411 | + #[OA\Post( |
| 412 | + path: '/api/v2/campaigns/{messageId}/resend', |
| 413 | + description: '🚧 **Status: Beta** – This method is under development. Avoid using in production. ' . |
| 414 | + 'Processes/sends campaign/message by id to specified mailing lists.', |
| 415 | + summary: 'Processes/sends campaign/message by id to lists.', |
| 416 | + requestBody: new OA\RequestBody( |
| 417 | + description: 'List ids to send this campaign to.', |
| 418 | + required: true, |
| 419 | + content: new OA\JsonContent(ref: '#/components/schemas/AdminAttributeDefinitionRequest') |
| 420 | + ), |
| 421 | + tags: ['campaigns'], |
| 422 | + parameters: [ |
| 423 | + new OA\Parameter( |
| 424 | + name: 'php-auth-pw', |
| 425 | + description: 'Session key obtained from login', |
| 426 | + in: 'header', |
| 427 | + required: true, |
| 428 | + schema: new OA\Schema(type: 'string') |
| 429 | + ), |
| 430 | + new OA\Parameter( |
| 431 | + name: 'messageId', |
| 432 | + description: 'message ID', |
| 433 | + in: 'path', |
| 434 | + required: true, |
| 435 | + schema: new OA\Schema(type: 'string') |
| 436 | + ) |
| 437 | + ], |
| 438 | + responses: [ |
| 439 | + new OA\Response( |
| 440 | + response: 200, |
| 441 | + description: 'Success', |
| 442 | + content: new OA\JsonContent(ref: '#/components/schemas/Message') |
| 443 | + ), |
| 444 | + new OA\Response( |
| 445 | + response: 403, |
| 446 | + description: 'Failure', |
| 447 | + content: new OA\JsonContent(ref: '#/components/schemas/UnauthorizedResponse') |
| 448 | + ) |
| 449 | + ] |
| 450 | + )] |
| 451 | + public function resendMessageToLists( |
| 452 | + Request $request, |
| 453 | + #[MapEntity(mapping: ['messageId' => 'id'])] ?Message $message = null |
| 454 | + ): JsonResponse { |
| 455 | + $this->requireAuthentication($request); |
| 456 | + if ($message === null) { |
| 457 | + throw $this->createNotFoundException('Campaign not found.'); |
| 458 | + } |
| 459 | + |
| 460 | + /** @var ResendMessageToListsRequest $resendToListsRequest */ |
| 461 | + $resendToListsRequest = $this->validator->validate($request, ResendMessageToListsRequest::class); |
| 462 | + |
| 463 | + $this->messageBus->dispatch( |
| 464 | + new SyncCampaignProcessorMessage($message->getId(), $resendToListsRequest->listIds) |
| 465 | + ); |
| 466 | + |
| 467 | + return $this->json($this->campaignService->getMessage($message), Response::HTTP_OK); |
| 468 | + } |
408 | 469 | } |
0 commit comments