diff --git a/app/Http/Controllers/Bo/TicketController.php b/app/Http/Controllers/Bo/TicketController.php index b1fe4ff..4eb8cb0 100644 --- a/app/Http/Controllers/Bo/TicketController.php +++ b/app/Http/Controllers/Bo/TicketController.php @@ -27,11 +27,11 @@ use App\Models\User; use GrahamCampbell\GitLab\Facades\GitLab; use Illuminate\Database\Eloquent\Builder; use Illuminate\Http\Request; +use Illuminate\Support\Arr; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Session; use Illuminate\Support\Str; -use Illuminate\Support\Arr; class TicketController extends Controller { @@ -107,8 +107,12 @@ class TicketController extends Controller $tickets = $this->customPaginate($tickets, $request->pagination); $sites = Site::select('id', 'name')->orderBy('name')->get(); - $status = TicketStatusEnum::cases(); - $types = TicketTypeEnum::cases(); + $status = Arr::sort(TicketStatusEnum::cases(), function (TicketStatusEnum $value) { + return $value->label(); + }); + $types = Arr::sort(TicketTypeEnum::cases(), function (TicketTypeEnum $value) { + return $value->label(); + }); return view('bo.pages.tickets.index', compact('tickets', 'sites', 'status', 'types')); } @@ -609,8 +613,6 @@ class TicketController extends Controller if (Session::has('tickets.or')) { $tickets->orderBy('order', 'ASC'); - } else { - $tickets->orderBy('last_activity', 'DESC'); } return $tickets; diff --git a/app/Models/User.php b/app/Models/User.php index 7967f02..1e3a31c 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -148,8 +148,8 @@ class User extends Authenticatable */ public static function adminUsers(): Collection { - return Cache::rememberForever('AdminUsers', function () { - return self::whereIn('role', [RoleEnum::admin, RoleEnum::developper])->get(); + return Cache::remember('AdminUsers', 86400, function () { + return self::whereIn('role', [RoleEnum::admin, RoleEnum::developper])->orderBy('name')->get(); }); } diff --git a/app/Policies/TicketPolicy.php b/app/Policies/TicketPolicy.php index 14ede6f..1f06c81 100644 --- a/app/Policies/TicketPolicy.php +++ b/app/Policies/TicketPolicy.php @@ -7,6 +7,7 @@ use App\Enums\Tickets\TicketTypeEnum; use App\Enums\Users\RoleEnum; use App\Models\Ticket; use App\Models\User; +use Error; use Illuminate\Auth\Access\HandlesAuthorization; class TicketPolicy @@ -287,4 +288,18 @@ class TicketPolicy && !\is_null($ticket->site->gitlab_project_id) && \is_null($ticket->gitlab_issue); } + + + /** + * Determine if the user can changeOrder + * + * @param User $user + * @return bool + * @throws Error + */ + public function changeOrder(User $user) + { + return $user->role->equals(RoleEnum::developper); + } + } diff --git a/app/Providers/TranslationServiceProvider.php b/app/Providers/TranslationServiceProvider.php index a042a23..7aa3b60 100644 --- a/app/Providers/TranslationServiceProvider.php +++ b/app/Providers/TranslationServiceProvider.php @@ -19,7 +19,7 @@ class TranslationServiceProvider extends ServiceProvider { foreach ($this->collectLocalesStrings() as $locale) { // * Supported locales - Cache::rememberForever(sprintf('translations.%s', $locale), function () use ($locale) { + Cache::remember(sprintf('translations.%s', $locale), 84600, function () use ($locale) { $translations = [ 'php' => $this->phpTranslations($locale), 'json' => $this->jsonTranslations($locale), diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php index 35c2795..add290c 100644 --- a/resources/lang/en/validation.php +++ b/resources/lang/en/validation.php @@ -221,7 +221,6 @@ return [ 'order' => 'order', 'priority' => 'priority', 'default' => 'default', - 'date_mep' => 'desired MEP date', - 'date_mep_empty' => 'no date entered' + 'date_mep' => 'Desired Launch' ] ]; diff --git a/resources/lang/fr.json b/resources/lang/fr.json index 3549abe..b405e2f 100644 --- a/resources/lang/fr.json +++ b/resources/lang/fr.json @@ -56,5 +56,6 @@ "Whoops!": "Oups !", "You are logged in!": "Vous êtes connecté·e !", "You are receiving this email because we received a password reset request for your account.": "Vous recevez cet e-mail car nous avons reçu une demande de réinitialisation de mot de passe pour votre compte.", - "see_mode": "voir mode :mode" + "see_mode": "voir mode :mode", + "Website": "Site" } diff --git a/resources/lang/fr/validation.php b/resources/lang/fr/validation.php index e50b509..571fd1f 100644 --- a/resources/lang/fr/validation.php +++ b/resources/lang/fr/validation.php @@ -257,7 +257,6 @@ return [ 'order' => 'ordre', 'priority' => 'priorité', 'default' => 'défaut', - 'date_mep' => 'date de MEP souhaitée', - 'date_mep_empty' => 'aucune date renseignée' + 'date_mep' => 'MEP souhaitée' ] ]; diff --git a/resources/sass/bo/base/_common.scss b/resources/sass/bo/base/_common.scss index 5070921..9044e4f 100644 --- a/resources/sass/bo/base/_common.scss +++ b/resources/sass/bo/base/_common.scss @@ -1,5 +1,5 @@ .container-xxl { - max-width: 1340px !important; + max-width: 1600px !important; } #app { diff --git a/resources/views/bo/modules/change-model-order.blade.php b/resources/views/bo/modules/change-model-order.blade.php index a304ff0..d5760bd 100644 --- a/resources/views/bo/modules/change-model-order.blade.php +++ b/resources/views/bo/modules/change-model-order.blade.php @@ -1,7 +1,5 @@ - @if (isset($value)) - {{ $value }} - @endif + {{ $value ?? '' }} @can('changeOrder', $model)
$loop->first and $models->onFirstPage()]) diff --git a/resources/views/bo/pages/tickets/index.blade.php b/resources/views/bo/pages/tickets/index.blade.php index d0a4b94..1d1ada0 100644 --- a/resources/views/bo/pages/tickets/index.blade.php +++ b/resources/views/bo/pages/tickets/index.blade.php @@ -9,69 +9,48 @@ $userPr = Auth::user()->sites ?? collect([]); @endphp
+
+
+

