From 56809291dfd397a7039516da248cfe27d28d0eb4 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Fri, 26 Jan 2024 20:40:49 +0100 Subject: [PATCH] wip #6571 @4 --- .env.prod | 3 + app/Fields/FluidbookExtranetTask.php | 23 +-- .../Admin/Operations/InvoiceOperation.php | 56 +++++++- app/Models/FluidbookPublication.php | 16 ++- .../views/columns/fluidbook_status.blade.php | 134 ++++++++++++++---- .../views/invoice/dialog_project.blade.php | 18 ++- resources/views/invoice/dialog_task.blade.php | 36 +++-- 7 files changed, 225 insertions(+), 61 deletions(-) diff --git a/.env.prod b/.env.prod index 759cfe083..511707f19 100644 --- a/.env.prod +++ b/.env.prod @@ -51,6 +51,9 @@ MAIL_FROM_NAME="Fluidbook Toolbox" MAIL_BCC_ALL=test+toolbox@cubedesigners.com MAIL_TEAM_NAME=Fluidbook +RATE_PEOPLE_DAY=630 +RATE_PEOPLE_HOUR=100 + MAILJET_API_KEY=ca110b35f8735c223d69c9987c2ac47d MAILJET_API_SECRET=b289d0acb08e0fe56ce98ccf0dd1ed8b diff --git a/app/Fields/FluidbookExtranetTask.php b/app/Fields/FluidbookExtranetTask.php index 380e81725..9e97e1f7e 100644 --- a/app/Fields/FluidbookExtranetTask.php +++ b/app/Fields/FluidbookExtranetTask.php @@ -45,8 +45,8 @@ class FluidbookExtranetTask extends SelectFromArray $d = self::getInvoiceData($invoicable); 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; + foreach ($p['tasks'] as $task_id => $task_data) { + static::$_taskOptions[$invoicable][$task_id] = $project_id . ' | ' . $p['entry']->nom . ' > ' . $task_data['name']; } } } @@ -64,23 +64,23 @@ class FluidbookExtranetTask extends SelectFromArray } $res = []; - foreach (static::$_projectTasks as $project => $tasks) { - if (!isset(static::$_projects[$project])) { - continue; - } - $p = static::$_projects[$project]; + + foreach (static::$_projects as $project_id => $p) { if (Permissions::getCompanyByUser($p->client) != $company) { continue; } + $res[$project_id] = ['entry' => $p, 'tasks' => []]; - $res[$p->projet_id] = ['entry' => $p, 'tasks' => []]; - foreach ($tasks as $id => $task) { - $res[$p->projet_id]['tasks'][$id] = $task->nom; + if (isset(static::$_projectTasks[$project_id])) { + foreach (static::$_projectTasks[$project_id] as $id => $task) { + $res[$project_id]['tasks'][$id] = ['name' => $task->nom, 'amount' => $task->budget]; + } } } + return $res; } @@ -111,11 +111,12 @@ class FluidbookExtranetTask extends SelectFromArray } $tasks[$task->projet][$task->tache_id] = $task; } + return $tasks; }); } - public static function cleanCache() + public static function clearCache() { 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 12232df97..df81a18e5 100644 --- a/app/Http/Controllers/Admin/Operations/InvoiceOperation.php +++ b/app/Http/Controllers/Admin/Operations/InvoiceOperation.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Admin\Operations; use App\Fields\FluidbookExtranetTask; use App\Models\FluidbookPublication; +use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Route; trait InvoiceOperation @@ -11,7 +12,8 @@ trait InvoiceOperation protected function setupInvoiceRoutes($segment, $routeName, $controller) { Route::match(['get'], $segment . '/{id}/invoice/dialog', $controller . '@dialogProject'); - Route::match(['get'], $segment . '/{id}/invoice/dialog/{project}', $controller . '@dialogTask'); + Route::match(['post'], $segment . '/{id}/invoice/dialog/project', $controller . '@dialogSetProject'); + Route::match(['post'], $segment . '/{id}/invoice/dialog/task', $controller . '@dialogSetTask'); } public function dialogProject($id) @@ -23,18 +25,64 @@ trait InvoiceOperation $data = FluidbookExtranetTask::getInvoiceData($invoicable); } - return view('invoice.dialog_project', ['entry' => $entry, 'invoice' => $data]); + return view('invoice.dialog_project', ['entry' => $entry, 'projects' => $data]); } - public function dialogTasj($id, $project) + public function dialogSetProject($id) { $entry = FluidbookPublication::find($id); if ($entry && $entry->invoicable_company) { $invoicable = $entry->invoicable_company; + if (request('type') === 'new') { + $time = time(); + $projectData = [ + 'nom' => request('value'), + 'date_creation' => $time, + 'date_debut' => $time, + 'date_fin' => $time, + 'deadline' => $time, + 'devis' => 0, + 'client' => $entry->owner, + 'chef' => backpack_user()->id, + 'old' => 0, + 'status' => 0, + ]; + $project_id = DB::connection('extranet')->table('projets')->insertGetId($projectData); + FluidbookExtranetTask::clearCache(); + } else { + $project_id = request('value'); + } $data = FluidbookExtranetTask::getInvoiceData($invoicable); + $project = $data[$project_id]; + + } + + return view('invoice.dialog_task', ['entry' => $entry, 'project' => $project]); + } + + public function dialogSetTask($id) + { + if (request('type') === 'new') { + $taskData = [ + 'nom' => request('value'), + 'projet' => request('project'), + 'budget' => request('amount'), + 'categorie' => 8, // Fluidbook + 'type' => 0, // normal task + 'taux_journalier' => env('RATE_PEOPLE_DAY'), + 'jours_prevus' => request('amount') / env('RATE_PEOPLE_DAY'), + ]; + $task_id = DB::connection('extranet')->table('taches')->insertGetId($taskData); + FluidbookExtranetTask::clearCache(); + } else { + $task_id = request('value'); } - return view('invoice.dialog_task', ['entry' => $entry, 'invoice' => $data]); + /** @var FluidbookPublication $fluidbook */ + $fluidbook = FluidbookPublication::find($id); + $fluidbook->extranet_task = $task_id; + $fluidbook->setStatus(3); + $fluidbook->saveQuietly(); } } diff --git a/app/Models/FluidbookPublication.php b/app/Models/FluidbookPublication.php index e6e1e726d..debe66d96 100644 --- a/app/Models/FluidbookPublication.php +++ b/app/Models/FluidbookPublication.php @@ -410,10 +410,11 @@ class FluidbookPublication extends ToolboxStatusModel return self::$_docs[$documentID]; } - public function getLinksFile($page){ + public function getLinksFile($page) + { $compo = $this->getComposition()[$page]; - $document=self::_getDocument($compo[0]); - return $document->path('links').'p'.$compo[1].'.csv'; + $document = self::_getDocument($compo[0]); + return $document->path('links') . 'p' . $compo[1] . '.csv'; } public function getTextFile($page, $type = FluidbookDocument::TEXT_PLAIN, $mode = null) @@ -967,10 +968,19 @@ class FluidbookPublication extends ToolboxStatusModel if (!$this->isOnePage()) { $w = $this->getPageWidth(); foreach ($links as $k => $link) { + + foreach (['width', 'height', 'top', 'left'] as $dim) { + if (!is_numeric($link[$dim])) { + $link[$dim] = $links[$k][$dim] = (float)str_replace(',', '.', $link[$dim]); + } + } + if ($link['left'] > $w && is_numeric($link['page']) && $link['page'] % 2 == 0) { $links[$k]['left'] -= $w; $links[$k]['page']++; } + + } } } diff --git a/resources/views/columns/fluidbook_status.blade.php b/resources/views/columns/fluidbook_status.blade.php index 2aa5478ce..f84b31fe6 100644 --- a/resources/views/columns/fluidbook_status.blade.php +++ b/resources/views/columns/fluidbook_status.blade.php @@ -25,9 +25,95 @@ @if(!isset($crud->seenStatusChange)) @php $crud->seenStatusChange=true; @endphp @endif diff --git a/resources/views/invoice/dialog_project.blade.php b/resources/views/invoice/dialog_project.blade.php index 6ada6195d..6680daa45 100644 --- a/resources/views/invoice/dialog_project.blade.php +++ b/resources/views/invoice/dialog_project.blade.php @@ -1,12 +1,16 @@ -
-
- {{__('Choisir un projet')}} : - @foreach($invoice as $project_id=>$project) + @foreach($projects as $project_id=>$project) @endforeach - {{__('ou créer un nouveau 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 index 8a604a7bf..eb53946f1 100644 --- a/resources/views/invoice/dialog_task.blade.php +++ b/resources/views/invoice/dialog_task.blade.php @@ -1,9 +1,29 @@ -
-
- {{__('Choisir une tâche')}} : - {{__('ou créer une nouvelle tâche')}} - {!! __('ayant un budget de :amount €',['amount'=>''])!!} +@php + $hasTask=count($project['tasks'])>0; +@endphp + +
+ + @if($hasTask) +

{{__('Choisir une tâche')}}

+
+ +
+ @endif +
+

@if($hasTask) + {{__('ou créer une nouvelle tâche')}} + @else + {{__('Créer une tâche')}} + @endif

+

+

+

{{__('budget en euros')}}

+

- +
-- 2.39.5