From 1d28ffa4cfb0285cace037d0d7e133af85e49fed Mon Sep 17 00:00:00 2001 From: "a.shamavov" <a.shamavov@iqdev.digital> Date: Fri, 12 Apr 2024 18:34:56 +0500 Subject: [PATCH] refactoring --- src/Controller/HomeController.php | 87 +++++++++++++++++++++++++------ 1 file changed, 70 insertions(+), 17 deletions(-) diff --git a/src/Controller/HomeController.php b/src/Controller/HomeController.php index d1d2d68..ab69119 100644 --- a/src/Controller/HomeController.php +++ b/src/Controller/HomeController.php @@ -2,9 +2,8 @@ namespace App\Controller; -use DateInterval; -use DatePeriod; -use DateTime; +use App\Action\Functions; +use App\Validation\{ArrayValidation, DateValidation}; use DateTimeImmutable; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; @@ -13,29 +12,83 @@ use Symfony\Component\Routing\Attribute\Route; class HomeController extends AbstractController { - private function countFriday13(int $year): iterable { - $stardDate = new DateTime("{$year}-01-01 Friday"); - $year += 1; - $endDate = new DateTime("{$year}-01-01"); - $interval = new DateInterval('P7D'); - foreach(new DatePeriod($stardDate, $interval, $endDate) as $day) { - yield new DateTimeImmutable($day->format("Y-m-d")); + private Functions $functions; + + public function __construct(Functions $functions) + { + $this->functions = $functions; + } + + #[Route('/func1', name: 'home', methods: ['POST'])] + public function func1(Request $request): Response + { + $array = $request->get('arr'); + if (!ArrayValidation::validateFunc1($array)) { + return new Response("Invalid array"); + } + $array = $this->functions->sortPrice($array); + return $this->json($array); + } + + #[Route('/func2', name: 'func2', methods: ['POST'])] + public function func2(Request $request): Response + { + $id = $request->query->getInt('id'); + $array = $request->get('arr'); + if (!ArrayValidation::validateFunc2($array)) { + return new Response("Invalid array"); + } + $result = $this->functions->search($array, $id); + return $this->json($result); + } + + #[Route('/func3', name: 'func3', methods: ['POST'])] + public function home(Request $request): Response + { + $array = $request->get('arr'); + $result = $this->functions->uniqElements($array); + return $this->json($result); + } + + #[Route('/func4', name: 'func4', methods: ['POST'])] + public function func4(Request $request): Response + { + $array = $request->get('arr'); + if (!ArrayValidation::validateFunc4($array)) { + return new Response("Invalid array"); } + $result = $this->functions->prepareMenu($array); + return $this->json($result); } + #[Route('/func5/{day}/{month}/{year}', name: 'func5')] + public function func5(int $day, int $month, int $year): Response + { + $dateAsString = $year . "-" . $month . "-" . $day; + try { + $result = $this->functions->howDaysToNy(new DateTimeImmutable($dateAsString)); + } catch (\Exception $e) { + return new Response($e->getMessage()); + } + return $this->json(["Days before NY:" => $result]); + } - #[Route('/{year}', name: 'home')] - public function home(int $year): Response + #[Route('/func6/{year}', name: 'func6', methods: ['GET'])] + public function func6(int $year): Response { $fridays = array(); - foreach($this->countFriday13($year) as $date) { - $fridays[] = $date->format("Y-m-d l"); + try { + foreach ($this->functions->countFriday13($year) as $date) { + $fridays[] = $date->format("Y-m-d l"); + } + } catch (\Exception $e) { + return new Response($e->getMessage()); } - return $this->render('home.html.twig', ['fridays' => $fridays]); + return $this->json($fridays); } - #[Route('/{startDate}/{endDate}', name: 'home')] // 01-01-2024 - public function home(string $startDate, string $endDate): Response + #[Route('/func7/{startDate}/{endDate}', name: 'home')] // 01-01-2024 + public function func7(string $startDate, string $endDate): Response { if (DateValidation::validate($startDate) && DateValidation::validate($endDate)) { try { -- GitLab