{{ __('Tickets') }} + @if (Session::get('tickets.st') == \App\Enums\Tickets\TicketStatusEnum::archived->value) + (Archivés) + @endif +

+
+ +
-

- {{ __('Gestion des tickets') }} - @if (Session::get('tickets.st') == \App\Enums\Tickets\TicketStatusEnum::archived->value) - (Archivés) - @endif -

-
-
-
-
- @can('isAdmin') - - @endcan - -   {{ __('ticket') }} - - @if (session('tickets.pr') && session('tickets.st') != \App\Enums\Tickets\TicketStatusEnum::archived->value) - @if (session('tickets.or')) - -   {{ __('see_mode', ['mode' => __('validation.custom.default')]) }} - - @else - -   {{ __('see_mode', ['mode' => __('validation.custom.priority')]) }} - - @endif - @endif - @if (session('tickets.st') == \App\Enums\Tickets\TicketStatusEnum::archived->value) - - - - @else - - - - @endif - -  {{ __(' le tri') }} - -
-
+
+
+
+ {{-- All sites --}} +
- - @foreach ($status as $statut) - - @endforeach - - @push('scripts') - - @endpush -
-
-
-
-
- @can('assignTickets', App\Models\Ticket::class) + {{-- All types --}}
-
-
- - - @push('scripts') - - @endpush -
-
-
- @endcan -
-
- + @push('scripts') @endpush
-
-
- -
- - - + {{-- All status --}} +
+
+ + + @push('scripts') + + @endpush
- @push('scripts') - - @endpush - +
+ {{-- All assigned to --}} + @can('assignTickets', App\Models\Ticket::class) +
+
+ + + @push('scripts') + + @endpush +
+
+ @endcan + {{-- Search form --}} +
+
+
+ + + +
+ @push('scripts') + + @endpush +
+
+
+
+
+
+
+
+ @if (session('tickets.pr') && session('tickets.st') != \App\Enums\Tickets\TicketStatusEnum::archived->value) + @if (session('tickets.or')) + +   {{ __('see_mode', ['mode' => __('validation.custom.default')]) }} + + @else + +   {{ __('see_mode', ['mode' => __('validation.custom.priority')]) }} + + @endif + @endif + @if (session('tickets.st') == \App\Enums\Tickets\TicketStatusEnum::archived->value) + + + + @else + + + + @endif + +  {{ __(' le tri') }} +
@@ -187,13 +208,21 @@ $cols = []; if (session('tickets.or')) { $cols = array_merge($cols, [ - 'order' => Str::ucfirst(__('validation.custom.priority')) + 'order' => Str::ucfirst(__('validation.custom.priority')), + ]); + } + $cols = array_merge($cols, [ + 'id' => '#', + ]); + if (!session()->has('tickets.pr') && !session('tickets.or')) { + $cols = array_merge($cols, [ + 'site' => Str::ucfirst(__('Website')), ]); } $cols = array_merge($cols, [ - 'id' => Str::ucfirst(__('validation.attributes.id')), - 'title' => Str::ucfirst(__('validation.attributes.name')), 'type' => Str::ucfirst(__('validation.custom.type')), + 'status' => Str::ucfirst(__('validation.attributes.status')), + 'title' => Str::ucfirst(__('validation.attributes.name')), ]); if (Auth::user()->isAdmin()) { $cols = array_merge($cols, [ @@ -208,13 +237,16 @@ @endphp @include('bo.modules.table-col-sorter', [ 'cols' => $cols, - 'ignore' => ['id', 'tickets'], + 'ignore' => session('tickets.or') + ? array_keys($cols) + : ['id', 'site', 'status', 'tickets'], ]) @if (!count($tickets)) - +

{{ __('Aucun ticket') }}

@@ -227,26 +259,45 @@ 'routeName' => 'ticket', 'model' => $ticket, 'models' => $tickets, - 'value' => $key + 1, + 'value' => ($key + 1) + (($tickets->currentPage() - 1) * $tickets->perPage()), 'noRightsVisible' => false, ]) @endif {{-- id --}} -
- {{ $ticket->id }}  @if ($ticket->is_internal) +
+ {{ $ticket->id }}   + @if ($ticket->is_internal) @endif - +
+ + @if (!session()->has('tickets.pr') && !session('tickets.or')) + {{-- site --}} + +
@if (Auth::user()->isAdmin()) {{ $ticket->site->name }} @else - {{ $ticket->site->name }} + {{ $ticket->site->name }} @endif +
+ + @endif + {{-- type --}} + + {{ $ticket->type->label() }} + + {{-- status --}} + +
+ {{ $ticket->status->label() }} @@ -254,13 +305,9 @@
{{-- title --}} - + {{ $ticket->title }} - {{-- type --}} - - {{ $ticket->type->label() }} - {{-- tag --}} @php $routeName = request()->route()->getName(); @@ -277,10 +324,11 @@ @endcan {{-- assigned_to / date_mep --}} @if (Auth::user()->isAdmin()) - {{ $ticket->assignedUser ? $ticket->assignedUser->name : __('Personne') }} + {{ $ticket->assignedUser ? $ticket->assignedUser->name : __('Personne') }} + @endif - {{ is_null($ticket->date_mep) ? Str::ucfirst(__("validation.custom.date_mep_empty")) : $ticket->date_mep->format('d/m/Y') }} + {{ is_null($ticket->date_mep) ? '-' : $ticket->date_mep->format('d/m/Y') }} {{ Carbon\Carbon::parse($ticket->created_at)->format('d/m/Y à H:i') }} @@ -291,88 +339,97 @@ $ticket_files = $ticket->getFiles(); @endphp @foreach ($ticket_files as $key => $file) - @if ($file !== null && (\App\Lib\Helpers\ToolboxHelper::isImageFile($file) || \App\Lib\Helpers\ToolboxHelper::isPdfFile($file))) + @if ( + $file !== null && + (\App\Lib\Helpers\ToolboxHelper::isImageFile($file) || \App\Lib\Helpers\ToolboxHelper::isPdfFile($file))) + data-gallery="gallery{{ $ticket->id }}" + href="{{ asset($file) }}" target="_blank"> - @break + @break + @endif + @endforeach + {{-- Modal du ticket --}} + + + + @if (auth()->user()->isAdmin()) + @endif - @endforeach - {{-- Modal du ticket --}} - - - - @if (auth()->user()->isAdmin()) - - @endif - @can('changeStatus', $ticket) - @if (!$ticket->status->equals(\App\Enums\Tickets\TicketStatusEnum::archived)) -
- @method('PUT') - @csrf - -
- @endif - @endcan + @can('changeStatus', $ticket) + @if (!$ticket->status->equals(\App\Enums\Tickets\TicketStatusEnum::archived)) +
+ @method('PUT') + @csrf + +
+ @endif + @endcan +
-
- - -
+
@endsection diff --git a/resources/views/layout/nav.blade.php b/resources/views/layout/nav.blade.php index 05eb030..ff2ae1b 100644 --- a/resources/views/layout/nav.blade.php +++ b/resources/views/layout/nav.blade.php @@ -48,6 +48,9 @@ @can('isAdmin') {{ trans_choice('models.classes.ticket_types', 2) }} @endcan + @can('isAdmin') + {{ __('models.classes.labels') }} + @endcan
@endcan