Skip to content
Open

Dev #171

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,7 @@ jobs:
export PHPLIST_DATABASE_PASSWORD=${{ env.DB_PASSWORD }}
export PHPLIST_DATABASE_PORT=${{ job.services.mysql.ports['3306'] }}
export PHPLIST_DATABASE_HOST=127.0.0.1
export PHPLIST_DATABASE_PATH=
vendor/bin/phpunit tests/Integration/
continue-on-error: ${{matrix.php-versions == '8.0' }} # [temp-php8]
- name: Running static analysis
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,5 @@
/var/
/vendor/
.phpunit.result.cache
.env
.env.dist
3 changes: 2 additions & 1 deletion composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
},
"require": {
"php": "^8.1",
"phplist/core": "dev-main",
"phplist/core": "dev-dev",
Comment thread
TatevikGr marked this conversation as resolved.
"friendsofsymfony/rest-bundle": "*",
"symfony/test-pack": "^1.0",
"symfony/process": "^6.4",
Expand Down Expand Up @@ -85,6 +85,7 @@
"PhpList\\Core\\Composer\\ScriptHandler::createGeneralConfiguration",
"PhpList\\Core\\Composer\\ScriptHandler::createBundleConfiguration",
"PhpList\\Core\\Composer\\ScriptHandler::createRoutesConfiguration",
"PhpList\\Core\\Composer\\ScriptHandler::createDotenvConfiguration",
"PhpList\\Core\\Composer\\ScriptHandler::createParametersConfiguration",
"PhpList\\Core\\Composer\\ScriptHandler::clearAllCaches"
],
Expand Down
3 changes: 2 additions & 1 deletion phpunit.xml.dist
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,11 @@
xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.2/phpunit.xsd"
backupGlobals="false"
colors="true"
bootstrap="vendor/autoload.php"
bootstrap="tests/bootstrap.php"
>
<php>
<ini name="error_reporting" value="-1"/>
<server name="KERNEL_CLASS" value="PhpList\Core\Core\ApplicationKernel"/>
<server name="APP_ENV" value="test" force="true"/>
</php>
</phpunit>
2 changes: 1 addition & 1 deletion src/Common/EventListener/ExceptionListener.php
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ public function onKernelException(ExceptionEvent $event): void
new JsonResponse([
'message' => 'Validation failed',
'errors' => $this->parseFlatValidationMessage($exception->getMessage()),
], 422)
], 422)
);

return;
Expand Down
15 changes: 15 additions & 0 deletions src/Messaging/Controller/CampaignController.php
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,21 @@ public function __construct(
required: false,
schema: new OA\Schema(type: 'string', maxLength: 50)
),
new OA\Parameter(
name: 'status',
description: 'Filter by one or more comma-separated statuses: ' .
'draft, prepared, submitted, inprocess, sent, suspended',
in: 'query',
required: false,
schema: new OA\Schema(type: 'string')
),
new OA\Parameter(
name: 'sort',
description: 'Sort direction by campaign id - desc returns newest campaigns first',
in: 'query',
required: false,
schema: new OA\Schema(type: 'string', default: 'asc', enum: ['asc', 'desc'])
),
],
responses: [
new OA\Response(
Expand Down
122 changes: 62 additions & 60 deletions src/Messaging/Controller/TemplateController.php
Original file line number Diff line number Diff line change
Expand Up @@ -116,6 +116,68 @@ className: Template::class,
);
}

