68 lines
2.0 KiB
PHP
68 lines
2.0 KiB
PHP
<?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;
|
|
}
|
|
|
|
$data = json_decode(file_get_contents('php://input'), true);
|
|
$alumnos = $data['alumnos'] ?? [];
|
|
|
|
if (empty($alumnos)) {
|
|
http_response_code(400);
|
|
echo json_encode(['success' => false, 'error' => 'No se enviaron alumnos']);
|
|
exit;
|
|
}
|
|
|
|
// Paso 1: Validar todos los cursos
|
|
$errores = [];
|
|
$profesorId = $_SESSION['profesor']['id'] ?? null;
|
|
|
|
foreach ($alumnos as $index => $alumno) {
|
|
$nombreCurso = trim($alumno['nombreCurso']);
|
|
$tipoCurso = trim($alumno['tipoCurso']);
|
|
|
|
$stmt = $pdo->prepare("SELECT id FROM cursos WHERE nombre = ? AND tipo = ? AND profesor_id = ?");
|
|
$stmt->execute([$nombreCurso, $tipoCurso, $profesorId]);
|
|
$curso = $stmt->fetch();
|
|
|
|
if (!$curso) {
|
|
$errores[] = "El curso \"{$nombreCurso}\" de tipo \"{$tipoCurso}\" en {$alumno['nombre']} ({$alumno['email']}) es inválido.";
|
|
} else {
|
|
$alumnos[$index]['curso_id'] = $curso['id']; // Guardamos para usar después
|
|
}
|
|
}
|
|
|
|
if (!empty($errores)) {
|
|
echo json_encode([
|
|
'success' => false,
|
|
'error' => "Error en cursos: " . count($errores) . " conflictos encontrados",
|
|
'conflicts' => $errores
|
|
]);
|
|
exit;
|
|
}
|
|
|
|
// Paso 2: Insertar alumnos
|
|
try {
|
|
$pdo->beginTransaction();
|
|
|
|
foreach ($alumnos as $a) {
|
|
$stmt = $pdo->prepare("INSERT INTO alumnos (nombre, email, telefono) VALUES (?, ?, ?)");
|
|
$stmt->execute([$a['nombre'], $a['email'], $a['telefono'] ?? null]);
|
|
$alumnoId = $pdo->lastInsertId();
|
|
|
|
$stmt = $pdo->prepare("INSERT INTO alumnos_cursos (alumno_id, curso_id, estado) VALUES (?, ?, 'cursando')");
|
|
$stmt->execute([$alumnoId, $a['curso_id']]);
|
|
}
|
|
|
|
$pdo->commit();
|
|
echo json_encode(['success' => true, 'message' => 'Todos los alumnos fueron importados correctamente.']);
|
|
} catch (PDOException $e) {
|
|
$pdo->rollBack();
|
|
http_response_code(500);
|
|
echo json_encode(['success' => false, 'error' => 'Error al guardar en la base de datos: ' . $e->getMessage()]);
|
|
}
|