@if($staff->jobTitle && strtolower($staff->jobTitle->slug) === 'teacher' && isset($teacherSlotsData) && $teacherSlotsData['slots']->count() > 0) @php $slots = $teacherSlotsData['slots']; $selectedSlots = $teacherSlotsData['selectedSlots']; $selectedSlotIds = $selectedSlots->pluck('id')->toArray(); // Group slots by track type $trackTypesMap = []; foreach ($slots as $slot) { $trackTypeIds = is_array($slot['track_type_id']) ? $slot['track_type_id'] : [$slot['track_type_id']]; foreach ($trackTypeIds as $trackTypeId) { if (!isset($trackTypesMap[$trackTypeId])) { $trackType = collect($slot['track_types'])->firstWhere('id', $trackTypeId); $trackTypesMap[$trackTypeId] = [ 'name' => $trackType ? $trackType['name'] : "Track {$trackTypeId}", 'slots' => [] ]; } $trackTypesMap[$trackTypeId]['slots'][] = $slot; } } $daysOfWeek = ['Saturday', 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday']; @endphp
{{-- Hint Section --}}
HR Slot
Schedule Slot
Both HR + Schedule
{{-- Accordion for Track Types --}}
@foreach($trackTypesMap as $trackTypeId => $trackTypeData) @php $morningSlots = collect($trackTypeData['slots'])->filter(function($s) { return $s['timing_type'] === 'morning'; })->values(); $nightSlots = collect($trackTypeData['slots'])->filter(function($s) { return $s['timing_type'] === 'night'; })->values(); @endphp

{{-- Morning Shift Table --}} @if($morningSlots->count() > 0) @php $groupedMorning = []; foreach ($morningSlots as $slot) { $timeRange = date('g:i A', strtotime($slot['slot_start'])) . ' - ' . date('g:i A', strtotime($slot['slot_end'])); if (!isset($groupedMorning[$timeRange])) { $groupedMorning[$timeRange] = []; } $groupedMorning[$timeRange][] = $slot; } // Get selected admin for morning shift $selectedAdminIdMorning = '0'; if (isset($teacherOldAdmins)) { $matchingAssignmentMorning = $teacherOldAdmins->first(function($assignment) use ($trackTypeId) { return $assignment->track_type_id == $trackTypeId && $assignment->shift === 'morning'; }); if ($matchingAssignmentMorning) { $selectedAdminIdMorning = $matchingAssignmentMorning->admin_id; } } @endphp
Morning Shift
@foreach($daysOfWeek as $day) @endforeach @foreach($groupedMorning as $timeRange => $timeSlots) @foreach($daysOfWeek as $day) @php $slot = collect($timeSlots)->first(function($s) use ($day) { return strtolower($s['slot_day']) === strtolower($day); }); $isChecked = false; $borderClass = ''; if ($slot) { $selectedSlot = $selectedSlots->first(function($s) use ($slot) { return $s['id'] == $slot['id']; }); if ($selectedSlot && count($selectedSlot['staff_slots']) > 0) { $staffSlot = collect($selectedSlot['staff_slots'])->first(function($ss) use ($slot, $trackTypeId) { return $ss['slot_id'] == $slot['id'] && $ss['track_type_id'] == $trackTypeId; }); if ($staffSlot) { $deptSources = is_array($staffSlot['department_added_by']) ? $staffSlot['department_added_by'] : []; $fromHR = in_array('hr', $deptSources); $fromSchedule = in_array('schedule', $deptSources); if ($fromHR && $fromSchedule) { $borderClass = 'border-both'; } elseif ($fromHR) { $borderClass = 'border-hr'; } elseif ($fromSchedule) { $borderClass = 'border-schedule'; } $isChecked = true; } } } @endphp @endforeach @endforeach
Time Slot{{ $day }}
{{ $timeRange }} @if($slot)
@endif
@endif {{-- Night Shift Table --}} @if($nightSlots->count() > 0) @php $groupedNight = []; foreach ($nightSlots as $slot) { $timeRange = date('g:i A', strtotime($slot['slot_start'])) . ' - ' . date('g:i A', strtotime($slot['slot_end'])); if (!isset($groupedNight[$timeRange])) { $groupedNight[$timeRange] = []; } $groupedNight[$timeRange][] = $slot; } // Get selected admin for night shift $selectedAdminIdNight = '0'; if (isset($teacherOldAdmins)) { $matchingAssignmentNight = $teacherOldAdmins->first(function($assignment) use ($trackTypeId) { return $assignment->track_type_id == $trackTypeId && $assignment->shift === 'night'; }); if ($matchingAssignmentNight) { $selectedAdminIdNight = $matchingAssignmentNight->admin_id; } } @endphp
Night Shift
@foreach($daysOfWeek as $day) @endforeach @foreach($groupedNight as $timeRange => $timeSlots) @foreach($daysOfWeek as $day) @php $slot = collect($timeSlots)->first(function($s) use ($day) { return strtolower($s['slot_day']) === strtolower($day); }); $isChecked = false; $borderClass = ''; if ($slot) { $selectedSlot = $selectedSlots->first(function($s) use ($slot) { return $s['id'] == $slot['id']; }); if ($selectedSlot && count($selectedSlot['staff_slots']) > 0) { $staffSlot = collect($selectedSlot['staff_slots'])->first(function($ss) use ($slot, $trackTypeId) { return $ss['slot_id'] == $slot['id'] && $ss['track_type_id'] == $trackTypeId; }); if ($staffSlot) { $deptSources = is_array($staffSlot['department_added_by']) ? $staffSlot['department_added_by'] : []; $fromHR = in_array('hr', $deptSources); $fromSchedule = in_array('schedule', $deptSources); if ($fromHR && $fromSchedule) { $borderClass = 'border-both'; } elseif ($fromHR) { $borderClass = 'border-hr'; } elseif ($fromSchedule) { $borderClass = 'border-schedule'; } $isChecked = true; } } } @endphp @endforeach @endforeach
Time Slot{{ $day }}
{{ $timeRange }} @if($slot)
@endif
@endif
@endforeach
@else
No available slots

No slots assigned to this Teacher.

@endif