From e94777b54b09a93ce447332191aba736dee7ef25 Mon Sep 17 00:00:00 2001
From: Akex <a.plokhikh.sas@gmail.com>
Date: Tue, 9 Apr 2024 00:27:11 +0500
Subject: [PATCH] make controller

---
 src/Controller/HowDaysToNYController.php | 30 ++++++++++++++++++++++++
 src/Repository/HowDaysToNYRepository.php | 19 +++++++++++++++
 2 files changed, 49 insertions(+)
 create mode 100644 src/Controller/HowDaysToNYController.php
 create mode 100644 src/Repository/HowDaysToNYRepository.php

diff --git a/src/Controller/HowDaysToNYController.php b/src/Controller/HowDaysToNYController.php
new file mode 100644
index 0000000..2166b8b
--- /dev/null
+++ b/src/Controller/HowDaysToNYController.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace App\Controller;
+
+use DateTimeImmutable;
+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\howDaysToNy;
+
+class HowDaysToNYController extends AbstractController
+{
+    /**
+     * Контролер рассчитывает кол-во дней до нового года используюя howDaysToNy
+     * @param Request $request
+     * @return Response
+     * @throws \Exception
+     */
+    #[Route('/howdaystony', name: 'app_how_days_to_n_y')]
+    public function index(Request $request): Response
+    {
+        $date = $request->toArray()['date'];
+
+        $return = howDaysToNy(new DateTimeImmutable($date, null));
+
+        return new JsonResponse($return, Response::HTTP_OK);
+    }
+}
diff --git a/src/Repository/HowDaysToNYRepository.php b/src/Repository/HowDaysToNYRepository.php
new file mode 100644
index 0000000..90ab47a
--- /dev/null
+++ b/src/Repository/HowDaysToNYRepository.php
@@ -0,0 +1,19 @@
+<?php
+namespace App\Repository;
+
+use DateTime;
+use DateTimeImmutable;
+
+/**
+ * Функция рассчитывает кол-во дней до нового года
+ * @param DateTimeImmutable $date дата от которой, необходимо рассчитать кол-во дней
+ * @return int
+ */
+function howDaysToNy(DateTimeImmutable $date): int {
+
+    $nextYear = (int)$date->format('Y') + 1;
+    $dateOfNY = (new DateTime())
+        ->setDate($nextYear, 01, 01);
+
+    return $dateOfNY->diff($date)->format('%a');
+}
-- 
GitLab