Skip to content

Commit ab87412

Browse files
committed
ISSUE-345: move logic to core
1 parent 1d412e5 commit ab87412

File tree

67 files changed

+216
-2189
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+216
-2189
lines changed

composer.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
},
3232
"require": {
3333
"php": "^8.1",
34-
"phplist/core": "v5.0.0-alpha6",
34+
"phplist/core": "dev-ISSUE-345",
3535
"friendsofsymfony/rest-bundle": "*",
3636
"symfony/test-pack": "^1.0",
3737
"symfony/process": "^6.4",

config/services/builders.yml

+5-5
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,22 @@ services:
44
autoconfigure: true
55
public: false
66

7-
PhpList\RestBundle\Service\Builder\MessageBuilder:
7+
PhpList\Core\Domain\Service\Builder\MessageBuilder:
88
autowire: true
99
autoconfigure: true
1010

11-
PhpList\RestBundle\Service\Builder\MessageFormatBuilder:
11+
PhpList\Core\Domain\Service\Builder\MessageFormatBuilder:
1212
autowire: true
1313
autoconfigure: true
1414

15-
PhpList\RestBundle\Service\Builder\MessageScheduleBuilder:
15+
PhpList\Core\Domain\Service\Builder\MessageScheduleBuilder:
1616
autowire: true
1717
autoconfigure: true
1818

19-
PhpList\RestBundle\Service\Builder\MessageContentBuilder:
19+
PhpList\Core\Domain\Service\Builder\MessageContentBuilder:
2020
autowire: true
2121
autoconfigure: true
2222

23-
PhpList\RestBundle\Service\Builder\MessageOptionsBuilder:
23+
PhpList\Core\Domain\Service\Builder\MessageOptionsBuilder:
2424
autowire: true
2525
autoconfigure: true

config/services/managers.yml

+8-8
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,34 @@ services:
44
autoconfigure: true
55
public: false
66

7-
PhpList\RestBundle\Service\Manager\SubscriberManager:
7+
PhpList\Core\Domain\Service\Manager\SubscriberManager:
88
autowire: true
99
autoconfigure: true
1010

11-
PhpList\RestBundle\Service\Manager\SessionManager:
11+
PhpList\Core\Domain\Service\Manager\SessionManager:
1212
autowire: true
1313
autoconfigure: true
1414

15-
PhpList\RestBundle\Service\Manager\SubscriberListManager:
15+
PhpList\Core\Domain\Service\Manager\SubscriberListManager:
1616
autowire: true
1717
autoconfigure: true
1818

19-
PhpList\RestBundle\Service\Manager\SubscriptionManager:
19+
PhpList\Core\Domain\Service\Manager\SubscriptionManager:
2020
autowire: true
2121
autoconfigure: true
2222

23-
PhpList\RestBundle\Service\Manager\MessageManager:
23+
PhpList\Core\Domain\Service\Manager\MessageManager:
2424
autowire: true
2525
autoconfigure: true
2626

27-
PhpList\RestBundle\Service\Manager\TemplateManager:
27+
PhpList\Core\Domain\Service\Manager\TemplateManager:
2828
autowire: true
2929
autoconfigure: true
3030

31-
PhpList\RestBundle\Service\Manager\TemplateImageManager:
31+
PhpList\Core\Domain\Service\Manager\TemplateImageManager:
3232
autowire: true
3333
autoconfigure: true
3434

35-
PhpList\RestBundle\Service\Manager\AdministratorManager:
35+
PhpList\Core\Domain\Service\Manager\AdministratorManager:
3636
autowire: true
3737
autoconfigure: true

config/services/validators.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,11 @@ services:
1919
autoconfigure: true
2020
tags: [ 'validator.constraint_validator' ]
2121

22-
PhpList\RestBundle\Validator\TemplateLinkValidator:
22+
PhpList\Core\Domain\Service\Validator\TemplateLinkValidator:
2323
autowire: true
2424
autoconfigure: true
2525

26-
PhpList\RestBundle\Validator\TemplateImageValidator:
26+
PhpList\Core\Domain\Service\Validator\TemplateImageValidator:
2727
autowire: true
2828
autoconfigure: true
2929

src/Controller/AdministratorController.php

+8-7
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66

77
use OpenApi\Attributes as OA;
88
use PhpList\Core\Domain\Model\Identity\Administrator;
9+
use PhpList\Core\Domain\Service\Manager\AdministratorManager;
910
use PhpList\Core\Security\Authentication;
1011
use PhpList\RestBundle\Entity\Request\CreateAdministratorRequest;
1112
use PhpList\RestBundle\Entity\Request\UpdateAdministratorRequest;
1213
use PhpList\RestBundle\Serializer\AdministratorNormalizer;
13-
use PhpList\RestBundle\Service\Manager\AdministratorManager;
1414
use PhpList\RestBundle\Service\Provider\PaginatedDataProvider;
1515
use PhpList\RestBundle\Validator\RequestValidator;
1616
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
@@ -135,9 +135,10 @@ public function createAdministrator(
135135
): JsonResponse {
136136
$this->requireAuthentication($request);
137137

138-
/** @var CreateAdministratorRequest $dto */
139-
$dto = $validator->validate($request, CreateAdministratorRequest::class);
140-
$administrator = $this->administratorManager->createAdministrator($dto);
138+
/** @var CreateAdministratorRequest $createAdministratorRequest */
139+
$createAdministratorRequest = $validator->validate($request, CreateAdministratorRequest::class);
140+
141+
$administrator = $this->administratorManager->createAdministrator($createAdministratorRequest->getDto());
141142
$json = $normalizer->normalize($administrator, 'json');
142143

143144
return $this->json($json, Response::HTTP_CREATED);
@@ -224,9 +225,9 @@ public function updateAdministrator(
224225
if (!$administrator) {
225226
throw $this->createNotFoundException('Administrator not found.');
226227
}
227-
/** @var UpdateAdministratorRequest $dto */
228-
$dto = $this->validator->validate($request, UpdateAdministratorRequest::class);
229-
$this->administratorManager->updateAdministrator($administrator, $dto);
228+
/** @var UpdateAdministratorRequest $updateAdministratorRequest */
229+
$updateAdministratorRequest = $this->validator->validate($request, UpdateAdministratorRequest::class);
230+
$this->administratorManager->updateAdministrator($administrator, $updateAdministratorRequest->getDto());
230231

231232
return $this->json(null, Response::HTTP_OK);
232233
}

src/Controller/CampaignController.php

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@
55
namespace PhpList\RestBundle\Controller;
66

77
use OpenApi\Attributes as OA;
8-
use PhpList\Core\Domain\Filter\MessageFilter;
8+
use PhpList\Core\Domain\Model\Dto\Filter\MessageFilter;
99
use PhpList\Core\Domain\Model\Messaging\Message;
10+
use PhpList\Core\Domain\Service\Manager\MessageManager;
1011
use PhpList\Core\Security\Authentication;
1112
use PhpList\RestBundle\Entity\Request\CreateMessageRequest;
1213
use PhpList\RestBundle\Entity\Request\UpdateMessageRequest;
1314
use PhpList\RestBundle\Serializer\MessageNormalizer;
14-
use PhpList\RestBundle\Service\Manager\MessageManager;
1515
use PhpList\RestBundle\Service\Provider\PaginatedDataProvider;
1616
use PhpList\RestBundle\Validator\RequestValidator;
1717
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
@@ -218,7 +218,7 @@ public function createMessage(Request $request, MessageNormalizer $normalizer):
218218

219219
/** @var CreateMessageRequest $createMessageRequest */
220220
$createMessageRequest = $this->validator->validate($request, CreateMessageRequest::class);
221-
$data = $this->messageManager->createMessage($createMessageRequest, $authUser);
221+
$data = $this->messageManager->createMessage($createMessageRequest->getDto(), $authUser);
222222

223223
return $this->json($normalizer->normalize($data), Response::HTTP_CREATED);
224224
}
@@ -291,7 +291,7 @@ public function updateMessage(
291291
}
292292
/** @var UpdateMessageRequest $updateMessageRequest */
293293
$updateMessageRequest = $this->validator->validate($request, UpdateMessageRequest::class);
294-
$data = $this->messageManager->updateMessage($updateMessageRequest, $message, $authUser);
294+
$data = $this->messageManager->updateMessage($updateMessageRequest->getDto(), $message, $authUser);
295295

296296
return $this->json($this->normalizer->normalize($data), Response::HTTP_OK);
297297
}

