From: Vincent Vanwaelscappel Date: Fri, 26 Jan 2024 11:23:17 +0000 (+0100) Subject: wip #6571 @1 X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=71a032889af706f92850127336e322479b6cc6b6;p=fluidbook-toolbox.git wip #6571 @1 --- diff --git a/app/Fields/FluidbookExtranetTask.php b/app/Fields/FluidbookExtranetTask.php index 92322a927..380e81725 100644 --- a/app/Fields/FluidbookExtranetTask.php +++ b/app/Fields/FluidbookExtranetTask.php @@ -42,18 +42,11 @@ class FluidbookExtranetTask extends SelectFromArray if (!isset(static::$_taskOptions[$invoicable])) { static::$_taskOptions[$invoicable] = []; - foreach (static::$_projectTasks as $project => $tasks) { + $d = self::getInvoiceData($invoicable); - 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[$invoicable][$id] = $p->projet_id . ' | ' . $p->nom . ' > ' . $task->nom; + foreach ($d as $project_id => $p) { + foreach ($p['tasks'] as $task_id => $task_name) { + static::$_taskOptions[$invoicable][$task_id] = $project_id . ' | ' . $p['entry']->nom . ' > ' . $task_name; } } } @@ -61,6 +54,36 @@ class FluidbookExtranetTask extends SelectFromArray return static::$_taskOptions[$invoicable]; } + public static function getInvoiceData($company) + { + if (null === static::$_projects) { + static::$_projects = static::_getProjects(); + } + if (null === static::$_projectTasks) { + static::$_projectTasks = static::_getTasks(); + } + + $res = []; + foreach (static::$_projectTasks as $project => $tasks) { + + if (!isset(static::$_projects[$project])) { + continue; + } + $p = static::$_projects[$project]; + if (Permissions::getCompanyByUser($p->client) != $company) { + continue; + } + + $res[$p->projet_id] = ['entry' => $p, 'tasks' => []]; + + foreach ($tasks as $id => $task) { + $res[$p->projet_id]['tasks'][$id] = $task->nom; + } + } + + return $res; + } + protected function _postSetCrud() { $this->setAttribute('options', $this->getOptionsFiltered()); @@ -91,4 +114,10 @@ class FluidbookExtranetTask extends SelectFromArray return $tasks; }); } + + public static function cleanCache() + { + Cache::forget('fluidbook_extranet_tasks'); + Cache::forget('fluidbook_extranet_tasks_projects'); + } } diff --git a/app/Http/Controllers/Admin/Operations/InvoiceOperation.php b/app/Http/Controllers/Admin/Operations/InvoiceOperation.php index f07a120cd..12232df97 100644 --- a/app/Http/Controllers/Admin/Operations/InvoiceOperation.php +++ b/app/Http/Controllers/Admin/Operations/InvoiceOperation.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Admin\Operations; +use App\Fields\FluidbookExtranetTask; use App\Models\FluidbookPublication; use Illuminate\Support\Facades\Route; @@ -9,12 +10,31 @@ trait InvoiceOperation { protected function setupInvoiceRoutes($segment, $routeName, $controller) { - Route::match(['get'], $segment . '/{id}/invoice/dialog', $controller . '@dialog'); + Route::match(['get'], $segment . '/{id}/invoice/dialog', $controller . '@dialogProject'); + Route::match(['get'], $segment . '/{id}/invoice/dialog/{project}', $controller . '@dialogTask'); } - public function dialog($id) + public function dialogProject($id) { $entry = FluidbookPublication::find($id); - return view('invoice.dialog', ['entry' => $entry]); + + if ($entry && $entry->invoicable_company) { + $invoicable = $entry->invoicable_company; + $data = FluidbookExtranetTask::getInvoiceData($invoicable); + } + + return view('invoice.dialog_project', ['entry' => $entry, 'invoice' => $data]); + } + + public function dialogTasj($id, $project) + { + $entry = FluidbookPublication::find($id); + + if ($entry && $entry->invoicable_company) { + $invoicable = $entry->invoicable_company; + $data = FluidbookExtranetTask::getInvoiceData($invoicable); + } + + return view('invoice.dialog_task', ['entry' => $entry, 'invoice' => $data]); } } diff --git a/resources/views/columns/fluidbook_status.blade.php b/resources/views/columns/fluidbook_status.blade.php index b2253dfc8..2aa5478ce 100644 --- a/resources/views/columns/fluidbook_status.blade.php +++ b/resources/views/columns/fluidbook_status.blade.php @@ -53,10 +53,6 @@ let select = $(Swal.getHtmlContainer()).find('select'); $(select).select2({ theme: 'bootstrap', - ajax: { - url: '{{backpack_url('select2')}}' + '/' + $(select).data('ajax'), - dataType: 'json' - }, escapeMarkup: function (m) { return m; } diff --git a/resources/views/invoice/dialog.blade.php b/resources/views/invoice/dialog.blade.php deleted file mode 100644 index 7ab48328a..000000000 --- a/resources/views/invoice/dialog.blade.php +++ /dev/null @@ -1 +0,0 @@ -{{$entry->id}} diff --git a/resources/views/invoice/dialog_project.blade.php b/resources/views/invoice/dialog_project.blade.php new file mode 100644 index 000000000..6ada6195d --- /dev/null +++ b/resources/views/invoice/dialog_project.blade.php @@ -0,0 +1,12 @@ +
+
+ {{__('Choisir un projet')}} : + {{__('ou créer un nouveau projet')}} : +
+ +
diff --git a/resources/views/invoice/dialog_task.blade.php b/resources/views/invoice/dialog_task.blade.php new file mode 100644 index 000000000..8a604a7bf --- /dev/null +++ b/resources/views/invoice/dialog_task.blade.php @@ -0,0 +1,9 @@ +
+
+ {{__('Choisir une tâche')}} : + {{__('ou créer une nouvelle tâche')}} + {!! __('ayant un budget de :amount €',['amount'=>''])!!} +
+