namespace App\Fields;
use Cubist\Backpack\Magic\Fields\SelectFromArray;
+use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\DB;
class FluidbookExtranetTask extends SelectFromArray
{
+ protected static $_projects = null;
+ protected static $_projectTasks = null;
+
+ protected static $_taskOptions = null;
+
public function getOptions()
{
- $res = [];
- $projects = static::_getProjects();
- $projectTasks = static::_getTasks();
- foreach ($projectTasks as $project => $tasks) {
- if(!isset($projects[$project])){
- continue;
+ if (null === static::$_taskOptions) {
+ $_taskOptions = [];
+ if (null === static::$_projects) {
+ static::$_projects = static::_getProjects();
}
- $t = [];
- foreach ($tasks as $id => $task) {
- $t[$id] = $task->nom;
+ if (null === static::$_projectTasks) {
+ static::$_projectTasks = static::_getTasks();
+ }
+
+ foreach (static::$_projectTasks as $project => $tasks) {
+ if (!isset(static::$_projects[$project])) {
+ continue;
+ }
+ $t = [];
+ foreach ($tasks as $id => $task) {
+ $t[$id] = $task->nom;
+ }
+ // $res['project_' . $project] = ["text" => $projects[$project]->nom, 'children' => $t];
}
- // $res['project_' . $project] = ["text" => $projects[$project]->nom, 'children' => $t];
}
- return $res;
+ return static::$_taskOptions;
}
protected static function _getProjects()
{
- $projects = [];
- foreach (DB::connection('extranet')->table('projets')->orderBy('projet_id', 'DESC')->get()->all() as $project) {
- $projects[$project->projet_id] = $project;
- }
+ return Cache::remember('fluidbook_extranet_tasks_projects', 360, function () {
+ $projects = [];
+ foreach (DB::connection('extranet')->table('projets')->orderBy('projet_id', 'DESC')->get()->all() as $project) {
+ $projects[$project->projet_id] = $project;
+ }
- return $projects;
+ return $projects;
+ });
}
protected static function _getTasks()
{
- $tasks = [];
- foreach (DB::connection('extranet')->table('taches')->orderBy('tache_id', 'ASC')->get()->all() as $task) {
- if (!isset($tasks[$task->projet])) {
- $tasks[$task->projet] = [];
+ return Cache::remember('fluidbook_extranet_tasks', 360, function () {
+ $tasks = [];
+ foreach (DB::connection('extranet')->table('taches')->orderBy('tache_id', 'ASC')->get()->all() as $task) {
+ if (!isset($tasks[$task->projet])) {
+ $tasks[$task->projet] = [];
+ }
+ $tasks[$task->projet][$task->tache_id] = $task;
}
- $tasks[$task->projet][$task->tache_id] = $task;
- }
- return $tasks;
+ return $tasks;
+ });
}
}