DiploMaster/api/cursos.php

103 lines
3.2 KiB
PHP

<?php
header('Content-Type: application/json');
require '../includes/config.php';
if (!is_logged_in()) {
http_response_code(401);
echo json_encode(['error' => 'No autenticado']);
exit;
}
$method = $_SERVER['REQUEST_METHOD'];
$profesorId = $_SESSION['profesor']['id'] ?? null;
switch ($method) {
case 'GET':
try {
$query = "
SELECT
c.*,
COUNT(ac.id) AS alumnos_count,
u.nombre AS profesor_nombre
FROM cursos c
LEFT JOIN alumnos_cursos ac ON c.id = ac.curso_id
LEFT JOIN usuarios u ON c.profesor_id = u.id
";
$params = [];
if (isset($_GET['profesor_id'])) {
$query .= " WHERE c.profesor_id = ?";
$params[] = $_GET['profesor_id'];
}
$query .= " GROUP BY c.id ORDER BY c.estado, c.nombre";
$stmt = $pdo->prepare($query);
$stmt->execute($params);
echo json_encode($stmt->fetchAll());
} catch (PDOException $e) {
http_response_code(500);
echo json_encode(['error' => 'Error al cargar cursos: ' . $e->getMessage()]);
}
break;
case 'POST':
$data = json_decode(file_get_contents('php://input'), true);
try {
$stmt = $pdo->prepare("
INSERT INTO cursos (nombre, descripcion, tipo, estado, profesor_id)
VALUES (?, ?, ?, 'activo', ?)
");
$stmt->execute([
$data['nombre'],
$data['descripcion'] ?? null,
$data['tipo'],
$profesorId
]);
echo json_encode(['success' => true, 'id' => $pdo->lastInsertId()]);
} catch (PDOException $e) {
http_response_code(500);
echo json_encode(['error' => 'Error al crear curso: ' . $e->getMessage()]);
}
break;
case 'DELETE':
$id = $_GET['id'] ?? null;
if (!$id) {
http_response_code(400);
echo json_encode(['error' => 'ID de curso no proporcionado']);
exit;
}
try {
// Verificar que el curso pertenece al profesor
if ($profesorId) {
$stmt = $pdo->prepare("SELECT id FROM cursos WHERE id = ? AND profesor_id = ?");
$stmt->execute([$id, $profesorId]);
if (!$stmt->fetch()) {
http_response_code(403);
echo json_encode(['error' => 'No autorizado']);
exit;
}
}
$stmt = $pdo->prepare("DELETE FROM cursos WHERE id = ?");
$stmt->execute([$id]);
echo json_encode(['success' => true]);
} catch (PDOException $e) {
http_response_code(500);
echo json_encode(['error' => 'Error al eliminar curso: ' . $e->getMessage()]);
}
break;
default:
http_response_code(405);
echo json_encode(['error' => 'Método no permitido']);
}
?>