diff --git a/src/Action/Functions.php b/src/Action/Functions.php index 6516c42b3dfbe6ac52bf59a84e2837b9632bd918..bf15706b70a0e54d3bc0efb65a462f38821f7e9a 100644 --- a/src/Action/Functions.php +++ b/src/Action/Functions.php @@ -65,12 +65,11 @@ 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)) + * ) + */ +} \ No newline at end of file diff --git a/src/Controller/HomeController.php b/src/Controller/HomeController.php index f3bf85d700c8b460af2184eff752c5c79046f89a..947d15f837621b5c9254a319593bfdecfda01a18 100644 --- a/src/Controller/HomeController.php +++ b/src/Controller/HomeController.php @@ -4,9 +4,9 @@ namespace App\Controller; use App\Action\Functions; use App\Validation\ArrayValidation; -use Symfony\Component\HttpFoundation\Request; 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 @@ -18,6 +18,29 @@ 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('/', name: 'home', methods: ['POST'])] public function home(Request $request): Response { diff --git a/src/Validation/ArrayValidation.php b/src/Validation/ArrayValidation.php index 0206375d384c660f8a3e3e1250258d58108eb5b8..3a10d5e2ea1ac411bc06857a2f089c79947a4565 100644 --- a/src/Validation/ArrayValidation.php +++ b/src/Validation/ArrayValidation.php @@ -2,12 +2,22 @@ namespace App\Validation; -use Symfony\Component\Validator\Validation; -use Symfony\Component\Validator\Constraints as Assert; -use Symfony\Component\Validator\ConstraintViolationListInterface; - 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 validate(array $array): ConstraintViolationListInterface { $validator = Validation::createValidator(); @@ -16,7 +26,7 @@ class ArrayValidation new Assert\Optional([ new Assert\Type('array'), new Assert\Collection([ - new Assert\Type('string'), + new Assert\Type('string'), new Assert\Type('string'), ]) ])