[ 'id_espacio_sgu', 'bloque_horario_id', ], ]; #output rutas: [ ...ruta, salones: [{...salon}] ] header('Content-Type: application/json charset=utf-8'); $ruta = "../"; require_once "../class/c_login.php"; // check method try { global $db; if ($_SERVER['REQUEST_METHOD'] === 'GET') { // check parameters array_walk($information['GET'], function ($value) { if (!array_key_exists($value, $_GET)) { http_response_code(400); echo json_encode(['error' => "$value is required"]); exit; } }); // step 1: get subrutas $data = $db ->where('tiene_salones') ->where("{$_GET['id_espacio_sgu']} = ANY(id_espacio_sgu_array)") ->get('salon_view_mat', columns: 'id_espacio_sgu, salon, salon_id, salon_array'); $columns = [ // horario 'horario_view.horario_id', 'horario_hora', 'horario_grupo', 'horario_fin', 'materia', 'carrera', 'nivel', 'horario_view.salon', 'facultad', // profesor 'profesor.profesor_id', 'profesor_clave', 'profesor_nombre', 'profesor_correo', // registro 'registro_fecha', 'registro_retardo', 'registro.reposicion_id', 'estado_supervisor_id', 'comentario', // reposicion 'reposicion_fecha', 'reposicion_hora', 'reposicion_hora_fin', 'salon_reposicion.salon as reposicion_salon', ]; $fecha = ($_GET['fecha'] != 'null') ? ("'{$_GET['fecha']}'" ?: 'CURRENT_DATE') : 'CURRENT_DATE'; $data = array_map( fn($ruta) => array_merge( [ 'horarios' => $db->query( "SELECT " . implode(', ', $columns) . << $_GET['bloque_horario_id'], 'id_espacio_sgu' => $ruta['id_espacio_sgu'], ] ), // 'query' => $db->getLastQuery(), 'reposiciones' => $db->query( 'SELECT ' . implode(', ', $columns) . << $_GET['bloque_horario_id'], 'id_espacio_sgu' => $ruta['id_espacio_sgu'], ] ), ], $ruta, ), $data ); $data = array_filter( $data, fn($ruta) => count($ruta['horarios']) > 0 || count($ruta['reposiciones']) > 0 ); echo json_encode(array_values($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); exit; } catch (Exception $th) { http_response_code(500); echo json_encode([ 'error' => $th->getMessage(), ], JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); exit; }