From b16e35971c320c080fa2bfcaf899f75681458a5f Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 5 Jan 2024 18:32:41 +0100 Subject: [PATCH] wip #6571 @3 --- app/Fields/FluidbookExtranetTask.php | 47 ++++++++++++++++++---------- 1 file changed, 31 insertions(+), 16 deletions(-) diff --git a/app/Fields/FluidbookExtranetTask.php b/app/Fields/FluidbookExtranetTask.php index 03bff017c..92322a927 100644 --- a/app/Fields/FluidbookExtranetTask.php +++ b/app/Fields/FluidbookExtranetTask.php @@ -2,6 +2,7 @@ namespace App\Fields; +use Cubedesigners\UserDatabase\Permissions; use Cubist\Backpack\CubistCrudPanel; use Cubist\Backpack\Facades\App; use Cubist\Backpack\Magic\Fields\SelectFromArray; @@ -13,37 +14,51 @@ class FluidbookExtranetTask extends SelectFromArray protected static $_projects = null; protected static $_projectTasks = null; - protected static $_taskOptions = null; + protected static $_taskOptions = []; public function getOptions() { - if (null === static::$_taskOptions) { - static::$_taskOptions = []; - if (null === static::$_projects) { - static::$_projects = static::_getProjects(); - } - if (null === static::$_projectTasks) { - static::$_projectTasks = static::_getTasks(); + $invoicable = "all"; + + if ($this->issetCrud()) { + /** @var CubistCrudPanel $crud */ + try { + $crud = $this->getCrud(); + $entry = $crud->getCurrentEntry(); + if ($entry && $entry->invoicable_company) { + $invoicable = $crud->getCurrentEntry()->invoicable_company; + } + } catch (\Exception $e) { + } + } + + if (null === static::$_projects) { + static::$_projects = static::_getProjects(); + } + if (null === static::$_projectTasks) { + static::$_projectTasks = static::_getTasks(); + } + if (!isset(static::$_taskOptions[$invoicable])) { + static::$_taskOptions[$invoicable] = []; foreach (static::$_projectTasks as $project => $tasks) { + if (!isset(static::$_projects[$project])) { continue; } $p = static::$_projects[$project]; + if ($invoicable !== 'all' && Permissions::getCompanyByUser($p->client) != $invoicable) { + continue; + } + foreach ($tasks as $id => $task) { - static::$_taskOptions[$id] = $p->projet_id . ' | ' . $p->nom . ' > ' . $task->nom; + static::$_taskOptions[$invoicable][$id] = $p->projet_id . ' | ' . $p->nom . ' > ' . $task->nom; } } } - if ($this->issetCrud()) { - /** @var CubistCrudPanel $crud */ - $crud=$this->getCrud(); - $invoicable=$crud->getCurrentEntry()->invoicable_company; - } - - return static::$_taskOptions; + return static::$_taskOptions[$invoicable]; } protected function _postSetCrud() -- 2.39.5