<?php
require '../includes/config.php';
header('Content-Type: application/json');

if (!is_logged_in()) {
    http_response_code(401);
    echo json_encode(['success' => false, 'error' => 'No autenticado']);
    exit;
}

$input = json_decode(file_get_contents('php://input'), true);
$alumnos = $input['alumnos'] ?? [];

if (empty($alumnos)) {
    echo json_encode(['success' => false, 'error' => 'No se recibieron alumnos']);
    exit;
}

function limpiar($s) {
    return trim($s, "\"' ");
}

$errores = [];
$importados = 0;

foreach ($alumnos as $index => $alumno) {
    $fila = $index + 2;

    $nombre = limpiar($alumno['nombre'] ?? '');
    $email = limpiar($alumno['email'] ?? '');
    $telefono = limpiar($alumno['telefono'] ?? '');
    $tipoCurso = strtolower(limpiar($alumno['tipoCurso'] ?? ''));
    $nombreCurso = limpiar($alumno['nombreCurso'] ?? '');

    if (!$nombre || !$email || !$telefono || !$tipoCurso || !$nombreCurso) {
        $errores[] = "Fila $fila: faltan datos obligatorios.";
        continue;
    }

    // Verificar curso+tipo
    $stmtCurso = $pdo->prepare("
        SELECT id 
        FROM cursos 
        WHERE nombre = ? AND tipo = ?
    ");
    $stmtCurso->execute([$nombreCurso, $tipoCurso]);
    $curso = $stmtCurso->fetch(PDO::FETCH_ASSOC);

    if (!$curso) {
        $errores[] = "Fila $fila: el curso '$nombreCurso' con tipo '$tipoCurso' no existe.";
        continue;
    }

    // Verificar duplicados por separado
    $emailDuplicado = false;
    $telefonoDuplicado = false;

    $stmtEmail = $pdo->prepare("SELECT id FROM alumnos WHERE email = ?");
    $stmtEmail->execute([$email]);
    if ($stmtEmail->fetch()) {
        $emailDuplicado = true;
    }

    $stmtTel = $pdo->prepare("SELECT id FROM alumnos WHERE telefono = ?");
    $stmtTel->execute([$telefono]);
    if ($stmtTel->fetch()) {
        $telefonoDuplicado = true;
    }

    if ($emailDuplicado || $telefonoDuplicado) {
        if ($emailDuplicado && $telefonoDuplicado) {
            $errores[] = "Fila $fila: el email '$email' y el teléfono '$telefono' ya están registrados.";
        } elseif ($emailDuplicado) {
            $errores[] = "Fila $fila: el email '$email' ya está registrado.";
        } elseif ($telefonoDuplicado) {
            $errores[] = "Fila $fila: el teléfono '$telefono' ya está registrado.";
        }
        continue;
    }

    try {
        $pdo->beginTransaction();

        $stmtAlumno = $pdo->prepare("INSERT INTO alumnos (nombre, email, telefono) VALUES (?, ?, ?)");
        $stmtAlumno->execute([$nombre, $email, $telefono]);
        $alumnoId = $pdo->lastInsertId();

        $stmtAsignar = $pdo->prepare("INSERT INTO alumnos_cursos (alumno_id, curso_id, estado) VALUES (?, ?, 'cursando')");
        $stmtAsignar->execute([$alumnoId, $curso['id']]);

        $pdo->commit();
        $importados++;
    } catch (PDOException $e) {
        $pdo->rollBack();
        $errores[] = "Fila $fila: error al guardar en base de datos.";
    }
}

if (!empty($errores)) {
    echo json_encode([
        'success' => false,
        'conflicts' => $errores
    ]);
} else {
    echo json_encode([
        'success' => true,
        'message' => "$importados alumnos importados exitosamente."
    ]);
}
