Skip to content
Snippets Groups Projects
HomeController.php 4.1 KiB
Newer Older
Адлан Шамавов's avatar
Адлан Шамавов committed
<?php

namespace App\Controller;

Адлан Шамавов's avatar
Адлан Шамавов committed
use App\Action\Functions;
Адлан Шамавов's avatar
Адлан Шамавов committed
use App\Requests\{
    SortPriceRequest,
    SearchRequest,
    UniqElementsRequest,
    MenuRequest,
Адлан Шамавов's avatar
Адлан Шамавов committed
    DiffDaysRequest
};
Адлан Шамавов's avatar
Адлан Шамавов committed
use DateTimeImmutable;
Адлан Шамавов's avatar
Адлан Шамавов committed
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
Адлан Шамавов's avatar
Адлан Шамавов committed
use Symfony\Component\HttpFoundation\JsonResponse;
Адлан Шамавов's avatar
Адлан Шамавов committed
use Symfony\Component\HttpFoundation\Response;
Адлан Шамавов's avatar
Адлан Шамавов committed
use Symfony\Component\HttpFoundation\Request;
Адлан Шамавов's avatar
Адлан Шамавов committed
use Symfony\Component\Routing\Attribute\Route;

class HomeController extends AbstractController
{
Адлан Шамавов's avatar
Адлан Шамавов committed
    public function __construct(private Functions $functions) {}
Адлан Шамавов's avatar
Адлан Шамавов committed
    #[Route('/sortPrice', name: 'sortPrice', methods: ['POST'])]
    public function sortPrice(SortPriceRequest $request): Response
Адлан Шамавов's avatar
Адлан Шамавов committed
    {
Адлан Шамавов's avatar
Адлан Шамавов committed
        $array = $this->functions->sortPrice($request->getRequest()->toArray()['items']);
Адлан Шамавов's avatar
Адлан Шамавов committed
        return $this->json($array);
    }

Адлан Шамавов's avatar
Адлан Шамавов committed
    #[Route('/search', name: 'search', methods: ['POST'])]
    public function search(SearchRequest $request): Response
Адлан Шамавов's avatar
Адлан Шамавов committed
    {
Адлан Шамавов's avatar
Адлан Шамавов committed
        $requestData = $request->getRequest()->toArray();
        $id = $request->getRequest()->get('id');
        $result = $this->functions->search($requestData['items'], $id);
Адлан Шамавов's avatar
Адлан Шамавов committed
        return $this->json($result);
    }

Адлан Шамавов's avatar
Адлан Шамавов committed
    #[Route('/uniqElements', name: 'uniqElements', methods: ['POST'])]
    public function uniqElements(UniqElementsRequest $request): Response
Адлан Шамавов's avatar
Адлан Шамавов committed
    {
Адлан Шамавов's avatar
Адлан Шамавов committed
        $result = $this->functions->uniqElements($request->getRequest()->toArray()['items']);
Адлан Шамавов's avatar
Адлан Шамавов committed
        return $this->json($result);
    }

Адлан Шамавов's avatar
Адлан Шамавов committed
    #[Route('/prepareMenu', name: 'prepareMenu', methods: ['POST'])]
    public function prepareMenu(MenuRequest $request): Response
Адлан Шамавов's avatar
Адлан Шамавов committed
    {
Адлан Шамавов's avatar
Адлан Шамавов committed
        $result = $this->functions->prepareMenu($request->getRequest()->toArray()['items']);
Адлан Шамавов's avatar
Адлан Шамавов committed
        return $this->json($result);
Адлан Шамавов's avatar
Адлан Шамавов committed
    }
Адлан Шамавов's avatar
Адлан Шамавов committed
    #[Route('/howDaysToNy', name: 'howDaysToNy', methods: ['GET'])]
    public function howDaysToNy(HowDaysToNyRequest $request): Response
Адлан Шамавов's avatar
Адлан Шамавов committed
    {
Адлан Шамавов's avatar
Адлан Шамавов committed
        $date = $request->getRequest()->get('date');
Адлан Шамавов's avatar
Адлан Шамавов committed
        try {
Адлан Шамавов's avatar
Адлан Шамавов committed
            $result = $this->functions->howDaysToNy(new DateTimeImmutable($date));
Адлан Шамавов's avatar
Адлан Шамавов committed
        } catch (\Exception $e) {
            return new Response($e->getMessage());
        }
        return $this->json(["Days before NY:" => $result]);
    }
Адлан Шамавов's avatar
Адлан Шамавов committed
    #[Route('/countFriday13', name: 'countFriday13', methods: ['GET'])]
    public function countFriday13(CountFriday13Request $request): Response
Адлан Шамавов's avatar
Адлан Шамавов committed
    {
Адлан Шамавов's avatar
Адлан Шамавов committed
        $year = $request->getRequest()->get('year');
Адлан Шамавов's avatar
Адлан Шамавов committed
        try {
            foreach ($this->functions->countFriday13($year) as $date) {
                $fridays[] = $date->format("Y-m-d l");
            }
        } catch (\Exception $e) {
            return new Response($e->getMessage());
Адлан Шамавов's avatar
Адлан Шамавов committed
        }
Адлан Шамавов's avatar
Адлан Шамавов committed
        return $this->json($fridays);
Адлан Шамавов's avatar
Адлан Шамавов committed
    }

    #[Route('/diffDays', name: 'diffDays')] // 01-01-2024
Адлан Шамавов's avatar
Адлан Шамавов committed
    public function diffDays(DiffDaysRequest $request): Response
Адлан Шамавов's avatar
Адлан Шамавов committed
        try {
            $result = $this->functions->diffDays(
                new DateTimeImmutable($request->getRequest()->get('startDate')),
                new DateTimeImmutable($request->getRequest()->get('endDate')),
            );
            return $this->json(["The difference of days:" => $result]);
        } catch (\Exception $e) {
            return new Response($e->getMessage());
Адлан Шамавов's avatar
Адлан Шамавов committed
        }
Адлан Шамавов's avatar
Адлан Шамавов committed
    }
Адлан Шамавов's avatar
Адлан Шамавов committed
    #[Route('/readLogFile', name: 'readLogFile')]
Адлан Шамавов's avatar
Адлан Шамавов committed
    public function readLogFile(Request $request): Response
Адлан Шамавов's avatar
Адлан Шамавов committed
        $file = $request->files->get('file');
Адлан Шамавов's avatar
Адлан Шамавов committed
        $text = $this->functions->readLogFile($file->getRealPath());
Адлан Шамавов's avatar
Адлан Шамавов committed
        $response = new JsonResponse($text);
        $response->setEncodingOptions(JSON_UNESCAPED_UNICODE);
        return $response;
Адлан Шамавов's avatar
Адлан Шамавов committed
    }
Адлан Шамавов's avatar
Адлан Шамавов committed
    #[Route('/readFileLineByLine', name: 'readFileLineByLine')]
Адлан Шамавов's avatar
Адлан Шамавов committed
    public function readFileLineByLine(Request $request): Response // text.txt
Адлан Шамавов's avatar
Адлан Шамавов committed
        $file = $request->files->get('file');
        $text = "";
Адлан Шамавов's avatar
Адлан Шамавов committed
        foreach ($this->functions->readFileLineByLine($file->getRealPath()) as $line) {
            $text .= $line;
        }
Адлан Шамавов's avatar
Адлан Шамавов committed
        $response = new JsonResponse($text);
        $response->setEncodingOptions(JSON_UNESCAPED_UNICODE);
        return $response;
Адлан Шамавов's avatar
Адлан Шамавов committed
    }
}