From adafc4328999de16d51ac76f43d60ce7a1d0af99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Wed, 21 Apr 2021 15:08:47 +0200 Subject: [PATCH] Better sort tickets with session --- app/Http/Controllers/TicketController.php | 40 ++++++++++---- app/Http/Kernel.php | 2 +- app/Http/Requests/SortTickets.php | 1 + resources/views/modules/sorter.blade.php | 4 +- resources/views/ticket/index.blade.php | 64 +++++++++++++---------- 5 files changed, 72 insertions(+), 39 deletions(-) diff --git a/app/Http/Controllers/TicketController.php b/app/Http/Controllers/TicketController.php index ce362c4..ae22fe6 100644 --- a/app/Http/Controllers/TicketController.php +++ b/app/Http/Controllers/TicketController.php @@ -20,6 +20,7 @@ use Exception; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Mail; +use Illuminate\Support\Facades\Session; use Illuminate\Support\Str; class TicketController extends Controller @@ -39,32 +40,53 @@ class TicketController extends Controller $tickets = $tickets->where('status', '<>', TicketStatus::archived()); } - if ($request->sort_col and $request->sort_way) { - switch ($request->sort_col) { + if ($request->prs) { + Session::remove('tickets.pr'); + } + if ($request->sort_col) { + Session::put('tickets.sort_col', $request->sort_col); + Session::save(); + } + if ($request->sort_way) { + Session::put('tickets.sort_way', $request->sort_way); + Session::save(); + } + if ($request->pr) { + Session::put('tickets.pr', $request->pr); + Session::save(); + } + if (Session::has('tickets.pr')) { + $tickets = $tickets->where('project_id', Session::get('tickets.pr')); + } + + if (Session::has('tickets.sort_col') and Session::has('tickets.sort_way')) { + switch (Session::get('tickets.sort_col')) { case 'id': - $tickets = $tickets->orderBy('id', $request->sort_way); + $tickets = $tickets->orderBy('id', Session::get('tickets.sort_way')); break; case 'project': - $tickets = $tickets->orderBy('project_id', $request->sort_way); + $tickets = $tickets->orderBy('project_id', Session::get('tickets.sort_way')); break; case 'created_at': - $tickets = $tickets->orderBy('created_at', $request->sort_way); + $tickets = $tickets->orderBy('created_at', Session::get('tickets.sort_way')); break; case 'created_by': - $tickets = $tickets->orderBy('created_by', $request->sort_way); + $tickets = $tickets->orderBy('created_by', Session::get('tickets.sort_way')); break; case 'type': - $tickets = $tickets->orderBy('type', $request->sort_way); + $tickets = $tickets->orderBy('type', Session::get('tickets.sort_way')); break; case 'status': - $tickets = $tickets->orderBy('status', $request->sort_way); + $tickets = $tickets->orderBy('status', Session::get('tickets.sort_way')); break; } } $tickets = $tickets->paginate(); - return view('ticket.index', compact('tickets')); + $projects = Project::select('id', 'name')->get(); + + return view('ticket.index', compact('tickets', 'projects')); } public function show(Ticket $ticket) diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 5855803..4efdce4 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -14,6 +14,7 @@ class Kernel extends HttpKernel * @var array */ protected $middleware = [ + \Illuminate\Session\Middleware\StartSession::class, // \App\Http\Middleware\TrustHosts::class, \App\Http\Middleware\TrustProxies::class, \Fruitcake\Cors\HandleCors::class, @@ -32,7 +33,6 @@ class Kernel extends HttpKernel 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, diff --git a/app/Http/Requests/SortTickets.php b/app/Http/Requests/SortTickets.php index 3112e19..e356532 100644 --- a/app/Http/Requests/SortTickets.php +++ b/app/Http/Requests/SortTickets.php @@ -37,6 +37,7 @@ class SortTickets extends FormRequest } } ], + 'pr' => 'sometimes|int|exists:projects,id' ]; } } diff --git a/resources/views/modules/sorter.blade.php b/resources/views/modules/sorter.blade.php index 695523c..1f09fbe 100644 --- a/resources/views/modules/sorter.blade.php +++ b/resources/views/modules/sorter.blade.php @@ -1,6 +1,6 @@ -@if(!request('sort_way') or request('sort_col') !== $colname or (request('sort_way') === 'desc' and request('sort_col') === $colname)) +@if(!session('tickets.sort_way') or session('tickets.sort_col') !== $colname or (session('tickets.sort_way') === 'desc' and session('tickets.sort_col') === $colname))  ↓  @endif -@if(!request('sort_way') or request('sort_col') !== $colname or (request('sort_way') === 'asc' and request('sort_col') === $colname)) +@if(!session('tickets.sort_way') or session('tickets.sort_col') !== $colname or (session('tickets.sort_way') === 'asc' and session('tickets.sort_col') === $colname))  ↑  @endif diff --git a/resources/views/ticket/index.blade.php b/resources/views/ticket/index.blade.php index de2610b..8c80f66 100644 --- a/resources/views/ticket/index.blade.php +++ b/resources/views/ticket/index.blade.php @@ -12,36 +12,46 @@ @else Tickets Archivés @endif +
+ +
- - - - - - - - - - @if (Auth::user()->role === 1) - - @endif + + + + + + + + + + + @if (Auth::user()->role === 1) + + @endif + @foreach ($tickets as $ticket)
- #  - @include('modules.sorter', ['colname' => 'id']) - - Projet  - @include('modules.sorter', ['colname' => 'project']) - - Type  - @include('modules.sorter', ['colname' => 'type'])FichierFichier 2 - Date de création  - @include('modules.sorter', ['colname' => 'created_at']) - Créé par  - @include('modules.sorter', ['colname' => 'created_by']) - Statut  - @include('modules.sorter', ['colname' => 'status']) - ContenuActions
+ #  + @include('modules.sorter', ['colname' => 'id']) + + Projet  + @include('modules.sorter', ['colname' => 'project']) + + Type  + @include('modules.sorter', ['colname' => 'type'])FichierFichier 2 + Date de création  + @include('modules.sorter', ['colname' => 'created_at']) + Créé par  + @include('modules.sorter', ['colname' => 'created_by']) + Statut  + @include('modules.sorter', ['colname' => 'status']) + ContenuActions