12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- <?php
- require_once "{$_SERVER['DOCUMENT_ROOT']}/class/c_login.php";
- header('Content-Type: application/json');
- if (!Login::is_logged()) {
- header('HTTP/1.1 401 Unauthorized');
- echo json_encode(['error' => 'No se ha iniciado sesión']);
- exit();
- }
- $user = Login::get_user();
- try {
- switch ($_SERVER['REQUEST_METHOD']) {
- case 'POST':
- // check parameters
- $raw = file_get_contents('php://input');
- $post_data = json_decode($raw, true);
- $data = $db->querySingle(
- 'WITH HORARIOS AS (
- SELECT *
- FROM horario
- JOIN horario_profesor USING (horario_id)
- WHERE horario.periodo_id = :periodo_id
- )
- INSERT INTO registro (profesor_id, horario_id, registro_fecha_ideal, registro_justificada, justificador_id, registro_fecha_justificacion, justificacion)
- VALUES (:profesor_id, :horario_id, :registro_fecha_ideal, :registro_justificada, :justificador_id, NOW(), :justificacion)
- ON CONFLICT (profesor_id, horario_id, registro_fecha_ideal)
- DO UPDATE SET registro_justificada = :registro_justificada, justificador_id = :justificador_id, registro_fecha_justificacion = NOW(), justificacion = :justificacion
- RETURNING *',
- array(
- 'periodo_id' => $user->periodo_id,
- 'profesor_id' => $post_data['profesor_id'],
- 'horario_id' => $post_data['horario_id'],
- 'registro_fecha_ideal' => $post_data['registro_fecha_ideal'],
- 'registro_justificada' => $post_data['registro_justificada'],
- 'justificador_id' => $user->user['id'],
- 'justificacion' => empty($post_data['justificacion']) ? null : $post_data['justificacion'],
- )
- );
- $data_justificador = $db->querySingle(
- "SELECT justificador.usuario_nombre as justificador_nombre,
- justificador.usuario_clave as justificador_clave,
- facultad.facultad_nombre as justificador_facultad, rol.rol_titulo as justificador_rol
- FROM USUARIO JUSTIFICADOR
- JOIN ROL on ROL.rol_id = justificador.rol_id
- LEFT JOIN facultad on facultad.facultad_id = justificador.facultad_id
- where justificador.usuario_id = :justificador_id",
- array(
- 'justificador_id' => $user->user['id'],
- )
- );
- // exit('exit');
- echo json_encode(array_merge($data, $data_justificador), JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);
- break;
- default:
- header('HTTP/1.1 405 Method Not Allowed');
- echo json_encode(['error' => 'Método no permitido']);
- }
- } catch (PDOException $e) {
- echo json_encode([
- 'error' => $e->getMessage(),
- 'query' => $db->getLastQuery(),
- 'exception' => $e->getTraceAsString()
- ]);
- } catch (Exception $e) {
- echo json_encode([
- 'error' => $e->getMessage(),
- 'exception' => $e->getTraceAsString()
- ]);
- }
|