diff --git a/src/Actions/UniqElementsAction.php b/src/Actions/UniqElementsAction.php new file mode 100644 index 0000000000000000000000000000000000000000..3aa0e139f1779dcbe693c239f8b58a5ef0f3845d --- /dev/null +++ b/src/Actions/UniqElementsAction.php @@ -0,0 +1,16 @@ +<?php + +namespace App\Actions; + +class UniqElementsAction +{ + /** + * УдалÑет дубликаты, оÑтавив только уникальные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ + * @param array $array + * @return array + */ + public static function act(array $array): array + { + return array_unique($array, SORT_REGULAR); + } +} \ No newline at end of file diff --git a/src/Controller/UniqElementsController.php b/src/Controller/UniqElementsController.php index ff46b9361e024335801fd3bf6cbd6f713c2669b4..6652b9de3ab6df59f83e9d0c39558a42f42fd2a1 100644 --- a/src/Controller/UniqElementsController.php +++ b/src/Controller/UniqElementsController.php @@ -2,27 +2,21 @@ namespace App\Controller; +use App\Actions\UniqElementsAction; +use App\Requests\UniqElementsRequest; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; -use Symfony\Component\HttpFoundation\Request; -use function App\Repository\uniqElements; class UniqElementsController extends AbstractController { - /** - * Контроллер удалÑет дубликаты, оÑтавив только уникальные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ uniqElements функцию - * @param Request $request - * @return Response - */ - #[Route('/uniq/elements', name: 'app_uniq_elements')] - public function index(Request $request): Response + #[Route('/uniq/elements', name: 'app_uniq_elements', methods: ['POST'])] + public function index(UniqElementsRequest $request, UniqElementsAction $action): Response { - $requestArray = $request->toArray(); - - $return = uniqElements($requestArray); - - return new JsonResponse($return, Response::HTTP_OK); + return new JsonResponse( + $action->act($request->serialise()), + 200 + ); } } diff --git a/src/Repository/UniqElementsRepository.php b/src/Repository/UniqElementsRepository.php deleted file mode 100644 index 27b3d65c4fbc52ebaa209bf51400db3eed5d9449..0000000000000000000000000000000000000000 --- a/src/Repository/UniqElementsRepository.php +++ /dev/null @@ -1,29 +0,0 @@ -<?php -namespace App\Repository; -/** - * Удалить дубликаты, оÑтавив только уникальные Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¸Ñ - * @param array $array - * @return array - */ -function uniqElements(array $array): array { - $splitedArray = []; - - foreach ($array as $tuple) { - $key = $tuple[0]; - $item = $tuple[1]; - $splitedArray[$key][] = $item; - } - - $returnableArray = []; - foreach ($splitedArray as $key => $item){ - $item = array_unique($item); - foreach ($item as $oneOfItem){ - $returnableArray[] = [ - $key, - $oneOfItem - ]; - } - } - - return $returnableArray; -} diff --git a/src/Requests/UniqElementsRequest.php b/src/Requests/UniqElementsRequest.php new file mode 100644 index 0000000000000000000000000000000000000000..111731374bbdde336e946a1623fdb42512fe8939 --- /dev/null +++ b/src/Requests/UniqElementsRequest.php @@ -0,0 +1,21 @@ +<?php + +namespace App\Requests; + +use Symfony\Component\Validator\Constraints\Type; +use Symfony\Contracts\Service\Attribute\Required; + +class UniqElementsRequest extends BaseRequest +{ + #[Type('array')] + #[Required] + public $data; + + /** + * @return mixed + */ + public function serialise(): mixed + { + return $this->data; + } +} diff --git a/templates/uniq_elements/index.html.twig b/templates/uniq_elements/index.html.twig new file mode 100644 index 0000000000000000000000000000000000000000..d56494b7519d691246e25955e4d51e8d7523b566 --- /dev/null +++ b/templates/uniq_elements/index.html.twig @@ -0,0 +1,20 @@ +{% extends 'base.html.twig' %} + +{% block title %}Hello UniqElementsController!{% endblock %} + +{% block body %} +<style> + .example-wrapper { margin: 1em auto; max-width: 800px; width: 95%; font: 18px/1.5 sans-serif; } + .example-wrapper code { background: #F5F5F5; padding: 2px 6px; } +</style> + +<div class="example-wrapper"> + <h1>Hello {{ controller_name }}! ✅</h1> + + This friendly message is coming from: + <ul> + <li>Your controller at <code>/home/tamanit/myProj/iqdevTranningProgram/src/Controller/UniqElementsController.php</code></li> + <li>Your template at <code>/home/tamanit/myProj/iqdevTranningProgram/templates/uniq_elements/index.html.twig</code></li> + </ul> +</div> +{% endblock %}