103 lines
3.2 KiB
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']);
|
|
}
|
|
?>
|