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']) : []; } }