fix: Incluir coordinadores en todas las listas de gestión

- Crear método getUsuariosGestion() que incluye ayudantes y coordinadores
- Actualizar asignaciones_completo.php para mostrar coordinadores
- Actualizar todas las páginas de gestión para usar nuevo método
- Corregir que coordinadores aparezcan en asignaciones masivas
- Mantener consistencia en todos los módulos de administración
This commit is contained in:
nickpons666
2026-01-31 01:18:28 -06:00
parent acc0033e63
commit 8bd34c8ddb
6 changed files with 218 additions and 7 deletions

View File

@@ -10,7 +10,7 @@ require_once BASE_PATH . '/src/Asignacion.php';
require_once BASE_PATH . '/src/CSRF.php';
$auth = new Auth();
$auth->requireAdmin();
$auth->requireCoordinador();
$userModel = new User();
$horariosModel = new DiasHorarios();
@@ -75,7 +75,8 @@ $domingoActual->modify('-' . $diaSemana . ' days');
$currentWeekStart = $domingoActual->format('Y-m-d');
$asignacionActual = $asignacionModel->getAsignacionPorSemana($currentWeekStart);
$ayudantes = $userModel->getAyudantesActivos();
// Para gestión de turnos, incluir ayudantes y coordinadores
$ayudantes = $userModel->getUsuariosGestion();
// Obtener próximos turnos (siguientes 3 semanas)
$proximosTurnos = [];

View File

@@ -10,7 +10,7 @@ require_once BASE_PATH . '/src/Asignacion.php';
require_once BASE_PATH . '/src/CSRF.php';
$auth = new Auth();
$auth->requireAdmin();
$auth->requireCoordinador();
$userModel = new User();
$horariosModel = new DiasHorarios();
@@ -95,7 +95,8 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
}
}
$ayudantes = $userModel->getAyudantesActivos();
// Para asignaciones masiva, mostrar todos los ayudantes y coordinadores
$ayudantes = $userModel->getUsuariosGestion();
$horarios = $horariosModel->getActivos();
// Encontrar el domingo actual

View File

