Merge branch 'trunk'
This commit is contained in:
commit
28ee9f593d
3 changed files with 85 additions and 25 deletions
|
|
@ -28,32 +28,49 @@ class ScheduleController extends Controller
|
|||
parent::__construct();
|
||||
$this->middleware('is-admin');
|
||||
}
|
||||
|
||||
/**
|
||||
* Display schedule.
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Contracts\View\View|\Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse
|
||||
* @throws \Illuminate\Contracts\Container\BindingResolutionException BindingResolutionException.
|
||||
* @throws \Symfony\Component\Routing\Exception\RouteNotFoundException RouteNotFoundException.
|
||||
*/
|
||||
public function index(Request $request)
|
||||
{
|
||||
if (!\auth()->user()->role->equals(Role::developper()) && !is_null($request->cookie('userAuthSchedule'))) {
|
||||
return $this->showAllSchedules();
|
||||
}
|
||||
|
||||
$date = CarbonImmutable::now()->startOfWeek();
|
||||
$nbweeks = config('schedules.shownWeeks');
|
||||
if ($request->p) {
|
||||
$date = CarbonImmutable::createFromFormat('d/m/Y', $request->p)->startOfWeek();
|
||||
}
|
||||
|
||||
$users = [];
|
||||
if (!is_null($request->cookie('userAuthSchedule'))) {
|
||||
$dbusers = User::where('id', auth()->user()->id)->get();
|
||||
} else {
|
||||
$dbusers = User::where('role', Role::developper())->get();
|
||||
}
|
||||
|
||||
$dbusers = User::where('role', Role::developper())->get();
|
||||
$users = [];
|
||||
foreach ($dbusers as $user) {
|
||||
$users[$user->id] = ['name' => $user->name];
|
||||
}
|
||||
|
||||
$schedules = Schedule::whereHas('user', function(Builder $query) {
|
||||
$query->where('deleted_at', NULL);
|
||||
$schedules = Schedule::whereHas('user', function (Builder $query) use ($request) {
|
||||
$query->where('deleted_at', null);
|
||||
$query->where('role', Role::developper());
|
||||
if (!is_null($request->cookie('userAuthSchedule'))) {
|
||||
$query->where('id', auth()->user()->id);
|
||||
}
|
||||
})
|
||||
->whereDate('date', '>=', $date)
|
||||
->whereDate('date', '<=', $date->addDays($nbweeks * 7 - 1))
|
||||
->orderBy('user_id')
|
||||
->orderBy('slot')
|
||||
->orderBy('date')
|
||||
->get();
|
||||
|
||||
->whereDate('date', '>=', $date)
|
||||
->whereDate('date', '<=', $date->addDays($nbweeks * 7 - 1))
|
||||
->orderBy('user_id')
|
||||
->orderBy('slot')
|
||||
->orderBy('date')
|
||||
->get();
|
||||
|
||||
$arSchedules = array();
|
||||
$prevUserId = null;
|
||||
$prevDate = null;
|
||||
|
|
@ -72,7 +89,7 @@ class ScheduleController extends Controller
|
|||
}
|
||||
|
||||
if ($prevUserId != $schedule->user_id) {
|
||||
// nouveau user
|
||||
// New user.
|
||||
$arSchedules[$schedule->user_id] = array(
|
||||
$schedule->slot => array(
|
||||
$schedule->date->format('d/m/Y') => array(
|
||||
|
|
@ -86,9 +103,9 @@ class ScheduleController extends Controller
|
|||
)
|
||||
);
|
||||
} else {
|
||||
// same user
|
||||
// Same user.
|
||||
if ($prevSlot != $schedule->slot) {
|
||||
// new slot
|
||||
// New slot.
|
||||
$arSchedules[$schedule->user_id][$schedule->slot] = array(
|
||||
$schedule->date->format('d/m/Y') => array(
|
||||
'id' => $schedule->id,
|
||||
|
|
@ -100,9 +117,9 @@ class ScheduleController extends Controller
|
|||
),
|
||||
);
|
||||
} else {
|
||||
// same slot
|
||||
// Same slot.
|
||||
if ($prevDate != $schedule->date) {
|
||||
// new date
|
||||
// New date.
|
||||
$arSchedules[$schedule->user_id][$schedule->slot][$schedule->date->format('d/m/Y')] = array(
|
||||
'id' => $schedule->id,
|
||||
'type' => $schedule->activity,
|
||||
|
|
@ -111,10 +128,11 @@ class ScheduleController extends Controller
|
|||
// $schedule->id_lie,
|
||||
'model_lie' => $model_lie,
|
||||
);
|
||||
} else {
|
||||
}
|
||||
// else {
|
||||
// same date
|
||||
// should never be here
|
||||
}
|
||||
// }.
|
||||
}//end if
|
||||
}//end if
|
||||
$prevUserId = $schedule->user_id;
|
||||
|
|
@ -134,6 +152,12 @@ class ScheduleController extends Controller
|
|||
return view('schedule.index', compact('users', 'date', 'weekCells', 'arSchedules'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Display cell content.
|
||||
* @param \App\Http\Requests\StoreScheduleRequest $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
* @throws \Illuminate\Contracts\Container\BindingResolutionException BindingResolutionException.
|
||||
*/
|
||||
public function setCellContent(StoreScheduleRequest $request)
|
||||
{
|
||||
$date = CarbonImmutable::createFromFormat('d/m/Y', $request->date);
|
||||
|
|
@ -169,10 +193,38 @@ class ScheduleController extends Controller
|
|||
return \response()->json(['status' => true, 'sched' => $arSchd]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delet cell content.
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return \Illuminate\Http\JsonResponse
|
||||
* @throws \Illuminate\Contracts\Container\BindingResolutionException BindingResolutionException.
|
||||
*/
|
||||
public function eraseCellContent(Request $request)
|
||||
{
|
||||
$schedule = Schedule::findOrFail($request->id);
|
||||
$schedule->delete();
|
||||
return \response()->json(['status' => true]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Display the auth user schedule.
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
* @throws \Illuminate\Contracts\Container\BindingResolutionException BindingResolutionException.
|
||||
* @throws \Symfony\Component\Routing\Exception\RouteNotFoundException RouteNotFoundException.
|
||||
*/
|
||||
public function showMySchedule()
|
||||
{
|
||||
return \redirect()->route('schedule.index')->withCookie(cookie()->forever('userAuthSchedule', 'true'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Display all the dev schedule.
|
||||
* @return \Illuminate\Http\RedirectResponse
|
||||
* @throws \Illuminate\Contracts\Container\BindingResolutionException BindingResolutionException.
|
||||
* @throws \Symfony\Component\Routing\Exception\RouteNotFoundException RouteNotFoundException.
|
||||
*/
|
||||
public function showAllSchedules()
|
||||
{
|
||||
return \redirect()->route('schedule.index')->withCookie(cookie()->forget('userAuthSchedule'));
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,17 +5,23 @@
|
|||
@section('content')
|
||||
<div id="planning" class="container container-xxl vueComponent">
|
||||
<div class="row mb-3 sticky-top bg-white">
|
||||
<div class="col-2">
|
||||
<h1><a href="{{ route('schedule.index') }}">{{__('Planning') }}</a></h1>
|
||||
</div>
|
||||
<div class="col pt-2">
|
||||
<h4 class="d-inline me-3">Légende</h4>
|
||||
<div class="col">
|
||||
<h4 class="d-inline me-3">{{__('Légende')}}</h4>
|
||||
<div class="d-inline">
|
||||
@foreach(CellType::toArray() as $type)
|
||||
<span class="{{ Str::slug("celltype-$type->label") }}">{{ $type->label }}</span>
|
||||
@endforeach
|
||||
</div>
|
||||
</div>
|
||||
@if (\auth()->user()->role->equals(Role::developper()))
|
||||
<div class="col-2 pt-2">
|
||||
@if (request()->cookie('userAuthSchedule'))
|
||||
<a href="{{ route('schedule.showAllSchedules') }}" class="btn btn-primary btn-sm">{{__('Afficher les plannings')}}</a>
|
||||
@else
|
||||
<a href="{{ route('schedule.showMySchedule') }}" class="btn btn-primary btn-sm">{{__('Afficher mon planning')}}</a>
|
||||
@endif
|
||||
</div>
|
||||
@endif
|
||||
</div>
|
||||
@php
|
||||
$dataVue = [
|
||||
|
|
|
|||
|
|
@ -195,5 +195,7 @@ Route::middleware('auth:web')->group(function () {
|
|||
->name('setCellContent');
|
||||
Route::post('/eraseCellContent', [ScheduleController::class, 'eraseCellContent'])
|
||||
->name('eraseCellContent');
|
||||
Route::get('/show-my-schedule', [ScheduleController::class, 'showMySchedule'])->name('showMySchedule');
|
||||
Route::get('/show-all-schedules', [ScheduleController::class, 'showAllSchedules'])->name('showAllSchedules');
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue