diff --git a/app/Http/Controllers/Bo/AppUserController.php b/app/Http/Controllers/Bo/AppUserController.php index d898648..7ab7241 100644 --- a/app/Http/Controllers/Bo/AppUserController.php +++ b/app/Http/Controllers/Bo/AppUserController.php @@ -6,19 +6,19 @@ use App\Http\Controllers\Controller; use App\Http\Requests\Bo\AppUser\StoreAppUserRequest; use App\Http\Requests\Bo\AppUser\UpdateAppUserRequest; use App\Http\Requests\Bo\ImportRequest; +use App\Http\Requests\Bo\UpdateChangeOrderRequest; use App\Imports\AppUserImport; use App\Models\AppUser; use App\Models\Directory; -use App\Traits\Controllers\ChangesModelOrder; use Illuminate\Http\Request; +use Illuminate\Support\Arr; use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Session; use Illuminate\Support\Str; use Maatwebsite\Excel\Facades\Excel; class AppUserController extends Controller { - use ChangesModelOrder; - /** * Display a listing of the resource. * @@ -40,7 +40,11 @@ class AppUserController extends Controller 'email' ); } - $searchFields = trans('Nom, Prénom, Email'); + $searchFields = \implode(', ', [ + trans('validation.attributes.last_name'), + trans('validation.attributes.first_name'), + trans('validation.attributes.email'), + ]); /** Sort columns with a query */ $this->sortQuery($query); @@ -188,4 +192,61 @@ class AppUserController extends Controller return redirect()->route('bo.app-users.index')->with('success', 'Import terminé.'); } + + /** + * Change order. + * + * @param \App\Http\Requests\Bo\UpdateChangeOrderRequest $request + * @param mixed ...$params + * @return \Illuminate\Http\RedirectResponse + * @throws \RuntimeException Si le nom du parametre de la route ne correspond pas au params utilisé. + */ + public function changeOrder(UpdateChangeOrderRequest $request, mixed ...$params): \Illuminate\Http\RedirectResponse + { + $paramNames = collect(request()->route()->parameterNames); + $className = Str::of($paramNames->get($paramNames->count() - 2))->lower()->studly(); + $className = "\\App\\Models\\AppUser"; + $modelId = Arr::get($params, $paramNames->count() - 2); + $model = AppUser::find($modelId); + + if (!class_exists($className)) { + throw new \RuntimeException("The {$className} class doesn't exist."); + } + + if (!\is_object($model)) { + throw new \RuntimeException("The second last param isn't an object."); + } + + if (get_class($model) !== (string) Str::of($className)->replaceStart('\\', '')) { + throw new \RuntimeException("The {$className} doesn't match second last binded param."); + } + + /** @var \Illuminate\Database\Eloquent\Model|null */ + $model = $className::query()->where($model->getRouteKeyName(), $model->getRouteKey())->first(); + + if (!$model) { + return back()->with('error', trans('crud.messages.order_not_changed')); + } + + return DB::transaction(function () use ($request, $className, $model) { + /** @var \Illuminate\Database\Eloquent\Model|null */ + $tmp = $className::where('order', $request->direction ? '<' : '>', $model->getOriginal('order')) + ->orderBy('order', $request->direction ? 'DESC' : 'ASC')->first(); + + if (!$tmp) { + return back()->with('error', trans('crud.messages.order_not_changed')); + } + + $newOrder = $tmp->getOriginal('order'); + // @phpstan-ignore property.notFound + $tmp->order = $model->getOriginal('order'); + $tmp->saveQuietly(); + // @phpstan-ignore property.notFound + $model->order = $newOrder; + $model->saveQuietly(); + Session::flash('success', trans('crud.messages.order_changed')); + + return back(); + }); + } } diff --git a/app/Http/Controllers/Bo/ContactController.php b/app/Http/Controllers/Bo/ContactController.php index bf9cc6b..4ab4511 100644 --- a/app/Http/Controllers/Bo/ContactController.php +++ b/app/Http/Controllers/Bo/ContactController.php @@ -34,7 +34,11 @@ class ContactController extends Controller 'email', ); } - $searchFields = \implode(',', [trans('Nom'), trans('Prénom'), trans('Email')]); + $searchFields = \implode(', ', [ + trans('validation.attributes.last_name'), + trans('validation.attributes.email'), + trans('validation.attributes.phone'), + ]); /** Sort columns with a query */ $this->sortQuery($query); diff --git a/app/Http/Controllers/Bo/DocumentController.php b/app/Http/Controllers/Bo/DocumentController.php index e663126..1a9ce77 100644 --- a/app/Http/Controllers/Bo/DocumentController.php +++ b/app/Http/Controllers/Bo/DocumentController.php @@ -45,7 +45,7 @@ class DocumentController extends Controller 'title', ); } - $searchFields = trans('Titre'); + $searchFields = trans('validation.attributes.title'); /** Search by tags */ $query->when($request->tag, function ($query) use ($request) { diff --git a/app/Http/Controllers/Bo/FormularyController.php b/app/Http/Controllers/Bo/FormularyController.php index 6d8fc44..dc9f748 100644 --- a/app/Http/Controllers/Bo/FormularyController.php +++ b/app/Http/Controllers/Bo/FormularyController.php @@ -36,7 +36,7 @@ class FormularyController extends Controller 'name', ); } - $searchFields = trans('Nom'); + $searchFields = trans('validation.attributes.name'); /** Sort columns with a query */ $this->sortQuery($query); diff --git a/app/Http/Controllers/Bo/TagController.php b/app/Http/Controllers/Bo/TagController.php index 83c4582..ed50871 100644 --- a/app/Http/Controllers/Bo/TagController.php +++ b/app/Http/Controllers/Bo/TagController.php @@ -34,7 +34,7 @@ class TagController extends Controller 'name', ); } - $searchFields = trans('Nom'); + $searchFields = trans('validation.attributes.name'); /** Sort columns with a query */ $this->sortQuery($query); diff --git a/app/Policies/AppUserPolicy.php b/app/Policies/AppUserPolicy.php new file mode 100644 index 0000000..49e4d24 --- /dev/null +++ b/app/Policies/AppUserPolicy.php @@ -0,0 +1,21 @@ +get()->map(function (AppUser $appUser, int $key) { + $appUser->order = $key + 1; + $appUser->saveQuietly(); + }); + Document::query()->get()->map(function (Document $document, int $key) { + $document->order = $key + 1; + $document->saveQuietly(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down(): void + { + AppUser::query()->get()->map(function (AppUser $appUser) { + $appUser->order = 0; + $appUser->saveQuietly(); + }); + Document::query()->get()->map(function (Document $document) { + $document->order = 0; + $document->saveQuietly(); + }); + } +}; diff --git a/resources/sass/bo/base/_common.scss b/resources/sass/bo/base/_common.scss index c4723a9..d1e69ee 100644 --- a/resources/sass/bo/base/_common.scss +++ b/resources/sass/bo/base/_common.scss @@ -57,3 +57,7 @@ .table-col-sorter { height: 3rem; } + +main { + min-height: calc(100vh - 56px - 40px); +} diff --git a/resources/sass/bo/pages/.gitkeep b/resources/sass/bo/pages/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/resources/sass/bo/partials/.gitkeep b/resources/sass/bo/partials/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/resources/views/bo/layout.blade.php b/resources/views/bo/layout.blade.php index a8aff34..58e8b73 100644 --- a/resources/views/bo/layout.blade.php +++ b/resources/views/bo/layout.blade.php @@ -7,24 +7,18 @@
@include('bo.layouts.header') -