@php $faviconPath = 'images/branding/logo-cefyt-dark.png'; $faviconVersion = file_exists(public_path($faviconPath)) ? filemtime(public_path($faviconPath)) : time(); $cssPath = 'css/app.css'; $cssVersion = file_exists(public_path($cssPath)) ? filemtime(public_path($cssPath)) : time(); @endphp Planilla mensual de asistencia @php $subject = $courseOffering; $career = $courseOffering->career; $configurationUrl = route('course-offerings.index', [ 'career' => $career->code, 'q' => $subject->name, 'course_offering_id' => $courseOffering->id, ]).'#configuracion-horarios'; $slots = $courseOffering->scheduleSlots ->sortBy(['day_of_week', 'time_slot']) ->map(fn ($slot) => trim($slot->day_of_week.' '.$slot->time_slot.' '.$slot->classroom)) ->filter() ->values(); $dateGroups = $monthlyColumns->groupBy('date_key'); $summaryCols = 3; @endphp

Planilla de asistencia mensual

{{ $subject->name }}

{{ $career->name }} · {{ $subject->year_number }}° año · {{ $courseOffering->academic_year }}

Docente: {{ $courseOffering->teacher?->name ?? 'A confirmar' }}

Mes: {{ $month->format('m/Y') }}

Horario: {{ $slots->join(' ยท ') ?: 'A completar' }}

@if ($monthlyColumns->isEmpty())
Esta materia no tiene horarios cargados para calcular las fechas del mes.
@else
@foreach ($dateGroups as $dateKey => $columns) @php $first = $columns->first(); @endphp @endforeach @foreach ($dateGroups as $columns) @foreach ($columns as $column) @endforeach @endforeach @forelse ($enrollments as $enrollment) @php $summary = $attendanceSummary[$enrollment->id] ?? null; @endphp @foreach ($monthlyColumns as $column) @php $markKey = $column['date_key'].'|'.$column['slot_id']; $mark = $attendanceMarks[$enrollment->id][$markKey] ?? ''; @endphp @endforeach @empty @endforelse @for ($extraRow = 0; $extraRow < 2; $extraRow++) @foreach ($monthlyColumns as $column) @endforeach @endfor
@endif