93 lines
2.7 KiB
PHP
93 lines
2.7 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;
|
|
}
|
|
}
|