Staff Roster

Back to Staff @if(session('success'))
{{ session('success') }}
@endif @if($errors->any())
{{ $errors->first() }}
@endif {{-- Create Shift panel --}}

New Shift Type

@csrf
{{-- Week nav --}}
Prev

Week of {{ \Carbon\Carbon::parse($week_start)->format('d M Y') }}

{{ count($days) }} days shown

Next
{{-- No shifts notice --}} @if($shifts->isEmpty())

No shift types defined yet.

Click Create Shift above to define Morning, Evening, Night shifts.

@else {{-- Shift legend --}}

Shift Types

@foreach($shifts as $shift)
{{ $shift->name }} · {{ $shift->start_time }}–{{ $shift->end_time }}
@csrf @method('DELETE')
@endforeach
@endif {{-- Roster grid (Alpine + fetch for interactive assign/remove) --}}
@foreach($days as $day) @endforeach @forelse($staff as $s) @foreach($days as $day) @php $cellEntry = null; if (isset($rosters[$s->id])) { foreach ($rosters[$s->id] as $r) { if ($r->roster_date == $day['date']) { $cellEntry = $r; break; } } } @endphp @endforeach @empty @endforelse
Staff Member {{ $day['label'] }} @if($day['is_today']) @endif
{{ $s->name }}

{{ $s->staffProfile?->designation ?? 'Staff' }}

@if($cellEntry)
{{ $cellEntry->shift?->name ?? '—' }}
{{ $cellEntry->shift?->start_time }}–{{ $cellEntry->shift?->end_time }}
@elseif($shifts->isNotEmpty())
@csrf
@else
@endif

No staff members found.