DossierController refactor with typehint
This commit is contained in:
parent
22f5e907d0
commit
3ef0b3c144
1 changed files with 59 additions and 42 deletions
|
|
@ -15,6 +15,7 @@ use App\Models\Marque;
|
|||
use App\Models\Media;
|
||||
use App\Models\Variante;
|
||||
use App\Models\Format;
|
||||
use Illuminate\Contracts\Database\Eloquent\Builder;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
|
|
@ -38,37 +39,42 @@ class DossierController extends Controller
|
|||
$select = ['id', 'libelle', 'system'];
|
||||
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Dossier> Dossiers publiques */
|
||||
$publicFolders = Dossier::whereHas('sujet', function ($q) use ($request) {
|
||||
$q->where('codeSujet', $request->sujet_id);
|
||||
})->whereIsPrivate(false)->whereNull('parent_id')->select($select)->get();
|
||||
$publicFolders = Dossier::query()
|
||||
->whereHas('sujet', fn (Builder $q) => $q->where('codeSujet', $request->input('sujet_id')))
|
||||
->where('is_private', false)
|
||||
->whereDoesntHave('dossierParent')
|
||||
->select($select)->get();
|
||||
|
||||
|
||||
// On récupère les dossiers privés.
|
||||
// * On récupère les dossiers privés.
|
||||
/** @var \Illuminate\Database\Eloquent\Builder */
|
||||
$privateQuery = Dossier::whereHas('sujet', function ($q) use ($request) {
|
||||
$q->where('codeSujet', $request->sujet_id);
|
||||
})->select($select)->whereIsPrivate(true);
|
||||
$privateQuery = Dossier::query()
|
||||
->whereHas('sujet', fn (Builder $q) => $q->where('codeSujet', $request->input('sujet_id')))
|
||||
->where('is_private', true)
|
||||
->select($select);
|
||||
|
||||
// If not admin, get using brands.
|
||||
// ? Is admin ?
|
||||
if (!$user->hasRole(config('roles.const.ADMIN'))) {
|
||||
// * If not admin, get using brands.
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<integer> Codes marques */
|
||||
$marques = $user->marques()->pluck('codMarq');
|
||||
$privateQuery->whereHas('marques', function ($q) use ($marques) {
|
||||
$q->whereIn('codMarq', $marques);
|
||||
});
|
||||
$privateQuery->whereHas('marques', fn (Builder $q) => $q->whereIn('codMarq', $marques));
|
||||
}
|
||||
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Dossier> Dossiers privés */
|
||||
$privateFolders = $privateQuery->get();
|
||||
|
||||
$foldersCollection = $publicFolders->merge($privateFolders);
|
||||
$foldersCollection = $foldersCollection->sortBy('libelle', SORT_NATURAL | SORT_FLAG_CASE)
|
||||
$foldersCollection = $foldersCollection
|
||||
->sortBy('libelle', SORT_NATURAL | SORT_FLAG_CASE)
|
||||
->sortBy('favoris')->values();
|
||||
|
||||
// Ajout du dépôt de fichier pour les admin.
|
||||
// ? Is admin ?
|
||||
if ($user->hasRole(config('roles.const.ADMIN'))) {
|
||||
// * Ajout du dépôt de fichier pour les admin.
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Dossier> Dossiers depots */
|
||||
$depotQuery = Dossier::whereNull('parent_id')
|
||||
$depotQuery = Dossier::query()
|
||||
->whereDoesntHave('dossierParent')
|
||||
->where('system', true)
|
||||
->orderBy('libelle', 'ASC')
|
||||
->get();
|
||||
|
|
@ -76,13 +82,15 @@ class DossierController extends Controller
|
|||
}
|
||||
|
||||
$folders['data'] = new NestedDossiersListResource($foldersCollection);
|
||||
$folders['racineCount'] = Media::whereSujetId($request->sujet_id)
|
||||
->whereNull('dossier_id')
|
||||
->where(function ($query) use ($user) {
|
||||
$query->where('statut', MediaStatut::public_etendu)
|
||||
$folders['racineCount'] = Media::query()
|
||||
->whereHas('sujet', fn (Builder $q) => $q->where('id', $request->input('sujet_id')))
|
||||
->whereDoesntHave('dossier')
|
||||
->where(
|
||||
fn (Builder $q) =>
|
||||
$q->where('statut', MediaStatut::public_etendu)
|
||||
->orWhere('statut', MediaStatut::public)
|
||||
->orWhere('created_by', $user->id);
|
||||
})->count();
|
||||
->orWhere('created_by', $user->id)
|
||||
)->count();
|
||||
|
||||
return response()->json($folders);
|
||||
}
|
||||
|
|
@ -99,13 +107,16 @@ class DossierController extends Controller
|
|||
$user = auth()->user();
|
||||
|
||||
$response = [];
|
||||
$response['variantes'] = Variante::where('sujet_id', $request->sujetId)->get();
|
||||
$response['variantes'] = Variante::query()
|
||||
->whereHas('sujet', fn (Builder $q) => $q->where('id', $request->input('sujetId')))
|
||||
->get();
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Format> */
|
||||
$FormatsSujet = Format::whereHas('sujets', function ($query) use ($request) {
|
||||
$query->where('sujet_id', $request->sujetId);
|
||||
})->get();
|
||||
$FormatsSujet = Format::query()
|
||||
->whereHas('sujets', fn (Builder $q) => $q->where('sujet_id', $request->input('sujetId')))
|
||||
->get();
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Format> */
|
||||
$FormatsSystem = Format::withoutGlobalScope('App\Scopes\SystemScope')
|
||||
$FormatsSystem = Format::query()
|
||||
->withoutGlobalScope('App\Scopes\SystemScope')
|
||||
->where('system', true)->get();
|
||||
$response['formats'] = $FormatsSujet->merge($FormatsSystem);
|
||||
|
||||
|
|
@ -131,14 +142,15 @@ class DossierController extends Controller
|
|||
$user->authorizeRoles(config('roles.const.ADMIN'));
|
||||
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Dossier> */
|
||||
$dossiers = Dossier::whereNull('parent_id')
|
||||
->where('system', false)
|
||||
$dossiers = Dossier::query()
|
||||
->whereDoesntHave('dossierParent')
|
||||
->where('system', false)
|
||||
->orderBy('libelle', 'asc')
|
||||
->get();
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Sujet> */
|
||||
$sujets = Sujet::where('sujet_dam', true)->get();
|
||||
$sujets = Sujet::query()->where('sujet_dam', true)->get();
|
||||
|
||||
return view('dossiers.index')->with([
|
||||
return view('dossiers.index', [
|
||||
'dossiers' => $dossiers,
|
||||
'sujets' => $sujets,
|
||||
]);
|
||||
|
|
@ -154,9 +166,13 @@ class DossierController extends Controller
|
|||
{
|
||||
if ($request->sub) {
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Dossier> */
|
||||
$dossiers = Dossier::whereNull('parent_id')->where('system', false)
|
||||
$dossiers = Dossier::query()
|
||||
->whereDoesntHave('dossierParent')
|
||||
->where('system', false)
|
||||
->orderBy('libelle', 'asc')->get();
|
||||
return view('dossiers.create-sub')->with(['dossiers' => $dossiers]);
|
||||
return view('dossiers.create-sub', [
|
||||
'dossiers' => $dossiers
|
||||
]);
|
||||
}
|
||||
|
||||
/** @var \App\Models\User */
|
||||
|
|
@ -166,10 +182,11 @@ class DossierController extends Controller
|
|||
$marques = Marque::all();
|
||||
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Sujet> */
|
||||
$sujets = Sujet::where('sujet_dam', true)->get();
|
||||
$sujets = Sujet::query()->where('sujet_dam', true)->get();
|
||||
|
||||
return view('dossiers.create')->with([
|
||||
'marques' => $marques, 'sujets' => $sujets
|
||||
'marques' => $marques,
|
||||
'sujets' => $sujets
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -192,19 +209,19 @@ class DossierController extends Controller
|
|||
|
||||
if ($request->sub) {
|
||||
/** @var \App\Models\Dossier */
|
||||
$parent_dossier = Dossier::findOrFail($request->parent_id);
|
||||
$parent_dossier = Dossier::query()->findOrFail($request->input('parent_id'));
|
||||
$dossier->sujet()->associate($parent_dossier->sujet);
|
||||
} else {
|
||||
$dossier->sujet()->associate($request->sujet);
|
||||
$dossier->sujet()->associate($request->input('sujet'));
|
||||
}
|
||||
|
||||
if ($dossier->saveOrFail()) {
|
||||
// ---- Les marques
|
||||
if ($request->marques) {
|
||||
$dossier->marques()->sync($request->marques);
|
||||
if ($request->input('marques')) {
|
||||
$dossier->marques()->sync($request->input('marques'));
|
||||
}
|
||||
return redirect()->route('dossier.edit', ['dossier' => $dossier])
|
||||
->with('success', 'Le dossier a été enregistré');
|
||||
->with('success', 'Le dossier a été enregistré');
|
||||
}
|
||||
});
|
||||
return back();
|
||||
|
|
@ -228,9 +245,9 @@ class DossierController extends Controller
|
|||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Sujet> */
|
||||
$dossierSujets = $dossier->sujets;
|
||||
/** @var \Illuminate\Database\Eloquent\Collection<\App\Models\Sujet> */
|
||||
$sujets = Sujet::where('sujet_dam', true)->get();
|
||||
$sujets = Sujet::query()->where('sujet_dam', true)->get();
|
||||
|
||||
return view('dossiers.edit')->with([
|
||||
return view('dossiers.edit', [
|
||||
'dossier' => $dossier,
|
||||
'dossierMarques' => $dossierMarques,
|
||||
'marques' => $marques,
|
||||
|
|
@ -261,7 +278,7 @@ class DossierController extends Controller
|
|||
$dossier->marques()->sync($request->marques);
|
||||
}
|
||||
return redirect()->route('dossier.edit', ['dossier' => $dossier])
|
||||
->with('success', 'Le dossier a été mis à jour');
|
||||
->with('success', trans('Le dossier a été mis à jour'));
|
||||
}
|
||||
});
|
||||
return back();
|
||||
|
|
@ -280,7 +297,7 @@ class DossierController extends Controller
|
|||
$user->authorizeRoles(config('roles.const.ADMIN'));
|
||||
if ($dossier->deleteOrFail()) {
|
||||
return \response()->redirectToRoute('dossier.index')
|
||||
->with('warning', trans('Le dossier à été supprimé'));
|
||||
->with('warning', trans('Le dossier à été supprimé'));
|
||||
}
|
||||
return back();
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue