Compare commits
6 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3ef0b3c144 | ||
|
|
22f5e907d0 | ||
|
|
faa9f2ce33 | ||
|
|
cf8057d351 | ||
|
|
67d7e54c1c | ||
|
|
c51bf890b6 |
6 changed files with 2378 additions and 12583 deletions
4
.gitignore
vendored
4
.gitignore
vendored
|
|
@ -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
|
||||||
|
|
@ -34,4 +34,4 @@ yarn-error.log
|
||||||
/.idea
|
/.idea
|
||||||
/.vscode
|
/.vscode
|
||||||
*.sqlite*
|
*.sqlite*
|
||||||
auth.json
|
auth.json
|
||||||
|
|
|
||||||
4
.gitmodules
vendored
4
.gitmodules
vendored
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
819
composer.lock
generated
File diff suppressed because it is too large
Load diff
14032
package-lock.json
generated
14032
package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,5 @@
|
||||||
{
|
{
|
||||||
|
"name": "srcs",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "npm run development",
|
"dev": "npm run development",
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue