'unauthorized'])); } $user = unserialize($_SESSION['user']); // check method try { if ($_SERVER['REQUEST_METHOD'] === 'GET') { $baseDate = $_GET['fecha'] ?? $_GET['fecha_fin'] ?? null; $params = [ ':periodo_id' => $_GET['periodo_id'] == 1 ? $user->periodo_id : null, ':facultad_id' => $user->facultad['facultad_id'], ':fecha_inicio' => $_GET['fecha'] ?? $_GET['fecha_inicio'] ?? date('Y-m-d'), ':fecha_fin' => $baseDate ? date('Y-m-d H:i:s', strtotime($baseDate . ' +24 hours')) : date('Y-m-d H:i:s'), ]; $data = $db->query( "WITH horarios AS ( SELECT horario_id, horario.facultad_id, horario_fecha_inicio, horario_fecha_fin, horario_grupo, horario_hora, PERIODO.periodo_fecha_inicio, PERIODO.periodo_fecha_fin, salon, COALESCE(materia_nombre, materia_asignacion_materia) as materia, coalesce(carrera_nombre, materia_asignacion_carrera) as carrera, facultad_nombre as facultad, nivel_nombre as nivel, horario_fin FROM horario left JOIN materia USING (materia_id) left join carrera using (carrera_id) left join materia_asignacion using (horario_id) join facultad on facultad.facultad_id = horario.facultad_id JOIN PERIODO USING (periodo_id) JOIN nivel on periodo.nivel_id = nivel.nivel_id JOIN SALON USING (salon_id) WHERE (PERIODO.periodo_id, horario.facultad_id) = (COALESCE(:periodo_id, PERIODO.periodo_id), COALESCE(:facultad_id, horario.facultad_id)) ), fechas AS ( SELECT fechas_clase(h.horario_id, true) as registro_fecha_ideal, h.horario_id FROM horarios h ) SELECT usuario.usuario_nombre, registro.registro_id, registro.registro_fecha, registro.registro_retardo, registro.registro_justificada, registro_fecha_supervisor, justificacion, comentario, registro_fecha_justificacion, profesor.profesor_id, profesor_nombre, profesor_clave, profesor_correo, horario_id, materia, carrera, horarios.facultad_id, facultad, nivel, horario_hora, horario_fin, horario_grupo, horarios.salon, fechas.registro_fecha_ideal, estado_supervisor.estado_supervisor_id as estado_supervisor_id, estado_supervisor.nombre as nombre, estado_supervisor.estado_color as estado_color, estado_supervisor.estado_icon as estado_icon, justificador.usuario_nombre as justificador_nombre, justificador.usuario_clave as justificador_clave, facultad.facultad_nombre as justificador_facultad, rol.rol_titulo as justificador_rol, registro.reposicion_id, reposicion_fecha, reposicion_hora, salon_reposicion.salon as reposicion_salon, CASE WHEN registro_retardo THEN 'warning' ELSE 'primary' END as color FROM horarios JOIN fechas using (horario_id) JOIN horario_profesor using (horario_id) JOIN profesor using (profesor_id) LEFT JOIN registro USING (horario_id, registro_fecha_ideal, profesor_id) LEFT JOIN reposicion USING (reposicion_id) LEFT JOIN salon as salon_reposicion ON salon_reposicion.salon_id = reposicion.salon_id join estado_supervisor ON estado_supervisor.estado_supervisor_id = COALESCE(registro.estado_supervisor_id, 0) LEFT JOIN USUARIO ON USUARIO.usuario_id = REGISTRO.supervisor_id LEFT JOIN USUARIO JUSTIFICADOR ON JUSTIFICADOR.usuario_id = REGISTRO.justificador_id LEFT JOIN ROL on ROL.rol_id = justificador.rol_id left join facultad on facultad.facultad_id = justificador.facultad_id WHERE (fechas.registro_fecha_ideal + HORARIO_HORA) BETWEEN GREATEST(HORARIO_FECHA_INICIO, PERIODO_FECHA_INICIO, :fecha_inicio) AND LEAST(PERIODO_FECHA_FIN, HORARIO_FECHA_FIN, :fecha_fin) ORDER BY fechas.registro_fecha_ideal DESC, horarios.horario_id, profesor_nombre", $params ); $db->delete('general_log'); $db->insert('general_log', [ 'general_log_json' => json_encode($params, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT), ]); echo json_encode(array_merge($data), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); } else { http_response_code(405); echo json_encode(['error' => 'method not allowed']); exit; } } catch (PDOException $th) { http_response_code(500); echo json_encode([ 'error' => $th->getMessage(), // 'query' => $db->getLastQuery(), ], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_PARTIAL_OUTPUT_ON_ERROR); exit; } catch (Exception $th) { http_response_code(500); echo json_encode([ 'error' => $th->getMessage(), ], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); exit; }