From 2e9d064e336391d342f3c5da40f713c1da181120 Mon Sep 17 00:00:00 2001 From: "Alex. Plokhikh" <a.plohih@iqdev.digital> Date: Tue, 16 Apr 2024 02:45:09 +0500 Subject: [PATCH] add controller | action | request --- src/Actions/CountFriday13Action.php | 27 ++++++++++++++++++++++ src/Controller/CountFriday13Controller.php | 15 +++++------- src/Repository/CountFriday13Repository.php | 23 ------------------ src/Requests/AllFri13Request.php | 21 +++++++++++++++++ 4 files changed, 54 insertions(+), 32 deletions(-) create mode 100644 src/Actions/CountFriday13Action.php delete mode 100644 src/Repository/CountFriday13Repository.php create mode 100644 src/Requests/AllFri13Request.php diff --git a/src/Actions/CountFriday13Action.php b/src/Actions/CountFriday13Action.php new file mode 100644 index 0000000..c7986cd --- /dev/null +++ b/src/Actions/CountFriday13Action.php @@ -0,0 +1,27 @@ +<?php + +namespace App\Actions; + +use DateTimeImmutable; + +class CountFriday13Action +{ + /** + * Вернет вÑе пÑтницы 13 в году + * @param int $year год, в котором необходимо произвеÑти раÑчет + * @return DateTimeImmutable[] + */ + public function act(int $year): array + { + $AllFri13 = []; + + for ($i = 1; $i <= 12; $i++) { + $next13 = (new DateTimeImmutable())->setDate($year, $i, 13); + + if ($next13->format("D") === "Fri") { + $AllFri13[] = $next13; + } + } + return $AllFri13; + } +} diff --git a/src/Controller/CountFriday13Controller.php b/src/Controller/CountFriday13Controller.php index 88e200c..dc3e741 100644 --- a/src/Controller/CountFriday13Controller.php +++ b/src/Controller/CountFriday13Controller.php @@ -2,27 +2,24 @@ namespace App\Controller; +use App\Actions\CountFriday13Action; +use App\Requests\AllFri13Request; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; -use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; -use function App\Repository\countFriday13; class CountFriday13Controller extends AbstractController { /** * git Контроллер вернет вÑе пÑтницы 13 в году иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ countFriday13 функцию - * @param Request $request + * @param AllFri13Request $request + * @param CountFriday13Action $action * @return Response */ #[Route('/count/friday13', name: 'app_count_friday13')] - public function index(Request $request): Response + public function index(AllFri13Request $request, CountFriday13Action $action): Response { - $year = $request->toArray()['year']; - - $returnableArray = countFriday13($year); - - return new JsonResponse($returnableArray, Response::HTTP_OK); + return new JsonResponse($action->act($request->serialise())); } } diff --git a/src/Repository/CountFriday13Repository.php b/src/Repository/CountFriday13Repository.php deleted file mode 100644 index 8d3e0d7..0000000 --- a/src/Repository/CountFriday13Repository.php +++ /dev/null @@ -1,23 +0,0 @@ -<?php - -namespace App\Repository; -use DateTimeImmutable; - -/** - * Вернет вÑе пÑтницы 13 в году - * @param int $yaer год, в котором необходимо произвеÑти раÑчет - * @return DateTimeImmutable[] - */ -function countFriday13(int $year): iterable { - $date = new DateTimeImmutable(); - $AllFri13 = []; - - for ($i = 1; $i<=12; $i++ ){ - $next13 = $date->setDate($year, $i, 13); - - if ($next13->format("D") === 'Fri'){ - $AllFri13[] = $next13; - } - } - return $AllFri13; -} diff --git a/src/Requests/AllFri13Request.php b/src/Requests/AllFri13Request.php new file mode 100644 index 0000000..d98cebb --- /dev/null +++ b/src/Requests/AllFri13Request.php @@ -0,0 +1,21 @@ +<?php + +namespace App\Requests; + +use Symfony\Component\Validator\Constraints\Positive; +use Symfony\Component\Validator\Constraints\Type; + +class AllFri13Request extends BaseRequest +{ + #[Type('integer')] + #[Positive] + public $year; + + /** + * @return mixed + */ + public function serialise(): int + { + return (int) $this->year; + } +} \ No newline at end of file -- GitLab