src/Controller/ListController.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66

77
use OpenApi\Attributes as OA;
88
use PhpList\Core\Domain\Model\Subscription\SubscriberList;
9+
use PhpList\Core\Domain\Service\Manager\SubscriberListManager;
910
use PhpList\Core\Security\Authentication;
1011
use PhpList\RestBundle\Entity\Request\CreateSubscriberListRequest;
1112
use PhpList\RestBundle\Serializer\SubscriberListNormalizer;
12-
use PhpList\RestBundle\Service\Manager\SubscriberListManager;
1313
use PhpList\RestBundle\Service\Provider\PaginatedDataProvider;
1414
use PhpList\RestBundle\Validator\RequestValidator;
1515
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
@@ -279,7 +279,7 @@ public function createList(Request $request, SubscriberListNormalizer $normalize
279279

280280
/** @var CreateSubscriberListRequest $subscriberListRequest */
281281
$subscriberListRequest = $this->validator->validate($request, CreateSubscriberListRequest::class);
282-
$data = $this->subscriberListManager->createSubscriberList($subscriberListRequest, $authUser);
282+
$data = $this->subscriberListManager->createSubscriberList($subscriberListRequest->getDto(), $authUser);
283283

284284
return $this->json($normalizer->normalize($data), Response::HTTP_CREATED);
285285
}

