tieneAcceso()){
$objSesion->terminaSesion();
}
$objSesion->validaPeriodoUsuario();//si no tiene periodo manda a main
//Obtiene fechas de periodo
$stmt = $pdo->prepare('Select * from fs_periodo(:periodo, NULL, NULL, true)');
$stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
if(!$stmt->execute()){
//print_r($stmt->errorInfo());
$errorDesc = "Ocurrió un error al cargar los datos del periodo";
}else{
$periodo_rs = $stmt->fetch();
}
$stmt->closeCursor();
$fecha_min = $periodo_rs["Periodo_fecha_inicial"];
$fecha_max = $periodo_rs["Periodo_fecha_final"];
// ---- Obtiene fechas de vacaciones
$stmt = $pdo->prepare('select * from fs_calendarioevento_categoria(:fini, :ffin, 2, :periodo)');
$stmt->bindParam(":fini", $fecha_min);
$stmt->bindParam(":ffin", $fecha_max);
$stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
if(!$stmt->execute()){
$errorDesc = "Ocurrió un error al cargar las fechas de vacaciones";
}else{
$vacaciones_rs = $stmt->fetchAll();
}
$stmt->closeCursor();
$stmt = null;
$vacacionesArr = array();//Guarda los días individuales de vacaciones
foreach($vacaciones_rs as $evento){
$fecha = fechaGuion($evento["CalendarioEvento_fecha"]);
switch($evento["CalendarioRepeticion_id"]){
case 1: //diario
while (strtotime($fecha) <= strtotime($evento["CalendarioReglas_fecha_final"])) {
$vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]);
$fecha = date ("Y-m-d", strtotime("+1 day", strtotime($fecha)));
}
break;
case 2: //semanal
$diasArr = explode(",", $evento["CalendarioReglas_dias_str"]);
while (strtotime($fecha) <= strtotime($evento["CalendarioReglas_fecha_final"])) {
if(in_array(date("w", strtotime($fecha)), $diasArr) ){//si es el día que quiero
$vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]);
}
$fecha = date ("Y-m-d", strtotime("+1 day", strtotime($fecha)));
}
break;
case 3://mensual
$diasArr = explode(",", $evento["CalendarioReglas_dias_str"]);
//reglas
$weekTxt = array(1=>"first", 2=>"second", 3=>"third", 4=>"fourth", -1=>"last");
$dayname = array("sun", "mon", "tue", "wed", "thu", "fri", "sat");
$fecha = date ("Y-m-01", strtotime($fecha));//empieza a revisar en el primer día del mes
$semana = $evento["CalendarioReglas_semana"];
while (strtotime($fecha) <= strtotime($evento["CalendarioReglas_fecha_final"])) {
foreach($diasArr as $d){
//echo "-->". intval(date("w", strtotime($fecha)))." == ". intval($d)."[".$fecha."]";
if($semana == 1 && intval(date("w", strtotime($fecha))) == intval($d) ){//si el día actual es el que quiero lo guarda
$vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]);
}else{//si no calcula siguiente día
if(intval(date("w", strtotime($fecha))) == intval($d)){
$fechaTmp = date ("Y-m-d", strtotime($weekTxt[$semana-1]." ".$dayname[$d], strtotime($fecha)));
}else{
$fechaTmp = date ("Y-m-d", strtotime($weekTxt[$semana]." ".$dayname[$d], strtotime($fecha)));
}
$vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]);
}
}
$fecha = date ("Y-m-01", strtotime("+1 month", strtotime($fecha)));//siguiente mes primer día
}
break;
default: //no se repite
$vacacionesArr[] = array("fecha"=> $fecha, "titulo"=>$evento["CalendarioEvento_titulo"]);
}
}
?>
APSA - Facultad de Ingeniería
printMenu();
//Obtiene grupos
$query = "";
if(isset($_POST["fecha_ini"]) && $_POST["fecha_ini"]!=""){
$filter_fini = trim(filter_input(INPUT_POST, "fecha_ini", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW)));//limpia texto
$query.=":f_ini, ";
}else{
$query.="NULL, ";
}
if(isset($_POST["fecha_fin"]) && $_POST["fecha_fin"]!=""){
$filter_ffin = trim(filter_input(INPUT_POST, "fecha_fin", FILTER_SANITIZE_STRING,array('flags' => FILTER_FLAG_STRIP_LOW)));//limpia texto
$query.=":f_fin, ";
}else{
$query.="NULL, ";
}
$stmt = $pdo->prepare('Select * from fs_reposicion(NULL, :periodo, NULL, :prof, '.$query.' NULL, 0, NULL )');
$stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
if(isset($filter_fini)) $stmt->bindParam(":f_ini", $filter_fini);
if(isset($filter_ffin)) $stmt->bindParam(":f_fin", $filter_ffin);
$stmt->bindParam(":prof", $_SESSION["usuario_id"]);
if(!$stmt->execute()){
//print_r($stmt->errorInfo());
$errorDesc = "Ocurrió un error al cargar las reposiciones";
}else{
$reposiciones_rs = $stmt->fetchAll();
}
$stmt->closeCursor();
//Obtiene plan de estudios
$stmt = $pdo->prepare('Select * from fs_planestudio(:nivel, NULL, NULL, true, NULL, NULL)');
$stmt->bindParam(":nivel", $_SESSION["nivel_id"]);
if(!$stmt->execute()){
//print_r($stmt->errorInfo());
$errorDesc = "Ocurrió un error al cargar los planes de estudios";
}else
$plan_rs = $stmt->fetchAll();
$stmt->closeCursor();
//Obtiene fechas de periodo
$stmt = $pdo->prepare('Select * from fs_periodo(:periodo, NULL, NULL, true)');
$stmt->bindParam(":periodo", $_SESSION["periodo_id"]);
if(!$stmt->execute()){
$errorDesc = "Ocurrió un error al cargar las fechas del periodo";
}else{
$periodo_rs = $stmt->fetch();
}
$stmt->closeCursor();
//Salones
$stmt = $pdo->prepare('Select * from fs_salon(NULL, NULL, 0, NULL)');
if(!$stmt->execute()){
$errorDesc = "Error al obtener los salones";
//print_r($stmt->errorInfo());
}
$salones_rs = $stmt->fetchAll();
$stmt->closeCursor();
//Estado reposicion
$stmt = $pdo->prepare('Select * from fs_estadoreposicion(NULL)');
if(!$stmt->execute()){
$errorDesc = "Error al obtener los estados de reposición";
//print_r($stmt->errorInfo());
}
$estado_rs = $stmt->fetchAll();
$stmt->closeCursor();
//Materias
//$stmt = $pdo->prepare('Select * from fs_materiasprofesor(:per, :usr)');
$stmt = $pdo->prepare('SELECT mh."Horario_id", mh."Materia_desc", mh."Grupo_desc", mh."Carrera_prefijo",d."Dia_id", d."Dia_desc", mh."Hora_inicio"
FROM fs_mihorario(:usr, :per, 3) AS mh
INNER JOIN "Dia" d ON mh."Dia_id" = d."Dia_id"
WHERE "TipoHorario_id" = 3
ORDER BY "Grupo_desc", "Materia_desc", d."Dia_id", "Hora_inicio"');
$stmt->bindParam(":per", $_SESSION["periodo_id"]);
$stmt->bindParam(":usr", $_SESSION["usuario_id"]);
if(!$stmt->execute()){
$errorDesc = "Error al obtener las materias";
}
$materias_rs = $stmt->fetchAll();
$stmt->closeCursor();
if($_SESSION["jefe_carrera"] ){
//Profesores del área del profesor
$stmt = $pdo->prepare('Select * from fs_profesoresperiodo_jefe(:per, :usr)');
$stmt->bindParam(":per", $_SESSION["periodo_id"]);
$stmt->bindParam(":usr", $_SESSION["usuario_id"]);
if(!$stmt->execute()){
$errorDesc = "Error al obtener el área del usuario";
//print_r($stmt->errorInfo());
}
$prof_rs = $stmt->fetchAll();
$stmt->closeCursor();
}else if($_SESSION["sgi_administrador"]){
//Profesores del área del profesor
$stmt = $pdo->prepare('Select * from fs_profesoresperiodo_jefe(:per, NULL)');
$stmt->bindParam(":per", $_SESSION["periodo_id"]);
if(!$stmt->execute()){
$errorDesc = "Error al obtener el área del usuario";
//print_r($stmt->errorInfo());
}
$prof_rs = $stmt->fetchAll();
$stmt->closeCursor();
}
$stmt = null;
if(count($plan_rs) == 0){
header("Location: planestudios.php?error=4");
exit();
}
//--Manejo de errores y mensajes de exito
if(isset($_GET["error"]) && is_numeric($_GET["error"])){
switch ($_GET["error"]){
case 0: $errorDesc = "No se reciberon los datos de la reposición."; break;
case 1: $errorDesc = "Ocurrió un error al insertar los datos de la reposición/cambio."; break;
case 2: $errorDesc = "Ocurrió un error al actualizar los datos de la reposición/cambio."; break;
case 3: $errorDesc = "No tienes permisos para realizar esa acción."; break;
case 4: $errorDesc = "Ocurrió un error al cargar los datos de la reposición/cambio."; break;
case 6: $errorDesc = "La reposición/cambio que buscas no existe. Consulta la lista de reopsiciones disponibles en esta sección."; break;
case 7: $errorDesc = "La reposición/cambio se empalma con el horario del grupo y no se puede guardar."; break;
case 8: $errorDesc = "El salón de la reposición está siendo utilizado ese día a esa hora y no se puede guardar."; break;
case 9: $errorDesc = "El profesor está asigndo a otra reposición/cambio el mismo día a la misma hora y no se puede guardar."; break;
case 10: $errorDesc = "El profesor está asigndo a una materia el mismo día a la misma hora y no se puede guardar."; break;
case 11: $errorDesc = "No hay clases asignadas para esa materia y grupo en la fecha de falta."; break;
case 12: $errorDesc = "Ocurrió un error al insertar los datos de la reposición/cambio en el servidor remoto."; break;
case 13: $errorDesc = "Ocurrió un error al actualizar los datos de la reposición/cambio en el servidor remoto."; break;
}
}
if(isset($_GET["ok"]) && is_numeric($_GET["ok"])){
switch ($_GET["ok"]){
case 0: $successDesc = "La reposición/cambio se guardó correctamente."; break;
case 1: $successDesc = "La reposición/cambio se actualizó correctamente."; break;
}
}
?>
puedeEditar() && !empty($materias_rs) && duracionMinutos(date("Y-m-d H:i:00"), $periodo_rs["Periodo_fecha_final"] ) > 0){ ?>
No tienes materias asignadas en este periodo.
0){ ?>
Estado
Materia
Tipo
Fecha falta
Fecha reposición
Salón
puedeEditar()){ ?>
Acciones
" id="id" data-id_cronos="">
" title="">
d-flex mx-auto">
()
".date('H:i', strtotime($fechaIArr[1]))." a ".date('H:i', strtotime($fechaFArr[1]." +90 minute"))." hrs.";
?>
puedeEditar()){ ?>
No tienes reposiciones disponibles
puedeEditar()){ ?>
Crear Reposición
¿Estás seguro de que quieres borrar la reposición?