2021-06-18 15:39:19 +02:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
2021-08-01 18:19:55 +02:00
|
|
|
use App\Http\Controllers\Auth\ForgotPasswordController;
|
2021-06-18 15:39:19 +02:00
|
|
|
use App\Models\User;
|
2021-06-29 09:12:35 +02:00
|
|
|
use Illuminate\Database\Eloquent\Model;
|
2021-08-01 18:19:55 +02:00
|
|
|
use Illuminate\Http\Request;
|
2022-02-09 13:11:29 +00:00
|
|
|
use Illuminate\Support\Facades\Auth;
|
2021-07-24 14:20:56 +02:00
|
|
|
use Kwaadpepper\CrudPolicies\Traits\CrudController;
|
2021-06-18 15:39:19 +02:00
|
|
|
|
2021-07-24 14:20:56 +02:00
|
|
|
class UserController extends Controller
|
2021-06-18 15:39:19 +02:00
|
|
|
{
|
2021-07-24 14:20:56 +02:00
|
|
|
use CrudController;
|
2021-06-18 15:39:19 +02:00
|
|
|
|
|
|
|
|
/** @var User */
|
2021-07-24 14:20:56 +02:00
|
|
|
public static $modelClass = User::class;
|
|
|
|
|
|
|
|
|
|
public static $layout = 'layout.app';
|
2021-06-29 09:12:35 +02:00
|
|
|
|
|
|
|
|
public function storedModel(Model &$model)
|
|
|
|
|
{
|
|
|
|
|
/** @var \App\Models\User */
|
|
|
|
|
$model = $model;
|
|
|
|
|
$model->sendMailConfirm();
|
|
|
|
|
}
|
2021-08-01 18:19:55 +02:00
|
|
|
|
|
|
|
|
public function passwordResetSubmit()
|
|
|
|
|
{
|
|
|
|
|
/** @var \App\Models\User */
|
2022-03-29 16:57:54 +02:00
|
|
|
$user = auth()->user();
|
2021-08-01 18:19:55 +02:00
|
|
|
$request = new Request(['email' => $user->email]);
|
|
|
|
|
return app(ForgotPasswordController::class)->sendResetLinkEmail($request);
|
|
|
|
|
}
|
2022-02-09 13:11:29 +00:00
|
|
|
|
|
|
|
|
public function stats()
|
|
|
|
|
{
|
2022-03-29 16:57:54 +02:00
|
|
|
$user = Auth::user();
|
2022-02-09 13:11:29 +00:00
|
|
|
$stats = [];
|
|
|
|
|
|
|
|
|
|
for ($i = 2021; $i <= date('Y'); $i++) {
|
|
|
|
|
$start = $i . '-03-01';
|
2022-03-29 16:57:54 +02:00
|
|
|
$end = $i + 1 . '-02-' . $this->getLastDayFebruary($i + 1);
|
2022-02-09 13:11:29 +00:00
|
|
|
|
|
|
|
|
$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;
|
|
|
|
|
}
|
|
|
|
|
|
2022-02-09 14:43:05 +00:00
|
|
|
return view('users.stats', ['stats' => array_reverse($stats)]);
|
2022-02-09 13:11:29 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private function getLastDayFebruary($year)
|
|
|
|
|
{
|
|
|
|
|
if ((is_int($year / 4) && !is_int($year / 100)) || is_int($year / 400)) {
|
|
|
|
|
return 29;
|
|
|
|
|
}
|
|
|
|
|
return 28;
|
|
|
|
|
}
|
2021-06-18 15:39:19 +02:00
|
|
|
}
|