authorizeResource(User::class); } /** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { $users = User::all(); return view('users.index')->with([ 'users' => $users ]); } /** * Show the form for creating a new resource. * * @return \Illuminate\Http\Response */ public function create() { $marques = Marque::orderBy('libMarq', 'asc')->get(); $sujets = Sujet::where('sujet_dam', true)->orderBy('libelle', 'asc')->get(); return view('users.create')->with([ 'marques' => $marques, 'sujets' => $sujets ]); } /** * Store a newly created resource in storage. * * @param \App\Http\Requests\Bo\Users\StoreUserRequest $request * @return \Illuminate\Http\Response */ public function store(StoreUserRequest $request) { return DB::transaction(function () use ($request) { $user = new User(); $user->fill($request->validated()); if ($user->saveOrFail()) { $user->marques()->sync($request->validated('marques')); $user->sujets()->sync($request->validated('sujets')); return redirect()->route('user.edit', ['user' => $user]) ->with('success', 'L\'utilisateur a été enregistré'); } return redirect()->back()->with('error', 'Une erreur s\'est produite, ajout impossible'); }); } /** * Check le matricule avant ajout de l'utilisateur * * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function checkMatricule(Request $request) { Gate::authorize('checkMatricule', User::class); $response = []; $response["exist_bdd"] = false; $response["exist_ldap"] = false; $matricule = $request->input('matricule'); // ---- Ctrl de la présence du matricule en base $user = User::where('matricule', $request->matricule)->first(); if ($user) { $response["exist_bdd"] = true; } $adldap = Adldap::getFacadeRoot(); $results = $adldap->search()->where('uid', '=', $matricule)->first(); if ($results) { $response["exist_ldap"] = true; $ldap_user = []; $ldap_user['firstname'] = $results->getAttribute('givenname')[0]; $ldap_user['lastname'] = $results->getAttribute('sn')[0]; $ldap_user['email'] = $results->getAttribute('mail')[0]; $response["ldap_user"] = $ldap_user; } return response()->json($response); } /** * Display the specified resource. * * @param \App\Models\User $user * @return \Illuminate\Http\Response */ public function show(User $user) { $marques = $user->marques; $sujets = $user->sujets; return view('users.show')->with([ 'user' => $user, 'marques' => $marques, 'sujets' => $sujets ]); } /** * Show the form for editing the specified resource. * * @param \App\Models\User $user * @return \Illuminate\Http\Response */ public function edit(User $user) { $userMarques = $user->marques; $marques = Marque::orderBy('libMarq', 'asc')->get(); $userSujets = $user->sujets; $sujets = Sujet::where('sujet_dam', true)->orderBy('libelle', 'asc')->get(); $users = User::query() ->select(['id', 'email']) ->whereNotIn('role', [ RoleEnum::reader ]) ->where('id', '!=', $user->id) ->orderBy('email') ->get(); return view('users.edit')->with([ 'user' => $user, 'users' => $users, 'userMarques' => $userMarques, 'marques' => $marques, 'userSujets' => $userSujets, 'sujets' => $sujets ]); } /** * Update the specified resource in storage. * * @param \App\Http\Requests\Bo\Users\UpdateUserRequest $request * @param \App\Models\User $user * @return \Illuminate\Http\Response */ public function update(UpdateUserRequest $request, User $user) { return DB::transaction(function () use ($request, $user) { $user->fill($request->validated()); if ($user->saveOrFail()) { $user->marques()->sync($request->validated('marques')); $user->sujets()->sync($request->validated('sujets')); return redirect()->route('user.edit', ['user' => $user]) ->with('success', 'L\'utilisateur a été mis à jour'); } return redirect()->back()->with('error', 'Une erreur s\'est produite, modification impossible'); }); } /** * Remove the specified resource from storage. * * @param \Illuminate\Http\Request $request * @param \App\Models\User $user * @return \Illuminate\Http\Response */ public function destroy(Request $request, User $user) { try { return DB::transaction(function () use ($user) { if ($user->deleteOrFail()) { return redirect() ->route('user.index') ->with('success', trans('L\'utilisateur à été supprimé')); } return redirect()->back()->with('error', 'Erreur lors de la suppression'); }); } catch (\Exception $e) { report($e); return redirect()->back()->with('error', 'Erreur lors de la suppression'); }//end try } /** * Ajouter un dossier en favoris * * @param \Illuminate\Http\Request $request * @param \App\Models\Dossier $dossier * @return \Illuminate\Http\JsonResponse */ public function favorisFolder(Request $request, Dossier $dossier) { /** @var \App\Models\User $localUser */ $localUser = auth()->user(); $dossierFavExists = $localUser->dossiers() ->where('id', $dossier->id)->exists(); if (!$request->boolean('favoris') and $dossierFavExists) { $localUser->dossiers()->detach($dossier->id); } elseif ($request->boolean('favoris') and !$dossierFavExists) { $localUser->dossiers()->attach($dossier->id); } return response()->json(); } /** * Ajouter un panier en favoris * * @param Request $request * @return \Illuminate\Http\JsonResponse */ public function favorisBasket(Request $request) { /** @var \App\Models\User $localUser */ $localUser = auth()->user(); $basket_id = $request->input('basket_id'); $favoris = $request->input('favoris'); $basketFav = $localUser->paniersFavoris()->where('id', $basket_id)->first(); if ($favoris == "false" && $basketFav) { $localUser->paniersFavoris()->detach($basket_id); } elseif ($favoris == "true" && !$basketFav) { $localUser->paniersFavoris()->attach($basket_id); } return response()->json(); } }