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

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

$method = $_SERVER['REQUEST_METHOD'];
$profesorId = $_SESSION['profesor']['id'] ?? null;

try {
    switch ($method) {
        case 'GET':
            $alumnoId = $_GET['alumno_id'] ?? null;
            $tipoCurso = $_GET['tipo'] ?? null;
            $estadoCurso = $_GET['estado'] ?? null;

            if ($alumnoId) {
                // Obtener cursos de un alumno específico (incluyendo competencias si aplica)
                $query = "SELECT 
                            c.id,
                            c.nombre,
                            c.tipo,
                            c.estado,
                            c.competencias
                          FROM cursos c
                          JOIN alumnos_cursos ac ON c.id = ac.curso_id
                          WHERE ac.alumno_id = ? AND c.profesor_id = ?";
                $stmt = $pdo->prepare($query);
                $stmt->execute([$alumnoId, $profesorId]);
            } else {
                $query = "
                    SELECT 
                        ac.id,
                        ac.alumno_id,
                        ac.curso_id,
                        c.nombre AS curso_nombre,
                        c.tipo,
                        c.estado,
                        c.competencias
                    FROM alumnos_cursos ac
                    JOIN cursos c ON ac.curso_id = c.id
                    WHERE c.profesor_id = ?
                ";
                $params = [$profesorId];

                if ($tipoCurso) {
                    $query .= " AND c.tipo = ?";
                    $params[] = $tipoCurso;
                }

                if ($estadoCurso) {
                    $query .= " AND c.estado = ?";
                    $params[] = $estadoCurso;
                }

                $stmt = $pdo->prepare($query);
                $stmt->execute($params);?
            }

            echo json_encode([
                'success' => true,
                'data' => $stmt->fetchAll(PDO::FETCH_ASSOC)
            ]);
            break;

        case 'POST':
            $data = json_decode(file_get_contents('php://input'), true);
            $cursoId = $data['curso_id'] ?? null;
            $alumnos = $data['alumnos'] ?? [];

            if (empty($cursoId) || empty($alumnos)) {
                http_response_code(400);
                echo json_encode(['success' => false, 'error' => 'Datos incompletos']);
                exit;
            }

            // Verificar que el curso pertenece al profesor
            $stmt = $pdo->prepare("SELECT id FROM cursos WHERE id = ? AND profesor_id = ?");
            $stmt->execute([$cursoId, $profesorId]);

            if (!$stmt->fetch()) {
                http_response_code(403);
                echo json_encode(['success' => false, 'error' => 'No autorizado']);
                exit;
            }

            foreach ($alumnos as $alumnoId) {
                $stmt = $pdo->prepare("
                    INSERT INTO alumnos_cursos (alumno_id, curso_id, estado) 
                    VALUES (?, ?, 'cursando')
                    ON DUPLICATE KEY UPDATE estado = 'cursando'
                ");
                $stmt->execute([$alumnoId, $cursoId]);
            }

            echo json_encode([
                'success' => true,
                'message' => 'Alumnos asignados correctamente'
            ]);
            break;

        case 'DELETE':
            $alumnoId = $_GET['alumno_id'] ?? null;
            $cursoId = $_GET['curso_id'] ?? null;

            if (!$alumnoId || !$cursoId) {
                http_response_code(400);
                echo json_encode(['success' => false, 'error' => 'IDs requeridos']);
                exit;
            }

            $stmt = $pdo->prepare("SELECT id FROM cursos WHERE id = ? AND profesor_id = ?");
            $stmt->execute([$cursoId, $profesorId]);

            if (!$stmt->fetch()) {
                http_response_code(403);
                echo json_encode(['success' => false, 'error' => 'No autorizado']);
                exit;
            }

            $stmt = $pdo->prepare("DELETE FROM alumnos_cursos WHERE alumno_id = ? AND curso_id = ?");
            $stmt->execute([$alumnoId, $cursoId]);

            echo json_encode([
                'success' => true,
                'message' => 'Alumno desvinculado del curso correctamente'
            ]);
            break;

        default:
            http_response_code(405);
            echo json_encode(['success' => false, 'error' => 'Método no permitido']);
    }
} catch (PDOException $e) {
    http_response_code(500);
    echo json_encode(['success' => false, 'error' => 'Error en la base de datos: ' . $e->getMessage()]);
}
