From 2aedec677e0d75c545d7a0ed6806b40dc8674100 Mon Sep 17 00:00:00 2001 From: vasya Date: Sat, 21 Mar 2026 19:45:52 +0300 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F?= =?UTF-8?q?=D1=8E=20=D0=BA=D0=BE=D0=BD=D1=82=D1=80=D0=BE=D0=BB=D0=BB=D0=B5?= =?UTF-8?q?=D1=80=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D1=8B=20=D1=81=20=D0=BC?= =?UTF-8?q?=D0=B5=D0=BD=D1=8E=20=D0=BF=D1=80=D0=B8=D0=BB=D0=BE=D0=B6=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Http/Controllers/MenuController.php | 133 ++++++++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 app/Http/Controllers/MenuController.php diff --git a/app/Http/Controllers/MenuController.php b/app/Http/Controllers/MenuController.php new file mode 100644 index 0000000..a70a8b3 --- /dev/null +++ b/app/Http/Controllers/MenuController.php @@ -0,0 +1,133 @@ +userLogin = 'dgavrilov'; + } + + + /** + * Получение всех записей из таблицы с приложениями для меню + * TODO + * передавай флаг isActive и используй его для получения записей с приложениями меню архивных и не архивных + * + * @return mixed + */ + public function getApps() + { + //Приложения старого мэджик из скрипта Config_AD + $oldApps = $this->getOldApps(); + #Гаврилов + //НОВЫЕ ПРИЛОЖЕНИЯ НЕ ИСПОЛЬЗУЕШЬ + //Приложения нового мэджик из базы данных + #Гаврилов + //отрисовывать только то, что может видеть пользователь + $newApps = Models\MagicApps::get()->toArray(); + + return response()->json($oldApps); + } + + + /** + * Метод получает конфиг со старыми приложениями Magic + * + * @return string + */ + public function getOldApps() + { + $oldAppConf = json_decode(file_get_contents('http://cs/magic/return_config.AD.php')); + + return $oldAppConf; + } + + + /** + * Метод должен проверить есть ли избранные приложения у пользователя. Если есть, их необходимо обновить либо добавив, либо убрав то приложение, по которому кликнул пользователь. Если избранных приложений нет - вставить новую запись + * + * @return boolean + */ + public function updateUserFavApp(Request $rqst) + { + #Гаврилов + //ВНИЗУ ИСПОЛЬЗУЕТСЯ ЛОГИН DGAVRILOV, ПЕРЕПИШИ НА ЛОГИН ПОЛЬЗОВАТЕЛЯ MAGIC + $userFavApp = $this->getUserFavApp('dgavrilov'); + $appName = $rqst->all()['appName']; + $newFavAppList = null; + //Если массив с избранными приложениями пустой - пользователь не добавил ни 1 приложения мэджик в избранное + if (!$userFavApp) { + $newFavAppList = $appName; + } else { + $currentFavApp = $userFavApp; + if (in_array($appName, $currentFavApp) !== false) { + $newFavAppList = implode(';', array_filter($currentFavApp, function($el) use($appName) {return $el !== $appName;})); + } else { + $newFavAppList = implode(';', array_merge($currentFavApp, [$appName])); + } + } + + if ($newFavAppList) { + #Гаврилов + //ПРИ ВЫЗОВЕ ИЗ REACT НЕ ОБНОВЛЯЕТСЯ ПОЛЕ UPDATE_AT + $this->insertFavApp($newFavAppList); + //Если список приложений пуст - просто удаляем запись с избранными приложениями пользователя + } else { + $this->delAllUserFavApp('dgavrilov'); + } + return $this->getUserFavApp('dgavrilov'); + } + + #Гаврилов + //try catch для отслеживания ошибок вставки записей в БД? + + /** + * Метод вставки новой записи с избранными приложениями + * + * @return boolean + */ + public function insertFavApp($appName) + { + Models\UserFavApp::updateOrCreate( + ['user_login' => $this->userLogin], + ['fav_apps' => $appName] + ); + + return true; + } + + + /** + * Метод удаляет запись с избранными приложениями пользователя + * + * @param string $userLogin логин пользователя + * @return boolean + */ + public function delAllUserFavApp($userLogin) + { + Models\UserFavApp::where('user_login', $userLogin)->delete(); + + return true; + } + + + /** + * Метод получает избранные приложения пользователя + * + * @param string $userLogin логин пользователя + * @return array + */ + public function getUserFavApp(string $userLogin): array + { + #Гаврилов + //ЗДЕСЬ ВМЕСТО DGAVRILOV ДОЛЖНО БЫТЬ ОБРАЩЕНИЕ К КУКАСАМ, ЧТОБЫ БРАТЬ ЛОГИН ОТТУДА + $userFavApp = Models\UserFavApp::where('user_login', $userLogin)->first(); + + return $userFavApp ? explode(';', $userFavApp['fav_apps']) : []; + } +}