From d62df73cc46322c1fcacfc18e4800f61d1cc3156 Mon Sep 17 00:00:00 2001
From: Akex <a.plokhikh.sas@gmail.com>
Date: Mon, 8 Apr 2024 23:19:14 +0500
Subject: [PATCH] make UniqFilter

---
 src/Controller/UniqElementsController.php | 23 ++++++++++++++++++
 src/Repository/UniqElementsRepository.php | 29 +++++++++++++++++++++++
 2 files changed, 52 insertions(+)
 create mode 100644 src/Controller/UniqElementsController.php
 create mode 100644 src/Repository/UniqElementsRepository.php

diff --git a/src/Controller/UniqElementsController.php b/src/Controller/UniqElementsController.php
new file mode 100644
index 0000000..52161bc
--- /dev/null
+++ b/src/Controller/UniqElementsController.php
@@ -0,0 +1,23 @@
+<?php
+
+namespace App\Controller;
+
+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
+{
+    #[Route('/uniq/elements', name: 'app_uniq_elements')]
+    public function index(Request $request): Response
+    {
+        $requestArray = $request->toArray();
+
+        $return = uniqElements($requestArray);
+
+        return new JsonResponse($return, Response::HTTP_OK);
+    }
+}
diff --git a/src/Repository/UniqElementsRepository.php b/src/Repository/UniqElementsRepository.php
new file mode 100644
index 0000000..27b3d65
--- /dev/null
+++ b/src/Repository/UniqElementsRepository.php
@@ -0,0 +1,29 @@
+<?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;
+}
-- 
GitLab