ldc-com-app-bo/app/Http/Controllers/UsersController.php

96 lines
2.6 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Requests\Users\StoreRequest;
use App\Http\Requests\Users\ImportRequest;
use App\Http\Requests\Users\UpdateRequest;
use App\Imports\UsersImport;
use App\Models\AppUser;
use App\Models\Directories;
use Illuminate\Database\Eloquent\Collection;
use Maatwebsite\Excel\Facades\Excel;
class UsersController extends Controller
{
public function index()
{
return view('app-users.index', ['app_users' => AppUser::all()]);
}
public function create()
{
return view('app-users.create');
}
public function store(StoreRequest $request)
{
$appUser = new AppUser();
$appUser->fill($request->validated());
$appUser->activated = $request->has('activated') ? 1 : 0;
$appUser->save();
return redirect()->route('app-users.edit', ['app_user' => $appUser])->with('status', __('Utilisateur créé.'));
}
public function edit(AppUser $appUser)
{
return view('app-users.edit', ['app_user' => $appUser, 'folders' => $this->renderFolders(Directories::where('needAuthorization', 1)->get())]);
}
public function update(UpdateRequest $request, AppUser $appUser)
{
$appUser->fill($request->validated());
$appUser->activated = $request->has('activated') ? 1 : 0;
$appUser->save();
return redirect()->route('app-users.edit', ['app_user' => $appUser])->with('status', __('Utilisateur enregistré.'));
}
/**
* Delete an app user
*
* @param AppUser $app_user
* @return response
*/
public function destroy(AppUser $app_user)
{
$app_user->delete();
return redirect()->route('app-users.index')->with('status', __('Utilisateur supprimé.'));
}
/**
* Mass import by CSV
* matricule;lastname;firstname;email
* default = USER
*/
public function import(ImportRequest $request)
{
Excel::import(new UsersImport, $request->import, null, \Maatwebsite\Excel\Excel::CSV);
return redirect()->route('app-users.index')->with('status', 'Import terminé.');
}
/**
* Render folders
*
* @param Collection $folders
* @return array
*/
private function renderFolders(Collection $folders)
{
foreach ($folders as $k => $folder) {
$name = "";
$folders[$k]['parents'] = $folder->parents;
foreach ($folder->parents as $parent)
$name .= json_decode($parent->name)->fr . " / ";
$name .= json_decode($folder->name)->fr;
$folders[$k]['name'] = $name;
}
return $folders;
}
}