134 lines
4.9 KiB
PHP
134 lines
4.9 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
use Illuminate\Http\Request;
|
|
use App\Models;
|
|
|
|
class MenuController extends Controller
|
|
{
|
|
public function __construct()
|
|
{
|
|
$this->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']) : [];
|
|
}
|
|
}
|