#[Route('', name: 'create', methods: ['POST'])]
#[OA\Post(
path: '/api/v2/templates',
description: '🚧 **Status: Beta** – This method is under development. Avoid using in production. ' .
'Returns a JSON response of created template.',
summary: 'Create a new template.',
requestBody: new OA\RequestBody(
description: 'Pass session credentials',
required: true,
content: new OA\MediaType(
mediaType: 'multipart/form-data',
schema: new OA\Schema(ref: '#/components/schemas/CreateTemplateRequest')
)
),
tags: ['templates'],
parameters: [
new OA\Parameter(
name: 'php-auth-pw',
description: 'Session key obtained from login',
in: 'header',
required: true,
schema: new OA\Schema(type: 'string')
),
],
responses: [
new OA\Response(
response: 201,
description: 'Success',
content: new OA\JsonContent(ref: '#/components/schemas/Template')
),
new OA\Response(
response: 403,
description: 'Failure',
content: new OA\JsonContent(ref: '#/components/schemas/UnauthorizedResponse')
),
new OA\Response(
response: 409,
description: 'Failure',
content: new OA\JsonContent(ref: '#/components/schemas/AlreadyExistsResponse')
),
new OA\Response(
response: 422,
description: 'Failure',
content: new OA\JsonContent(ref: '#/components/schemas/ValidationErrorResponse')
Comment thread
coderabbitai[bot] marked this conversation as resolved.
),
]
)]
public function createTemplates(Request $request): JsonResponse
{
$this->requireAuthentication($request);

/** @var CreateTemplateRequest $createTemplateRequest */
$createTemplateRequest = $this->validator->validate($request, CreateTemplateRequest::class);
$template = $this->templateManager->create($createTemplateRequest->getDto());
$this->entityManager->flush();

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

#[Route('/defaults', name: 'get_defaults', methods: ['GET'])]
#[OA\Get(
path: '/api/v2/templates/defaults',
Expand Down Expand Up @@ -263,66 +325,6 @@ public function getTemplate(
return $this->json($this->normalizer->normalize($template), Response::HTTP_OK);
}

#[Route('', name: 'create', methods: ['POST'])]
#[OA\Post(
path: '/api/v2/templates',
description: '🚧 **Status: Beta** – This method is under development. Avoid using in production. ' .
'Returns a JSON response of created template.',
summary: 'Create a new template.',
requestBody: new OA\RequestBody(
description: 'Pass session credentials',
required: true,
content: new OA\MediaType(
mediaType: 'multipart/form-data',
schema: new OA\Schema(ref: '#/components/schemas/UpdateTemplateRequest')
)
),
tags: ['templates'],
parameters: [
new OA\Parameter(
name: 'php-auth-pw',
description: 'Session key obtained from login',
in: 'header',
required: true,
schema: new OA\Schema(type: 'string')
),
],
responses: [
new OA\Response(
response: 201,
description: 'Success',
content: new OA\JsonContent(
type: 'array',
items: new OA\Items(ref: '#/components/schemas/Template')
)
),
new OA\Response(
response: 403,
description: 'Failure',
content: new OA\JsonContent(ref: '#/components/schemas/UnauthorizedResponse')
),
new OA\Response(
response: 422,
description: 'Failure',
content: new OA\JsonContent(ref: '#/components/schemas/ValidationErrorResponse')
),
]
)]
public function createTemplates(Request $request): JsonResponse
{
$this->requireAuthentication($request);

/** @var CreateTemplateRequest $createTemplateRequest */
$createTemplateRequest = $this->validator->validate($request, CreateTemplateRequest::class);
$template = $this->templateManager->create($createTemplateRequest->getDto());
$this->entityManager->flush();

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

#[Route('/{templateId}', name: 'update', methods: ['PUT'])]
#[OA\Put(
path: '/api/v2/templates/{templateId}',
Expand Down
4 changes: 2 additions & 2 deletions src/Messaging/Request/Message/MessageMetadataRequest.php
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
new OA\Property(
property: 'status',
type: 'string',
enum: ['draft', 'sent', 'prepared', 'submitted', 'suspended', 'requeued'],
enum: ['draft', 'sent', 'prepared', 'submitted', 'suspended'],
example: 'draft'
),
],
Expand All @@ -26,7 +26,7 @@ enum: ['draft', 'sent', 'prepared', 'submitted', 'suspended', 'requeued'],
class MessageMetadataRequest implements RequestDtoInterface, RequestInterface
{
#[Assert\NotBlank]
#[Assert\Choice(['draft', 'sent', 'prepared', 'submitted', 'suspended', 'requeued'])]
#[Assert\Choice(['draft', 'sent', 'prepared', 'submitted', 'suspended'])]
public string $status;

/**
Expand Down
8 changes: 7 additions & 1 deletion src/Messaging/Service/CampaignService.php
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,13 @@ public function getMessages(Request $request, Administrator $administrator): arr
{
$filter = (new MessageFilter())
->setOwner($administrator)
->setSubject($request->query->get('subject'));
->setSubject($request->query->get('subject'))
->setStatus($request->query->get('status'));

$sort = $request->query->get('sort');
if (in_array($sort, ['asc', 'desc'], true)) {
$filter->setSortOrder($sort);
}

return $this->paginatedProvider->getPaginatedList(
request: $request,
Expand Down
Loading
Loading