From 3c23e0e5f0c36c1647607580d3ea7f2de1065b25 Mon Sep 17 00:00:00 2001 From: n3wborn Date: Mon, 11 Sep 2023 22:41:59 +0200 Subject: [PATCH] feat: do not edit/show archived data --- src/Service/Project/Finder.php | 9 +++++++-- src/Service/Project/Handler.php | 2 +- src/Service/Project/Helper.php | 8 ++++++-- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/Service/Project/Finder.php b/src/Service/Project/Finder.php index c53610c..3ffdd0b 100644 --- a/src/Service/Project/Finder.php +++ b/src/Service/Project/Finder.php @@ -14,9 +14,9 @@ public function __construct( ) { } - public function get(?Project $project): ?Project + public function get(Project $project): ?Project { - (null === $project) + $project->isArchived() && throw new NotFoundException(ApiMessages::translate(ApiMessages::PROJECT_NOT_FOUND)); return @@ -31,4 +31,9 @@ public function getAll(): array { return $this->projectRepository->findAll(); } + + public function getAllNotArchived(): array + { + return $this->projectRepository->findBy(['archivedAt' => null]); + } } diff --git a/src/Service/Project/Handler.php b/src/Service/Project/Handler.php index 67f6c7b..76a6ec9 100644 --- a/src/Service/Project/Handler.php +++ b/src/Service/Project/Handler.php @@ -42,7 +42,7 @@ public function handleGetProject(?Project $project): JsonResponse public function handleGetAllProjects(): JsonResponse { - $projects = $this->finder->getAll(); + $projects = $this->finder->getAllNotArchived(); $result = array_map(static fn (Project $project) => Mapper::fromEntityToJson($project), $projects); return new ApiResponse($result); diff --git a/src/Service/Project/Helper.php b/src/Service/Project/Helper.php index 33a448a..b3434fd 100644 --- a/src/Service/Project/Helper.php +++ b/src/Service/Project/Helper.php @@ -4,6 +4,7 @@ use App\Controller\ProjectController; use App\Entity\Project; +use App\Exception\BadDataException; use App\Exception\NotFoundException; use App\Helper\ApiMessages; use Doctrine\ORM\EntityManagerInterface; @@ -36,10 +37,13 @@ public static function generateEditSuccessMessage(Request $request): string : ApiMessages::PROJECT_CREATE_SUCCESS_MESSAGE; } - /** @throws NotFoundException */ - public function validateRequestResource(Request $request): void + /** @throws NotFoundException|BadDataException */ + public function validateRequestResource(Request $request, Project $project): void { (self::isEditRoute($request) && (null === $this->editSlugParamExists($request))) && throw new NotFoundException(ApiMessages::translate(ApiMessages::PROJECT_UNKNOWN)); + + $project->isArchived() + && throw new BadDataException(Validator::PROJECT_ALREADY_ARCHIVED); } }