beginTransaction();
$stmt = $pdo->prepare("SELECT alumno_extraccion_id from alumno_extraccion_fecha where not actualizado");
if(!$stmt->execute()){
echo "Error al consultar las fechas de extracción de alumnos";
exit();
}
$fechas_rs = $stmt->fetch();
if(empty($fechas_rs) || $fechas_rs["alumno_extraccion_id"] == ""){
echo "No hay fechas de extracción de alumnos para actualizar";
exit();
}
$stmt = $pdo->prepare('SELECT ca."Carrera_clave", pe."PlanEstudio_clave", ca."Carrera_id", pe."PlanEstudio_id" from "Carrera" ca INNER JOIN "PlanEstudio" pe ON ca."Carrera_id" = pe."Carrera_id"');
if(!$stmt->execute()){
echo "Error al consultar planes de estudio";
exit();
}
$planes_rs = $stmt->fetchAll();
//función que recibe $planes_rs y $clave_carrera y $clave_plan y regresa el id de plan de estudio
function getPlanId($planes_rs, $clave_carrera, $clave_plan){
foreach($planes_rs as $plan){
if($plan["Carrera_clave"] == $clave_carrera && $plan["PlanEstudio_clave"] == $clave_plan){
return $plan["PlanEstudio_id"];
}
}
return null;
}
$stmt = $pdo->prepare("SELECT * from alumno_detalles ");
if(!$stmt->execute()){
echo "Error al consultar los datos de alumnos";
exit();
}
$total = 0;
$alumnos_rs = $stmt->fetchAll();
foreach($alumnos_rs as $alumno){
if($alumno["estatus"] == 'R'){
/*
//Validar plan de estudio de alumno
if($alumno["clave_carrera"] == "" || $alumno["clave_carrera"] == null){
echo "Error al obtener plan de alumno ".$alumno["nombre"]." ".$alumno["apellido_paterno"]." ".$alumno["apellido_materno"]."
";
continue;
}
$stmt = $pdo->prepare('SELECT "Carrera_clave" FROM "Carrera" WHERE "Carrera_clave" = :carrera');
$stmt->bindParam(":carrera", $alumno["clave_carrera"]);
if(!$stmt->execute()){
echo "Error al consultar los datos de alumnos";
continue;
}
$carr_rs = $stmt->fetch();
if($carr_rs["Carrera_clave"] == "" || $carr_rs["Carrera_clave"] == null){
echo "Error al obtener plan de alumno ".$alumno["nombre"]." ".$alumno["apellido_paterno"]." ".$alumno["apellido_materno"]."
";
continue;
}*/
$stmt = $pdo->prepare("SELECT * from fi_alumno(:nombre, :apellidos, :curp, :clave)");
$stmt->bindParam(":nombre", $alumno["nombre"]);
$apellidos = $alumno["apellido_paterno"]." ".$alumno["apellido_materno"];
$stmt->bindParam(":apellidos", $apellidos);
$stmt->bindParam(":curp", $alumno["curp"]);
$stmt->bindParam(":clave", $alumno["clave"]);
if(!$stmt->execute()){
echo "Error al insertar datos de alumno ".$alumno["nombre"]." ".$alumno["apellido_paterno"]." ".$alumno["apellido_materno"]."
";
continue;
}
$rs = $stmt->fetch();
$id_alumno = $rs["Usuario_id"];
$existe = $rs["Usuario_existe"];
//Obtener Id de plan de alumno
$planInt = intval($alumno["plan"]);
$alumno_plan = getPlanId($planes_rs,$alumno["clave_carrera"], $planInt);
if($alumno_plan == null){
echo "Error al obtener plan de alumno ".$alumno["nombre"]." ".$alumno["apellido_paterno"]." ".$alumno["apellido_materno"]."
";
continue;
}
if($existe){
//Actualiza el plan de estudio del alumno
$stmt = $pdo->prepare("SELECT * FROM fu_alumno_cambiocarrera(:claveulsa)");
$stmt->bindParam(":claveulsa", $alumno["clave"]);
if(!$stmt->execute()){
echo "Error al insertar cambio de carrera ".$alumno["nombre"]." ".$alumno["apellido_paterno"]." ".$alumno["apellido_materno"]."
";
continue;
}
}
//Inserta el plan de estudio del alumno
$stmt = $pdo->prepare("SELECT * FROM fi_alumno_planestudio(:id, :plan, :claveulsa, CURRENT_DATE, NULL, NULL, CURRENT_DATE)");
$stmt->bindParam(":id", $id_alumno);
$stmt->bindParam(":plan", $alumno_plan);//Calculado
$stmt->bindParam(":claveulsa", $alumno["clave"]);
if(!$stmt->execute()){
echo "Error al insertar plan de alumno ".$alumno["nombre"]." ".$alumno["apellido_paterno"]." ".$alumno["apellido_materno"]."
";
continue;
}
//Actualiza adicionales de alumno
$stmt = $pdo->prepare("SELECT * FROM fu_alumno_extras(:id, :clave, :servicio, :semestre, :sexo, :grupo)");
$stmt->bindParam(":id", $id_alumno);
$stmt->bindParam(":clave", $alumno["clave"]);
$stmt->bindParam(":servicio", $alumno["servicio"]);
$stmt->bindParam(":semestre", $alumno["semestre"]);
$stmt->bindParam(":sexo", $alumno["sexo"]);
$stmt->bindParam(":grupo", $alumno["grupo"]);
if(!$stmt->execute()){
echo "Error al actualizar datos adicionales de alumno ".$alumno["nombre"]." ".$alumno["apellido_paterno"]." ".$alumno["apellido_materno"]."
";
continue;
}
//---- Inserta historial de materias de alumno -----
$stmt = $pdo->prepare('SELECT * from extract_fi_alumnomaterias_calif(:clave)');
$stmt->bindParam(":clave", $alumno["clave"]);
if(!$stmt->execute()){
echo "Error al guardar calificaciones de alumno ".$alumno["nombre"]." ".$alumno["apellido_paterno"]." ".$alumno["apellido_materno"]."
";
continue;
}
//Actualiza alumno_extraccion para indicar que ya se procesó
$stmt = $pdo->prepare('UPDATE alumno_extraccion set registrado = true where "Usuario_claveULSA" = :clave');
$stmt->bindParam(":clave", $alumno["clave"]);
if(!$stmt->execute()){
echo "Error al actualizar el registro de extracción de alumno [".$alumno["clave"]."]".$alumno["nombre"]." ".$alumno["apellido_paterno"]." ".$alumno["apellido_materno"]."
";
continue;
}
$total++;
}
}
//Actualiza alumno_extraccion_fecha para indicar que ya se procesó
$stmt = $pdo->prepare('UPDATE alumno_extraccion_fecha set actualizado = true where alumno_extraccion_id = :id');
$stmt->bindParam(":id", $fechas_rs["alumno_extraccion_id"]);
if(!$stmt->execute()){
echo "Error al actualizar el registro de extracción de alumnos";
}
$pdo->commit();
echo $total." datos de alumnos actualizados correctamente";
} catch (Exception $e) {
echo $e->getMessage();
echo "Error al actualizar los datos de los alumnos";
exit();
}
?>