@@ -0,0 +1,203 @@
<?php
if (!defined('BASE_PATH')) {
define('BASE_PATH', dirname(__DIR__, 2));
}
require_once BASE_PATH . '/config/config.php';
require_once BASE_PATH . '/src/Auth.php';
require_once BASE_PATH . '/src/User.php';
require_once BASE_PATH . '/src/DiasHorarios.php';
require_once BASE_PATH . '/src/Asignacion.php';
$auth = new Auth();
$auth->requireCoordinador();
$userModel = new User();
$horariosModel = new DiasHorarios();
$asignacionModel = new Asignacion();
// Estadísticas básicas
$totalUsuarios = count($userModel->getUsuariosGestion());
$totalHorarios = count($horariosModel->getActivos());
$asignacionActual = $asignacionModel->getAsignacionActual();
// Obtener orden actual de rotación
$ayudantesOrdenados = $asignacionModel->getAyudantesPorOrden();
$currentPage = 'dashboard';
$pageTitle = 'Panel Coordinador';
?>
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Panel Coordinador - Contenedor Ibiza</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
.stat-card {
transition: transform 0.2s;
}
.stat-card:hover {
transform: translateY(-2px);
}
.rol-badge {
font-size: 0.8em;
}
</style>
</head>
<body>
<?php include BASE_PATH . '/public/partials/navbar.php'; ?>
<div class="container mt-4">
<div class="d-flex justify-content-between align-items-center mb-4">
<div>
<h2 class="mb-1">🎯 Panel Coordinador</h2>
<p class="text-muted mb-0">Gestión de turnos y ayudantes</p>
</div>
<span class="badge bg-info rol-badge">Coordinador</span>
</div>
<div class="row mb-4">
<div class="col-md-4 mb-3">
<div class="card stat-card shadow-sm border-primary">
<div class="card-body text-center">
<h3 class="text-primary"><?= $totalUsuarios ?></h3>
<p class="mb-0">Ayudantes Activos</p>
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="card stat-card shadow-sm border-success">
<div class="card-body text-center">
<h3 class="text-success"><?= $totalHorarios ?></h3>
<p class="mb-0">Días Configurados</p>
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="card stat-card shadow-sm border-warning">
<div class="card-body text-center">
<h3 class="text-warning"><?= count($ayudantesOrdenados) ?></h3>
<p class="mb-0">Orden Rotación</p>
</div>
</div>
</div>
</div>
<div class="row mb-4">
<div class="col-md-6">
<div class="card shadow-sm">
<div class="card-header bg-primary text-white">
<h5 class="mb-0">📋 Turno Actual</h5>
</div>
<div class="card-body">
<?php if ($asignacionActual): ?>
<div class="alert alert-success mb-3">
<h6 class="mb-1">✅ Esta semana:</h6>
<strong><?= htmlspecialchars($asignacionActual['nombre']) ?></strong>
</div>
<?php else: ?>
<div class="alert alert-warning mb-3">
<h6 class="mb-1">⚠️ Sin asignar</h6>
<span>No hay ayudante asignado esta semana</span>
</div>
<?php endif; ?>
<div class="d-grid gap-2">
<a href="/admin/asignaciones.php" class="btn btn-primary">
🔄 Gestionar Turnos
</a>
<a href="/ayudante.php" class="btn btn-outline-primary">
👥 Vista Ayudante
</a>
</div>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card shadow-sm">
<div class="card-header bg-success text-white">
<h5 class="mb-0">👥 Ayudantes</h5>
</div>
<div class="card-body">
<h6 class="mb-3">Orden de Rotación:</h6>
<div class="d-flex flex-wrap gap-2 mb-3">
<?php foreach ($ayudantesOrdenados as $index => $ayudante): ?>
<span class="badge bg-secondary">
<?= ($index + 1) ?>. <?= htmlspecialchars($ayudante['nombre']) ?>
</span>
<?php endforeach; ?>
</div>
<div class="d-grid gap-2">
<a href="/admin/usuarios.php" class="btn btn-success">
Agregar Ayudante
</a>
<a href="/admin/asignaciones_completo.php#reordenar" class="btn btn-outline-success">
🔄 Modificar Orden
</a>
</div>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<div class="card shadow-sm">
<div class="card-header bg-info text-white">
<h5 class="mb-0">🎯 Acciones Rápidas</h5>
</div>
<div class="card-body">
<div class="row">
<div class="col-md-3 mb-3">
<div class="text-center p-3">
<div class="mb-3">🔄</div>
<h6>Generar Turnos</h6>
<p class="text-muted small">Crear próximas semanas automáticamente</p>
<a href="/admin/asignaciones_completo.php" class="btn btn-sm btn-primary">
Generar
</a>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="text-center p-3">
<div class="mb-3">📄</div>
<h6>Exportar PDF</h6>
<p class="text-muted small">Descargar turnos en formato PDF</p>
<a href="/export-pdf.php" target="_blank" class="btn btn-sm btn-danger">
Exportar
</a>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="text-center p-3">
<div class="mb-3">👥</div>
<h6>Ver Turnos</h6>
<p class="text-muted small">Ver asignaciones actuales</p>
<a href="/ayudante.php" class="btn btn-sm btn-info">
Ver Turnos
</a>
</div>
</div>
<div class="col-md-3 mb-3">
<div class="text-center p-3">
<div class="mb-3">🔧</div>
<h6>Gestionar</h6>
<p class="text-muted small">Administrar todo</p>
<a href="/admin/asignaciones_completo.php" class="btn btn-sm btn-secondary">
Gestionar
</a>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

View File

@@ -18,7 +18,7 @@ $asignacionModel = new Asignacion();
$db = \Database::getInstance()->getConnection();
$totalUsuarios = count($userModel->getAll());
$totalAyudantes = count($userModel->getAyudantesActivos());
$totalAyudantes = count($userModel->getUsuariosGestion());
$totalHorarios = count($horariosModel->getAll());
$asignacionActual = $asignacionModel->getAsignacionActual();

View File

@@ -16,7 +16,7 @@ $horariosModel = new DiasHorarios();
$asignacionModel = new Asignacion();
$totalUsuarios = count($userModel->getAll());
$totalAyudantes = count($userModel->getAyudantesActivos());
$totalAyudantes = count($userModel->getUsuariosGestion());
$totalHorarios = count($horariosModel->getAll());
$asignacionActual = $asignacionModel->getAsignacionActual();