diff --git a/src/Actions/CountFriday13Action.php b/src/Actions/CountFriday13Action.php new file mode 100644 index 0000000000000000000000000000000000000000..c7986cd84ca2880d10e25b391da5d684f6e02888 --- /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 new file mode 100644 index 0000000000000000000000000000000000000000..dc3e7418aa51adf6719b9ca799e9f6381693f8fb --- /dev/null +++ b/src/Controller/CountFriday13Controller.php @@ -0,0 +1,25 @@ +<?php + +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\Response; +use Symfony\Component\Routing\Attribute\Route; + +class CountFriday13Controller extends AbstractController +{ + /** + * git Контроллер вернет вÑе пÑтницы 13 в году иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ countFriday13 функцию + * @param AllFri13Request $request + * @param CountFriday13Action $action + * @return Response + */ + #[Route('/count/friday13', name: 'app_count_friday13')] + public function index(AllFri13Request $request, CountFriday13Action $action): Response + { + return new JsonResponse($action->act($request->serialise())); + } +} diff --git a/src/Requests/AllFri13Request.php b/src/Requests/AllFri13Request.php new file mode 100644 index 0000000000000000000000000000000000000000..d98cebb598d5216595bfd7c89d2b6e2b91662619 --- /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