diff --git a/src/Controller/HomeController.php b/src/Controller/HomeController.php index d2e2755c82b4b351e816f7fa93d987d147bf0f4c..83f8111191b9fab4323d95932c79ab7976a20252 100644 --- a/src/Controller/HomeController.php +++ b/src/Controller/HomeController.php @@ -8,6 +8,8 @@ use App\Requests\{ SearchRequest, UniqElementsRequest, MenuRequest, + HowDaysToNyRequest, + CountFriday13Request, DiffDaysRequest }; use DateTimeImmutable; @@ -49,34 +51,22 @@ class HomeController extends AbstractController return $this->json($result); } - #[Route( - '/howDaysToNy/{day}/{month}/{year}', - name: 'howDaysToNy', - requirements: [ - 'day' => '(?<!-)(?<!\d)\d+', - 'month' => '(?<!-)(?<!\d)\d+', - 'year' => '(?<!-)(?<!\d)\d+' - ], - methods: ['GET'] - )] - public function howDaysToNy(int $day, int $month, int $year): Response + #[Route('/howDaysToNy', name: 'howDaysToNy', methods: ['GET'])] + public function howDaysToNy(HowDaysToNyRequest $request): Response { - $dateAsString = $year . "-" . $month . "-" . $day; + $date = $request->getRequest()->get('date'); try { - $result = $this->functions->howDaysToNy(new DateTimeImmutable($dateAsString)); + $result = $this->functions->howDaysToNy(new DateTimeImmutable($date)); } catch (\Exception $e) { return new Response($e->getMessage()); } return $this->json(["Days before NY:" => $result]); } - #[Route( - '/countFriday13/{year}', - name: 'countFriday13', - requirements: ['year' => '(?<!-)(?<!\d)\d+'], - methods: ['GET'])] - public function countFriday13(int $year): Response + #[Route('/countFriday13', name: 'countFriday13', methods: ['GET'])] + public function countFriday13(CountFriday13Request $request): Response { + $year = $request->getRequest()->get('year'); $fridays = array(); try { foreach ($this->functions->countFriday13($year) as $date) { @@ -88,7 +78,7 @@ class HomeController extends AbstractController return $this->json($fridays); } - #[Route('/diffDays/', name: 'diffDays')] // 01-01-2024 + #[Route('/diffDays', name: 'diffDays')] // 01-01-2024 public function diffDays(DiffDaysRequest $request): Response { try { diff --git a/src/Requests/CountFriday13Request.php b/src/Requests/CountFriday13Request.php new file mode 100644 index 0000000000000000000000000000000000000000..e34f1b85da36cf2aaf57490d1f23ccdfaef3925c --- /dev/null +++ b/src/Requests/CountFriday13Request.php @@ -0,0 +1,21 @@ +<?php + +namespace App\Requests; + +use Symfony\Component\Validator\Constraints as Assert; + +class CountFriday13Request extends BaseRequest +{ + #[Assert\Type('int')] + #[Assert\Positive] + public int $year; + + protected function populate(): void + { + foreach ($this->getRequest()->query->all() as $property => $value) { + if (property_exists($this, $property)) { + $this->{$property} = $value; + } + } + } +} \ No newline at end of file diff --git a/src/Requests/HowDaysToNyRequest.php b/src/Requests/HowDaysToNyRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..c786942ac2e6cf8c00e98738d45f4e13ed52b3bb --- /dev/null +++ b/src/Requests/HowDaysToNyRequest.php @@ -0,0 +1,11 @@ +<?php + +namespace App\Requests; + +use Symfony\Component\Validator\Constraints as Assert; + +class HowDaysToNyRequest extends BaseRequest +{ + #[Assert\Type('date')] + public $date; +}