ldc-supportweb/app/Http/Controllers/UserController.php
2022-04-19 11:39:27 +02:00

78 lines
2 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Auth\ForgotPasswordController;
use App\Models\User;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Kwaadpepper\CrudPolicies\Traits\CrudController;
class UserController extends Controller
{
use CrudController {
__construct as __CrudConstructor;
}
public function __construct()
{
parent::__construct();
$this->__CrudConstructor();
$this->authorizeResource(User::class, 'user');
}
/** @var User */
public static $modelClass = User::class;
public static $layout = 'layout.app';
public function storedModel(Model &$model)
{
/** @var \App\Models\User */
$model = $model;
$model->sendMailConfirm();
}
public function passwordReset()
{
return view('users.passwordReset');
}
public function passwordResetSubmit()
{
/** @var \App\Models\User */
$user = auth()->user();
$request = new Request(['email' => $user->email]);
return app(ForgotPasswordController::class)->sendResetLinkEmail($request);
}
public function stats()
{
$user = Auth::user();
$stats = [];
for ($i = 2021; $i <= date('Y'); $i++) {
$start = $i . '-03-01';
$end = $i + 1 . '-02-' . $this->getLastDayFebruary($i + 1);
$datas = $user->schedules()->selectRaw('count(id) as nb, activity')
->whereBetween('date', [$start, $end])
->groupBy('activity')
->orderBy('activity', 'ASC')
->get();
$stats[sprintf("%d/%d", $i, $i + 1)] = $datas;
}
return view('users.stats', ['stats' => array_reverse($stats)]);
}
private function getLastDayFebruary($year)
{
if ((is_int($year / 4) && !is_int($year / 100)) || is_int($year / 400)) {
return 29;
}
return 28;
}
}