src/Controller/ListMembersController.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace PhpList\RestBundle\Controller;
66

77
use OpenApi\Attributes as OA;
8-
use PhpList\Core\Domain\Filter\SubscriberFilter;
8+
use PhpList\Core\Domain\Model\Dto\Filter\SubscriberFilter;
99
use PhpList\Core\Domain\Model\Subscription\Subscriber;
1010
use PhpList\Core\Domain\Model\Subscription\SubscriberList;
1111
use PhpList\Core\Security\Authentication;

src/Controller/SessionController.php

+5-2
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66

77
use OpenApi\Attributes as OA;
88
use PhpList\Core\Domain\Model\Identity\AdministratorToken;
9+
use PhpList\Core\Domain\Service\Manager\SessionManager;
910
use PhpList\Core\Security\Authentication;
1011
use PhpList\RestBundle\Entity\Request\CreateSessionRequest;
1112
use PhpList\RestBundle\Serializer\AdministratorTokenNormalizer;
12-
use PhpList\RestBundle\Service\Manager\SessionManager;
1313
use PhpList\RestBundle\Validator\RequestValidator;
1414
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
1515
use Symfony\Component\HttpFoundation\JsonResponse;
@@ -90,7 +90,10 @@ public function createSession(
9090
): JsonResponse {
9191
/** @var CreateSessionRequest $createSessionRequest */
9292
$createSessionRequest = $this->validator->validate($request, CreateSessionRequest::class);
93-
$token = $this->sessionManager->createSession($createSessionRequest);
93+
$token = $this->sessionManager->createSession(
94+
$createSessionRequest->loginName,
95+
$createSessionRequest->password
96+
);
9497

9598
$json = $normalizer->normalize($token, 'json');
9699

src/Controller/SubscriberController.php

+5-5
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@
66

77
use OpenApi\Attributes as OA;
88
use PhpList\Core\Domain\Model\Subscription\Subscriber;
9+
use PhpList\Core\Domain\Service\Manager\SubscriberManager;
910
use PhpList\Core\Security\Authentication;
1011
use PhpList\RestBundle\Entity\Request\CreateSubscriberRequest;
1112
use PhpList\RestBundle\Entity\Request\UpdateSubscriberRequest;
1213
use PhpList\RestBundle\Serializer\SubscriberNormalizer;
13-
use PhpList\RestBundle\Service\Manager\SubscriberManager;
1414
use PhpList\RestBundle\Validator\RequestValidator;
1515
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
1616
use Symfony\Component\HttpFoundation\JsonResponse;
@@ -98,7 +98,7 @@ public function createSubscriber(Request $request): JsonResponse
9898

9999
/** @var CreateSubscriberRequest $subscriberRequest */
100100
$subscriberRequest = $this->validator->validate($request, CreateSubscriberRequest::class);
101-
$subscriber = $this->subscriberManager->createSubscriber($subscriberRequest);
101+
$subscriber = $this->subscriberManager->createSubscriber($subscriberRequest->getDto());
102102

103103
return $this->json(
104104
$this->subscriberNormalizer->normalize($subscriber, 'json'),
@@ -175,9 +175,9 @@ public function updateSubscriber(
175175
if (!$subscriber) {
176176
throw $this->createNotFoundException('Subscriber not found.');
177177
}
178-
/** @var UpdateSubscriberRequest $dto */
179-
$dto = $this->validator->validate($request, UpdateSubscriberRequest::class);
180-
$subscriber = $this->subscriberManager->updateSubscriber($dto);
178+
/** @var UpdateSubscriberRequest $updateSubscriberRequest */
179+
$updateSubscriberRequest = $this->validator->validate($request, UpdateSubscriberRequest::class);
180+
$subscriber = $this->subscriberManager->updateSubscriber($updateSubscriberRequest->getDto());
181181

182182
return $this->json($this->subscriberNormalizer->normalize($subscriber, 'json'), Response::HTTP_OK);
183183
}

src/Controller/SubscriptionController.php

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66

77
use OpenApi\Attributes as OA;
88
use PhpList\Core\Domain\Model\Subscription\SubscriberList;
9+
use PhpList\Core\Domain\Service\Manager\SubscriptionManager;
910
use PhpList\Core\Security\Authentication;
1011
use PhpList\RestBundle\Entity\Request\SubscriptionRequest;
1112
use PhpList\RestBundle\Serializer\SubscriptionNormalizer;
12-
use PhpList\RestBundle\Service\Manager\SubscriptionManager;
1313
use PhpList\RestBundle\Validator\RequestValidator;
1414
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
1515
use Symfony\Component\HttpFoundation\JsonResponse;

src/Controller/TemplateController.php

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66

77
use OpenApi\Attributes as OA;
88
use PhpList\Core\Domain\Model\Messaging\Template;
9+
use PhpList\Core\Domain\Service\Manager\TemplateManager;
910
use PhpList\Core\Security\Authentication;
1011
use PhpList\RestBundle\Entity\Request\CreateTemplateRequest;
1112
use PhpList\RestBundle\Serializer\TemplateNormalizer;
12-
use PhpList\RestBundle\Service\Manager\TemplateManager;
1313
use PhpList\RestBundle\Service\Provider\PaginatedDataProvider;
1414
use PhpList\RestBundle\Validator\RequestValidator;
1515
use Symfony\Bridge\Doctrine\Attribute\MapEntity;
@@ -264,7 +264,7 @@ public function createTemplates(Request $request): JsonResponse
264264
$createTemplateRequest = $this->validator->validate($request, CreateTemplateRequest::class);
265265

266266
return $this->json(
267-
$this->normalizer->normalize($this->templateManager->create($createTemplateRequest)),
267+
$this->normalizer->normalize($this->templateManager->create($createTemplateRequest->getDto())),
268268
Response::HTTP_CREATED
269269
);
270270
}

src/Entity/Dto/MessageContext.php

-25
This file was deleted.

src/Entity/Request/CreateAdministratorRequest.php

+11
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use PhpList\Core\Domain\Model\Identity\Administrator;
88
use Symfony\Component\Validator\Constraints as Assert;
99
use PhpList\RestBundle\Validator\Constraint as CustomAssert;
10+
use PhpList\Core\Domain\Model\Identity\Dto\CreateAdministratorDto;
1011

1112
class CreateAdministratorRequest implements RequestInterface
1213
{
@@ -27,4 +28,14 @@ class CreateAdministratorRequest implements RequestInterface
2728
#[Assert\NotNull]
2829
#[Assert\Type('bool')]
2930
public bool $superUser = false;
31+
32+
public function getDto(): CreateAdministratorDto
33+
{
34+
return new CreateAdministratorDto(
35+
$this->loginName,
36+
$this->password,
37+
$this->email,
38+
$this->superUser
39+
);
40+
}
3041
}

src/Entity/Request/CreateMessageRequest.php

+14
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
namespace PhpList\RestBundle\Entity\Request;
66

7+
use PhpList\Core\Domain\Model\Messaging\Dto\CreateMessageDto;
8+
use PhpList\Core\Domain\Model\Messaging\Dto\MessageDtoInterface;
79
use PhpList\RestBundle\Entity\Request\Message\MessageContentRequest;
810
use PhpList\RestBundle\Entity\Request\Message\MessageFormatRequest;
911
use PhpList\RestBundle\Entity\Request\Message\MessageMetadataRequest;
@@ -36,4 +38,16 @@ class CreateMessageRequest implements RequestInterface
3638

3739
#[CustomAssert\TemplateExists]
3840
public ?int $templateId;
41+
42+
public function getDto(): MessageDtoInterface
43+
{
44+
return new CreateMessageDto(
45+
content: $this->content->getDto(),
46+
format: $this->format->getDto(),
47+
metadata: $this->metadata->getDto(),
48+
options: $this->options->getDto(),
49+
schedule: $this->schedule->getDto(),
50+
templateId: $this->templateId,
51+
);
52+
}
3953
}

src/Entity/Request/CreateSessionRequest.php

+5
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,9 @@ class CreateSessionRequest implements RequestInterface
1515
#[Assert\NotBlank]
1616
#[Assert\Type(type: 'string')]
1717
public string $password;
18+
19+
public function getDto(): CreateSessionRequest
20+
{
21+
return $this;
22+
}
1823
}

src/Entity/Request/CreateSubscriberListRequest.php

+11
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace PhpList\RestBundle\Entity\Request;
66

7+
use PhpList\Core\Domain\Model\Subscription\Dto\CreateSubscriberListDto;
78
use Symfony\Component\Validator\Constraints as Assert;
89

910
class CreateSubscriberListRequest implements RequestInterface
@@ -17,4 +18,14 @@ class CreateSubscriberListRequest implements RequestInterface
1718
public ?int $listPosition = null;
1819

1920
public ?string $description = null;
21+
22+
public function getDto(): CreateSubscriberListDto
23+
{
24+
return new CreateSubscriberListDto(
25+
name: $this->name,
26+
isPublic: $this->public,
27+
listPosition: $this->listPosition,
28+
description: $this->description,
29+
);
30+
}
2031
}

0 commit comments

Comments
 (0)