diff --git a/service/auditoria/index.php b/service/auditoria/index.php index e69de29..7998dfc 100644 --- a/service/auditoria/index.php +++ b/service/auditoria/index.php @@ -0,0 +1,89 @@ + 'Usuario no autorizado']); + exit(); +} + +// input +$input_raw = file_get_contents('php://input'); +$input = json_decode($input_raw, true); + +if (!isset($input['clave'])) { + http_response_code(400); + echo json_encode(['error' => 'clave no especificada']); + exit(); +} else if (!isset($input['fecha']) and (!isset($input['fecha_inicio']) and !isset($input['fecha_fin']))) { + http_response_code(400); + echo json_encode(['error' => 'fecha no especificada']); + exit(); +} + +try { + if ($_SERVER['REQUEST_METHOD'] !== 'POST') + throw new Exception('method not allowed'); + + if (!$db->where('profesor_clave', $input['clave'])->has('profesor')) + throw new Exception('clave no vĂ¡lida'); + + $profesor = $db->where('profesor_clave', $input['clave'])->getOne('profesor'); + + $data = $db->query( + "WITH horarios AS ( + SELECT * FROM horario_view JOIN horario_profesor USING (horario_id) WHERE :profesor_id = profesor_id + ), + fechas AS ( + SELECT fechas_clase(h.horario_id) as registro_fecha_ideal, h.horario_id + FROM horarios h + ) + SELECT + materia, + facultad, + carrera, + registro_fecha_ideal as fecha_clase, + horarios.horario_hora as hora_clase, + horarios.dia as dia_clase, + COALESCE( + TO_CHAR(registro_fecha::TIME, 'HH24:MI:SS'), + 'Sin registro' + ) as hora_registro + FROM horarios + JOIN fechas using (horario_id) + LEFT JOIN registro USING (horario_id, registro_fecha_ideal, profesor_id) + WHERE fechas.registro_fecha_ideal BETWEEN :fecha_inicio AND :fecha_fin + ORDER BY fechas.registro_fecha_ideal DESC, horarios.horario_id", + [ + ':fecha_inicio' => $input['fecha'] ?? $input['fecha_inicio'] ?? null, + ':fecha_fin' => $input['fecha'] ?? $input['fecha_fin'] ?? null, + ':profesor_id' => $profesor['profesor_id'], + ] + ); + echo json_encode($data, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT); +} 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; +} \ No newline at end of file