requireAdmin(); $userModel = new User(); $horariosModel = new DiasHorarios(); $asignacionModel = new Asignacion(); $db = \Database::getInstance()->getConnection(); $totalUsuarios = count($userModel->getAll()); $totalAyudantes = count($userModel->getAyudantesActivos()); $totalHorarios = count($horariosModel->getAll()); $asignacionActual = $asignacionModel->getAsignacionActual(); $ayudantes = $asignacionModel->getAyudantesPorOrden(); $horarios = $horariosModel->getAll(); $asignaciones = $asignacionModel->getTodasAsignaciones(); $html = PDFGenerator::getStyles(); $html .= PDFGenerator::getHeader('Reporte de Administración'); $html .= '

Estadísticas

'; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= '
Total UsuariosAyudantes ActivosDías ConfiguradosTurno Actual
' . $totalUsuarios . '' . $totalAyudantes . '' . $totalHorarios . '' . ($asignacionActual ? htmlspecialchars($asignacionActual['nombre']) : 'Sin asignar') . '
'; $html .= '

Ayudantes

'; $html .= ''; $html .= ''; $html .= ''; foreach ($userModel->getAll() as $u) { $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; } $html .= '
NombreEmailUsernameEstado
' . htmlspecialchars($u['nombre']) . '' . htmlspecialchars($u['email']) . '' . htmlspecialchars($u['username'] ?: '-') . '' . ($u['activo'] ? 'Activo' : 'Inactivo') . '
'; $html .= '

Horarios de Apertura

'; $html .= ''; $html .= ''; $html .= ''; foreach ($horarios as $h) { $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; } $html .= '
DíaHora AperturaHora CierreEstado
' . ucfirst($h['dia_semana']) . '' . date('H:i', strtotime($h['hora_apertura'])) . '' . date('H:i', strtotime($h['hora_cierre'])) . '' . ($h['activo'] ? 'Abierto' : 'Cerrado') . '
'; $html .= '

Historial de Asignaciones

'; $html .= ''; $html .= ''; $html .= ''; $asignacionesLimit = array_slice($asignaciones, 0, 20); foreach ($asignacionesLimit as $a) { $html .= ''; $html .= ''; $html .= ''; $html .= ''; $html .= ''; } $html .= '
Semana InicioSemana FinAyudante
' . date('d/m/Y', strtotime($a['semana_inicio'])) . '' . date('d/m/Y', strtotime($a['semana_fin'])) . '' . htmlspecialchars($a['nombre']) . '
'; $html .= '

Turnos de Ayudantes

'; $html .= ''; $html .= ''; $html .= ''; foreach ($ayudantes as $ayudante) { $stmt = $db->prepare(" SELECT semana_inicio, semana_fin FROM asignaciones_turnos WHERE user_id = ? AND semana_inicio >= CURDATE() ORDER BY semana_inicio LIMIT 4 "); $stmt->execute([$ayudante['id']]); $turnos = $stmt->fetchAll(); $html .= ''; $html .= ''; for ($i = 0; $i < 4; $i++) { $html .= ''; } $html .= ''; } $html .= '
AyudanteFecha 1Fecha 2Fecha 3Fecha 4
' . htmlspecialchars($ayudante['nombre']) . ''; if (isset($turnos[$i])) { $html .= date('d/m/Y', strtotime($turnos[$i]['semana_inicio'])) . ' - '; $html .= date('d/m/Y', strtotime($turnos[$i]['semana_fin'])); } else { $html .= '-'; } $html .= '
'; $html .= PDFGenerator::getFooter(); $pdf = new PDFGenerator(); $pdf->download($html, 'reporte-admin-' . date('Y-m-d') . '.pdf');