Skip to content
Snippets Groups Projects
Commit 1c2f2d02 authored by Адлан Шамавов's avatar Адлан Шамавов
Browse files

Merge branch 'PTPS_Controller_5' into PTPS_Controller_6

parents d4230faa 5727e87f
No related branches found
No related tags found
1 merge request!6Ptps controller 6
This commit is part of merge request !6. Comments created here will be created in the context of that merge request.
......@@ -71,13 +71,13 @@ class Functions
}
/**
* Выходной массив:
* Array (
* [0] => Array([0] => laravel, [1] => php)
* [1] => Array([0] => codeigniter, [1] => php)
* [3] => Array([0] => c++, [1] => java))
* )
*/
* Выходной массив:
* Array (
* [0] => Array([0] => laravel, [1] => php)
* [1] => Array([0] => codeigniter, [1] => php)
* [3] => Array([0] => c++, [1] => java))
* )
*/
/**
* Сгруппировать подразедлы в верхние разделы меню
......@@ -158,7 +158,6 @@ class Functions
return (int)$dateInterval->format("%a") + 1;
}
/**
* Вернет все пятницы 13 в году
* @param int $year год, в котором необходимо произвести расчет
......@@ -176,5 +175,4 @@ class Functions
yield new DateTimeImmutable($day->format("Y-m-d"));
}
}
}
}
\ No newline at end of file
......@@ -3,8 +3,11 @@
namespace App\Controller;
use App\Action\Functions;
use App\Validation\ArrayValidation;
use DateTimeImmutable;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Attribute\Route;
class HomeController extends AbstractController
......@@ -16,6 +19,60 @@ class HomeController extends AbstractController
$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', methods: ['GET'])]
public function home(int $year): Response
{
......
<?php
namespace App\Validation;
class ArrayValidation
{
public static function validateFunc1(array $array): bool
{
$prices = array_column($array, 'price');
$counts = array_column($array, 'count');
return ctype_digit(implode('',$prices)) && ctype_digit(implode('', $counts));
}
public static function validateFunc2(array $array): bool
{
$ids = array_column($array, 'id');
$ages = array_column($array, 'age');
return ctype_digit(implode('', $ids)) && ctype_digit(implode('', $ages));
}
public static function validateFunc4(array $array): bool
{
$depths = array_column($array, 'depth');
return ctype_digit(implode('', $depths));
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment