Skip to content

Commit c678b30

Browse files
committed
Filter campaigns by subject
Fix: flush entity manager after updates
1 parent 4467266 commit c678b30

3 files changed

Lines changed: 21 additions & 19 deletions

File tree

src/Messaging/Controller/CampaignController.php

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,14 @@ public function __construct(
6666
in: 'query',
6767
required: false,
6868
schema: new OA\Schema(type: 'integer', default: 25, maximum: 100, minimum: 1)
69-
)
69+
),
70+
new OA\Parameter(
71+
name: 'subject',
72+
description: 'Filter campaigns by subject (partial match)',
73+
in: 'query',
74+
required: false,
75+
schema: new OA\Schema(type: 'string', maxLength: 50)
76+
),
7077
],
7178
responses: [
7279
new OA\Response(
@@ -96,7 +103,7 @@ public function getMessages(Request $request): JsonResponse
96103
$authUser = $this->requireAuthentication($request);
97104

98105
return $this->json(
99-
$this->campaignService->getMessages($request, $authUser),
106+
$this->campaignService->getMessages(request: $request, administrator: $authUser),
100107
Response::HTTP_OK
101108
);
102109
}
@@ -148,10 +155,10 @@ public function getMessage(
148155
Request $request,
149156
#[MapEntity(mapping: ['messageId' => 'id'])] ?Message $message = null
150157
): JsonResponse {
158+
$this->requireAuthentication($request);
151159
if ($message === null) {
152160
throw $this->createNotFoundException('Campaign not found.');
153161
}
154-
$this->requireAuthentication($request);
155162

156163
return $this->json($this->campaignService->getMessage($message), Response::HTTP_OK);
157164
}

src/Messaging/Controller/ListMessageController.php

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -27,25 +27,16 @@
2727
#[Route('/list-messages', name: 'list_message_')]
2828
class ListMessageController extends BaseController
2929
{
30-
private ListMessageManager $listMessageManager;
31-
private ListMessageNormalizer $listMessageNormalizer;
32-
private SubscriberListNormalizer $subscriberListNormalizer;
33-
private MessageNormalizer $messageNormalizer;
34-
3530
public function __construct(
36-
Authentication $authentication,
37-
RequestValidator $validator,
38-
ListMessageManager $listMessageManager,
39-
ListMessageNormalizer $listMessageNormalizer,
40-
SubscriberListNormalizer $subscriberListNormalizer,
41-
MessageNormalizer $messageNormalizer,
31+
protected Authentication $authentication,
32+
protected RequestValidator $validator,
33+
private readonly ListMessageManager $listMessageManager,
34+
private readonly ListMessageNormalizer $listMessageNormalizer,
35+
private readonly SubscriberListNormalizer $subscriberListNormalizer,
36+
private readonly MessageNormalizer $messageNormalizer,
4237
private readonly EntityManagerInterface $entityManager,
4338
) {
4439
parent::__construct($authentication, $validator);
45-
$this->listMessageManager = $listMessageManager;
46-
$this->listMessageNormalizer = $listMessageNormalizer;
47-
$this->subscriberListNormalizer = $subscriberListNormalizer;
48-
$this->messageNormalizer = $messageNormalizer;
4940
}
5041

5142
#[Route(
@@ -339,6 +330,7 @@ public function disassociateMessageFromList(
339330
}
340331

341332
$this->listMessageManager->removeAssociation($message, $subscriberList);
333+
$this->entityManager->flush();
342334

343335
return $this->json(null, Response::HTTP_NO_CONTENT);
344336
}
@@ -398,6 +390,7 @@ public function removeAllListAssociationsForMessage(
398390
}
399391

400392
$this->listMessageManager->removeAllListAssociationsForMessage($message);
393+
$this->entityManager->flush();
401394

402395
return $this->json(null, Response::HTTP_NO_CONTENT);
403396
}

src/Messaging/Service/CampaignService.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ public function __construct(
3030

3131
public function getMessages(Request $request, Administrator $administrator): array
3232
{
33-
$filter = (new MessageFilter())->setOwner($administrator);
33+
$filter = (new MessageFilter())
34+
->setOwner($administrator)
35+
->setSubject($request->query->get('subject'));
3436

3537
return $this->paginatedProvider->getPaginatedList(
3638
request: $request,

0 commit comments

Comments
 (0)