]> _ Git - fluidbook-toolbox.git/commitdiff
wip #6571 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 26 Jan 2024 11:23:17 +0000 (12:23 +0100)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Fri, 26 Jan 2024 11:23:17 +0000 (12:23 +0100)
app/Fields/FluidbookExtranetTask.php
app/Http/Controllers/Admin/Operations/InvoiceOperation.php
resources/views/columns/fluidbook_status.blade.php
resources/views/invoice/dialog.blade.php [deleted file]
resources/views/invoice/dialog_project.blade.php [new file with mode: 0644]
resources/views/invoice/dialog_task.blade.php [new file with mode: 0644]

index 92322a927c629239bf3cc779cde1561aa139daa7..380e81725f4917395f5dc4c4f43d1b97a5652db7 100644 (file)
@@ -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');
+    }
 }
index f07a120cd02c32b83b8eda0d11edb1bd437029da..12232df97815c7c25ace004664c1ea548c1200fa 100644 (file)
@@ -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]);
     }
 }
index b2253dfc8f8ddc6ac45162ffae18bd984a35d76b..2aa5478ce64b00f3daabd07a5e5dfe0222c3a4aa 100644 (file)
                         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 (file)
index 7ab4832..0000000
+++ /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 (file)
index 0000000..6ada619
--- /dev/null
@@ -0,0 +1,12 @@
+<form action="" method="post">
+    <div id="invoice_project">
+        {{__('Choisir un projet')}} : <select name="project">
+            <option value="">--</option>
+            @foreach($invoice as $project_id=>$project)
+                <option value="{{$project_id}}">#{{$project_id}} | {{$project['entry']->nom}}</option>
+            @endforeach
+        </select>
+        {{__('ou créer un nouveau projet')}} : <input type="text" name="project_new"/>
+    </div>
+
+</form>
diff --git a/resources/views/invoice/dialog_task.blade.php b/resources/views/invoice/dialog_task.blade.php
new file mode 100644 (file)
index 0000000..8a604a7
--- /dev/null
@@ -0,0 +1,9 @@
+<form action="" method="post">
+    <div id="invoice_task">
+        {{__('Choisir une tâche')}} : <select name="task">
+            <option value="">--</option>
+        </select>
+        {{__('ou créer une nouvelle tâche')}} <input type="text" name="task_new"/>
+        {!! __('ayant un budget de :amount €',['amount'=>'<input type="text" name="task_amout">'])!!}
+    </div>
+</form>