<?php
require_once '../../includes/auth.php';
requireRole('admin');

// Configuración de página
$pageTitle = "Nuevo Estudiante";
$nombreColegio = APP_NAME;
$usuarioNombre = $_SESSION['user_name'] ?? 'Administrador';

// Procesar formulario si se envió
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Validar y procesar los datos del formulario
    $nombre = trim($_POST['nombre'] ?? '');
    $apellido = trim($_POST['apellido'] ?? '');
    $email = trim($_POST['email'] ?? '');
    $telefono = trim($_POST['telefono'] ?? '');
    $dni = trim($_POST['dni'] ?? '');
    $grado = $_POST['grado'] ?? '';
    $seccion = $_POST['seccion'] ?? '';
    $nivel = $_POST['nivel'] ?? '';
    $fecha_nacimiento = $_POST['fecha_nacimiento'] ?? '';

    // Validaciones básicas
    $errores = [];
    if (empty($nombre)) $errores[] = "El nombre es requerido";
    if (empty($apellido)) $errores[] = "El apellido es requerido";
    if (empty($email) || !filter_var($email, FILTER_VALIDATE_EMAIL)) $errores[] = "Email inválido";
    if (empty($dni) || !preg_match('/^[0-9]{8}$/', $dni)) $errores[] = "DNI inválido, debe tener 8 dígitos";
    if (empty($grado)) $errores[] = "El grado es requerido";
    if (empty($seccion)) $errores[] = "La sección es requerida";
    if (empty($nivel)) $errores[] = "El nivel es requerido";

    if (empty($errores)) {
        global $db;
        try {
            // Iniciar transacción
            $db->beginTransaction();
            
            // 1. Insertar en tabla usuarios
            $usuarioId = $db->insert("usuarios", [
                'nombre' => $nombre,
                'apellido' => $apellido,
                'email' => $email,
                'telefono' => $telefono,
                'password' => password_hash($dni, PASSWORD_DEFAULT),
                'tipo' => 'estudiante',
                'fecha_creacion' => date('Y-m-d H:i:s')
            ]);
            
            // 2. Insertar en tabla estudiantes
            $db->insert("estudiantes", [
                'usuario_id' => $usuarioId,
                'nivel' => $nivel,
                'grado' => $grado,
                'seccion' => $seccion,
                'fecha_nacimiento' => $fecha_nacimiento
            ]);
            
            // Confirmar transacción
            $db->commit();
            
            // Redirigir al listado con mensaje de éxito
            $_SESSION['mensaje'] = "Estudiante registrado exitosamente";
            header("Location: estudiantes.php");
            exit;
        } catch (Exception $e) {
            // Revertir transacción en caso de error
            $db->rollBack();
            $errores[] = "Error al registrar el estudiante: " . $e->getMessage();
        }
    }
}
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title><?= $pageTitle ?> - <?= $nombreColegio ?></title>
    
    <!-- Bootstrap CSS -->
    <link href="<?= APP_URL ?>/assets/css/bootstrap.min.css" rel="stylesheet">
    
    <!-- Font Awesome -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
    
    <!-- Estilos personalizados -->
    <style>
        .card {
            border-radius: 10px;
            box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
        }
        .form-control, .form-select {
            border-radius: 5px;
            padding: 10px;
        }
        .btn-submit {
            background-color: #2c3e50;
            border: none;
            padding: 10px 20px;
            font-weight: 500;
        }
        .btn-submit:hover {
            background-color: #1a252f;
        }
    </style>
