diff --git a/src/Actions/HowDaysToNYAction.php b/src/Actions/HowDaysToNYAction.php new file mode 100644 index 0000000000000000000000000000000000000000..3c133ed921bc0eeaa7d38b13f083b3315a846786 --- /dev/null +++ b/src/Actions/HowDaysToNYAction.php @@ -0,0 +1,20 @@ +<?php + +namespace App\Actions; + +use DateTimeImmutable; + +class HowDaysToNYAction +{ + /** + * Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ñ€Ð°ÑÑчитывает кол-во дней до нового года + * @param DateTime $date дата от которой, необходимо раÑÑчитать кол-во дней + * @return int + */ + public function act(DateTimeImmutable $date): int + { + $dateOfNY = $date->modify('first day of Jan +1 year'); + + return (int) $dateOfNY->diff($date)->format('%a'); + } +} \ No newline at end of file diff --git a/src/Controller/HowDaysToNYController.php b/src/Controller/HowDaysToNYController.php new file mode 100644 index 0000000000000000000000000000000000000000..8311dcef842015f0f0fcbafea037d03fd26f89be --- /dev/null +++ b/src/Controller/HowDaysToNYController.php @@ -0,0 +1,25 @@ +<?php + +namespace App\Controller; + +use App\Actions\HowDaysToNYAction; +use App\Requests\BeforeNYDateRequest; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\HttpFoundation\JsonResponse; +use Symfony\Component\HttpFoundation\Response; +use Symfony\Component\Routing\Attribute\Route; + +class HowDaysToNYController extends AbstractController +{ + /** + * Контролер раÑÑчитывает кол-во дней до нового года иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑŽÑ howDaysToNy + * @param BeforeNYDateRequest $request + * @param HowDaysToNYAction $action + * @return Response + */ + #[Route('/howdaystony', name: 'app_how_days_to_n_y')] + public function index(BeforeNYDateRequest $request, HowDaysToNYAction $action): Response + { + return new JsonResponse($action->act($request->serialise())); + } +} diff --git a/src/Requests/BeforeNYDateRequest.php b/src/Requests/BeforeNYDateRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..445bc20f34656a0551f6a13947206872e4db6aa6 --- /dev/null +++ b/src/Requests/BeforeNYDateRequest.php @@ -0,0 +1,19 @@ +<?php + +namespace App\Requests; + +use DateTimeImmutable; +use Symfony\Component\Validator\Constraints\Date; +use Symfony\Component\Validator\Constraints\Type; + +class BeforeNYDateRequest extends BaseRequest +{ + #[Date()] + #[Type('string')] + public $date; + + public function serialise(): mixed + { + return new DateTimeImmutable($this->date); + } +}