Compare commits

...
Sign in to create a new pull request.

6 commits

Author SHA1 Message Date
Jérémy Munsch
3ef0b3c144
DossierController refactor with typehint 2023-12-14 13:04:24 +01:00
Jérémy Munsch
22f5e907d0
.gitignore update 2023-12-14 12:02:40 +01:00
Jérémy Munsch
faa9f2ce33
npm update 2023-12-14 11:49:40 +01:00
Jérémy Munsch
cf8057d351
composer update 2023-12-14 11:48:21 +01:00
Jérémy Munsch
67d7e54c1c
add name to package json 2023-12-14 11:47:08 +01:00
Jérémy Munsch
c51bf890b6
update client api + add .gitmodules 2023-12-14 11:45:25 +01:00
6 changed files with 2378 additions and 12583 deletions

2
.gitignore vendored
View file

@ -25,7 +25,7 @@ public/uploads/*
/storage/*.key /storage/*.key
/vendor /vendor
.env .env*
.phpunit.result.cache .phpunit.result.cache
Homestead.json Homestead.json
Homestead.yaml Homestead.yaml

4
.gitmodules vendored
View file

@ -1,3 +1,3 @@
[submodule "clients/Api"] [submodule "clients/Api"]
path = clients/Api path = clients/Api
url = git@gitlab.com:service-web-lab/dam-client.git url = ../dam-client.git

View file

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

819
composer.lock generated

File diff suppressed because it is too large Load diff

14032
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,4 +1,5 @@
{ {
"name": "srcs",
"private": true, "private": true,
"scripts": { "scripts": {
"dev": "npm run development", "dev": "npm run development",