</head>
<body>
    <div class="container py-5">
        <div class="row justify-content-center">
            <div class="col-lg-8">
                <div class="card border-0 shadow">
                    <div class="card-header bg-primary text-white py-3">
                        <div class="d-flex justify-content-between align-items-center">
                            <h4 class="mb-0"><i class="fas fa-user-graduate me-2"></i> Nuevo Estudiante</h4>
                            <a href="estudiantes.php" class="btn btn-sm btn-light">
                                <i class="fas fa-arrow-left me-1"></i> Volver
                            </a>
                        </div>
                    </div>
                    
                    <div class="card-body p-4">
                        <?php if (!empty($errores)): ?>
                            <div class="alert alert-danger">
                                <ul class="mb-0">
                                    <?php foreach ($errores as $error): ?>
                                        <li><?= htmlspecialchars($error) ?></li>
                                    <?php endforeach; ?>
                                </ul>
                            </div>
                        <?php endif; ?>
                        
                        <form method="POST" action="">
                            <div class="row g-3">
                                <!-- Datos Personales -->
                                <div class="col-md-6">
                                    <label for="nombre" class="form-label">Nombre</label>
                                    <input type="text" class="form-control" id="nombre" name="nombre" required 
                                           value="<?= htmlspecialchars($_POST['nombre'] ?? '') ?>">
                                </div>
                                
                                <div class="col-md-6">
                                    <label for="apellido" class="form-label">Apellido</label>
                                    <input type="text" class="form-control" id="apellido" name="apellido" required
                                           value="<?= htmlspecialchars($_POST['apellido'] ?? '') ?>">
                                </div>
                                
                                <div class="col-md-6">
                                    <label for="dni" class="form-label">DNI (será usado como contraseña)</label>
                                    <input type="text" class="form-control" id="dni" name="dni" required 
                                           pattern="[0-9]{8}" title="Ingrese un DNI válido de 8 dígitos"
                                           value="<?= htmlspecialchars($_POST['dni'] ?? '') ?>">
                                </div>
                                
                                <div class="col-md-6">
                                    <label for="email" class="form-label">Email</label>
                                    <input type="email" class="form-control" id="email" name="email" required
                                           value="<?= htmlspecialchars($_POST['email'] ?? '') ?>">
                                </div>
                                
                                <div class="col-md-6">
                                    <label for="telefono" class="form-label">Teléfono</label>
                                    <input type="tel" class="form-control" id="telefono" name="telefono"
                                           value="<?= htmlspecialchars($_POST['telefono'] ?? '') ?>">
                                </div>
                                
                                <div class="col-md-6">
                                    <label for="fecha_nacimiento" class="form-label">Fecha de Nacimiento</label>
                                    <input type="date" class="form-control" id="fecha_nacimiento" name="fecha_nacimiento"
                                           value="<?= htmlspecialchars($_POST['fecha_nacimiento'] ?? '') ?>">
                                </div>
                                
                                <div class="col-md-6">
                                    <label for="nivel" class="form-label">Nivel</label>
                                    <select class="form-select" id="nivel" name="nivel" required>
                                        <option value="">Seleccionar...</option>
                                        <option value="primaria" <?= ($_POST['nivel'] ?? '') === 'primaria' ? 'selected' : '' ?>>Primaria</option>
                                        <option value="secundaria" <?= ($_POST['nivel'] ?? '') === 'secundaria' ? 'selected' : '' ?>>Secundaria</option>
                                    </select>
                                </div>

                                <div class="col-md-6">
                                    <label for="grado" class="form-label">Grado</label>
                                    <select class="form-select" id="grado" name="grado" required>
                                        <option value="">Seleccionar...</option>
                                        <?php 
                                        $selectedNivel = $_POST['nivel'] ?? '';
                                        $selectedGrado = $_POST['grado'] ?? '';
                                        
                                        // Mostrar grados según nivel seleccionado
                                        if ($selectedNivel === 'primaria') {
                                            for ($i = 1; $i <= 6; $i++): 
                                                $selected = ($selectedGrado == $i) ? 'selected' : '';
                                                ?>
                                                <option value="<?= $i ?>" <?= $selected ?>>
                                                    <?= $i ?>
                                                </option>
                                            <?php endfor;
                                        } elseif ($selectedNivel === 'secundaria') {
                                            for ($i = 1; $i <= 5; $i++): 
                                                $selected = ($selectedGrado == $i) ? 'selected' : '';
                                                ?>
                                                <option value="<?= $i ?>" <?= $selected ?>>
                                                    <?= $i ?>
                                                </option>
                                            <?php endfor;
                                        } else {
                                            // Mostrar todos los grados si no hay nivel seleccionado
                                            for ($i = 1; $i <= 6; $i++): ?>
                                                <option value="<?= $i ?>" <?= ($selectedGrado == $i) ? 'selected' : '' ?>>
                                                    <?= $i ?>
                                                </option>
                                            <?php endfor;
                                        }
                                        ?>
                                    </select>
                                </div>
                                
                                <div class="col-md-6">
                                    <label for="seccion" class="form-label">Sección</label>
                                    <select class="form-select" id="seccion" name="seccion" required>
                                        <option value="">Seleccionar...</option>
                                        <?php foreach (range('A', 'E') as $letra): ?>
                                            <option value="<?= $letra ?>" <?= ($_POST['seccion'] ?? '') === $letra ? 'selected' : '' ?>>
                                                <?= $letra ?>
                                            </option>
                                        <?php endforeach; ?>
                                    </select>
                                </div>
                            </div>
                            
                            <div class="mt-4 text-end">
                                <button type="submit" class="btn btn-primary btn-submit">
                                    <i class="fas fa-save me-1"></i> Guardar Estudiante
                                </button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Bootstrap JS -->
    <script src="<?= APP_URL ?>/assets/js/bootstrap.bundle.min.js"></script>
    
    <!-- Script para mejorar la experiencia de usuario -->
    <script>
        // Validación en tiempo real del email
        document.getElementById('email').addEventListener('blur', function() {
            const email = this.value;
            if (email && !/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
                this.classList.add('is-invalid');
            } else {
                this.classList.remove('is-invalid');
            }
        });
        
        // Habilitar/deshabilitar secciones según nivel
        document.getElementById('nivel').addEventListener('change', function() {
            const gradoSelect = document.getElementById('grado');
            gradoSelect.innerHTML = '<option value="">Seleccionar...</option>';
            
            if (this.value === 'primaria') {
                for (let i = 1; i <= 6; i++) {
                    gradoSelect.innerHTML += `<option value="${i}">${i}</option>`;
                }
            } else if (this.value === 'secundaria') {
                for (let i = 1; i <= 5; i++) {
                    gradoSelect.innerHTML += `<option value="${i}">${i}</option>`;
                }
            }
        });
        
        // Validar y formatear DNI
        document.getElementById('dni').addEventListener('input', function() {
            this.value = this.value.replace(/\D/g, '').slice(0, 8);
        });
    </script>
</body>
</html>