# Documentación API de Gestión de Jornada Laboral ## Índice - [Obtener información de las jornadas por fechas](#obtener-jornada) - [Obtener el detalle de la jornada específica](#obtener-detalle) - [Vista Previa del Formulario de Gestión](#vista-previa-del-formulario-de-registro) - [Guardar Gestión](#guardar-justificación) - [Obtener Disponibilidad Empleado](#obtener-informacion) - [Obtener Información Estado Jornada](#obtener-informacion) ## Links - DATOSPERSONALES_URL: "http://192.168.253.6:8012/api/", - APIMARCACIONES_URL: "http://192.168.253.6:8181/", ## Obtener información por fechas de la jornada Este endpoint permite recuperar la información de las jornadas laborales de un empleado especificado por su identificación, filtrado por fechas de inicio y fin. #### HTTP Request `GET ${APIMARCACIONES_URL}/GetJornadaLaboral/{identificacion}` #### URL Parameters | Parameter | Type | Description | |-----------------|-----------|--------------------------------------------------------| | `identificacion`| `string` | Identificación del empleado cuya jornada se consulta. | | `start` | `DateTime`| Fecha de inicio del rango para consultar la jornada. | | `end` | `DateTime`| Fecha de fin del rango para consultar la jornada. | ### Response El endpoint responde con una lista de objetos `JornadaLaboralDTO`, cada uno representando un día de trabajo dentro del rango especificado, incluyendo detalles sobre la jornada laboral, recesos, y si se trata de un fin de semana o día festivo. #### JornadaLaboralDTO Object | Field | Type | Description | |--------------------|---------------|----------------------------------------------------------------| | `idJornada` | `int` | Identificador de la jornada laboral. | | `Fecha` | `DateTime` | Fecha de la jornada laboral. | | `FechaPlazoSolicitud` | `DateTime` | Fecha límite para solicitudes relacionadas con la jornada. | | `Jornada` | `JornadaDTO` | Detalles de la jornada laboral. | | `Receso` | `RecesoDTO` | Detalles de los recesos durante la jornada. | | `FinSemanaFeriado` | `bool` | Indica si la jornada cae en un fin de semana o día festivo. | | `Tipo` | `int` | -1 = error , 0= neutro, 1=positivo. | ### Errors En caso de error, el servidor devuelve un código de estado HTTP 500 y un mensaje descriptivo del error. ### Example ```http GET ${APIMARCACIONES_URL}/GetJornadaLaboral/12345678?start=2023-01-01&end=2023-03-31 [ { "idJornada": 52080, "fecha": "2024-09-11T00:00:00", "fechaPlazoSolicitud": "2024-09-13T00:00:00", "jornada": { "inicio": "07:42", "fin": "16:34", "duracion": null, "estadoIngreso": "Ingreso normal", "estadoSalida": "Salida normal", "estadoJornada": "Jornada completa de labores", "estado": "Jornada completa de labores", "tipo": 1, "tipoIngreso": 1, "tipoSalida": 1, "iniciorecuperar": 0, "finrecuperar": 0, "accion": "", "gestionJ": null, "gestionR": null, "justificacion": null, "recuperacion": null }, "receso": { "inicio": "12:44", "fin": "13:07", "duracion": "00:23", "codigo": null, "estado": "Jornada completa de receso", "tipo": 1, "tiempoRecuperar": 0, "accion": "", "gestionJ": null, "gestionR": null, "justificacion": null, "recuperacion": null }, "horario": null, "tipo": 1, "finSemanaFeriado": false }, { "idJornada": 28130, "fecha": "2024-07-30T00:00:00", "fechaPlazoSolicitud": "2024-07-31T00:00:00", "jornada": { "inicio": "07:52", "fin": "17:32", "duracion": null, "estadoIngreso": "Ingreso normal", "estadoSalida": "Salida normal", "estadoJornada": "Jornada completa de labores", "estado": "Jornada completa de labores", "tipo": 1, "tipoIngreso": 1, "tipoSalida": 1, "iniciorecuperar": 0, "finrecuperar": 0, "accion": "", "gestionJ": null, "gestionR": null, "justificacion": null, "recuperacion": null }, "receso": { "inicio": "12:42", "fin": "13:05", "duracion": "00:23", "codigo": null, "estado": "Jornada completa de receso", "tipo": 1, "tiempoRecuperar": 0, "accion": "", "gestionJ": null, "gestionR": null, "justificacion": null, "recuperacion": null }, "horario": null, "tipo": 1, "finSemanaFeriado": false }, ``` ## Obtener detalle específico de la jornada laboral Este endpoint proporciona información detallada sobre la jornada laboral de un empleado en un día específico, incluyendo horarios, recesos, justificaciones y posibles gestiones asociadas. ### HTTP Request `GET ${APIMARCACIONES_URL}/GetDetalleJornadaLaboral/{idJornada}` ### URL Parameters | Parameter | Type | Description | |-------------|------|---------------------------------------------------| | `idJornada` | `int`| Identificador de la jornada laboral a consultar. | ### Response El endpoint responde con un objeto `JornadaLaboralDTO` que contiene información completa sobre la jornada laboral, recesos, horarios, y las justificaciones o recuperaciones necesarias si existen problemas o modificaciones requeridas en la jornada. #### JornadaDTO Object | Field | Type | Description | |------------------|---------------|-------------------------------------------------------------| | `Inicio` | `string` | Hora de inicio de la jornada laboral. | | `Fin` | `string` | Hora de fin de la jornada laboral. | | `Duracion` | `string` | Duración total de la jornada laboral. | | `EstadoIngreso` | `string` | Estado del ingreso (ej. "Ingreso atrasado"). | | `EstadoSalida` | `string` | Estado de la salida (ej. "Salida normal"). | | `EstadoJornada` | `string` | Estado general de la jornada (ej. "Jornada completa"). | | `Estado` | `string` | Estado general adicional de la jornada. | | `Tipo` | `int` | Tipo numérico que representa el estado general de la jornada.| | `TipoIngreso` | `int` | Tipo numérico que representa el estado del ingreso. | | `TipoSalida` | `int` | Tipo numérico que representa el estado de la salida. | | `Iniciorecuperar`| `int` | Minutos a recuperar al inicio de la jornada. | | `Finrecuperar` | `int` | Minutos a recuperar al final de la jornada. | | `gestionJ` | `GestionDTO` | Gestión relacionada con la justificación de la jornada. | | `gestionR` | `GestionDTO` | Gestión relacionada con la recuperación de la jornada. | | `Justificacion` | `SolicitudDTO`| Detalles de la justificación de la jornada. | | `Recuperacion` | `SolicitudDTO`| Detalles de la recuperación de la jornada. | #### RecesoDTO Object | Field | Type | Description | |--------------------|---------------|-----------------------------------------------------------------| | `Inicio` | `string` | Hora de inicio del receso. | | `Fin` | `string` | Hora de fin del receso. | | `Duracion` | `string` | Duración total del receso. | | `Codigo` | `string` | Código identificador del receso. | | `Estado` | `string` | Estado general del receso (ej. "Receso no utilizado"). | | `Tipo` | `int` | Tipo numérico que representa el estado general del receso. | | `TiempoRecuperar` | `int` | Minutos a recuperar del receso. | | `gestionJ` | `GestionDTO` | Gestión relacionada con la justificación del receso. | | `gestionR` | `GestionDTO` | Gestión relacionada con la recuperación del receso. | | `Justificacion` | `SolicitudDTO`| Detalles de la justificación del receso. | | `Recuperacion` | `SolicitudDTO`| Detalles de la recuperación del receso. | ### Errores Si la jornada especificada no se encuentra o si hay errores en la recuperación de los datos, se devuelve un error HTTP 500 con un mensaje descriptivo. ### Example ```http GET ${DATOSPERSONALES_URL}/GetDetalleJornadaLaboral/65310 { "idJornada": 65310, "fecha": "2024-10-04T00:00:00", "fechaPlazoSolicitud": "2024-10-08T00:00:00", "jornada": { "inicio": "09:39", "fin": "19:06", "duracion": null, "estadoIngreso": "Ingreso atrasado", "estadoSalida": "Salida normal", "estadoJornada": "Jornada incompleta de labores", "tipo": -1, "gestionR": { "id": 7, "descripcion": "Entrada tardía laboral", "metodo": "INGRESO", "tipo": "L" } }, "receso": { "inicio": "12:44", "fin": "13:07", "duracion": "00:23", "estado": "Jornada completa de receso", "tipo": 1 }, "horario": { "horaInicio": "09:30", "horaFin": "18:00", "recesoInicio": "12:00", "recesoFin": "15:00" }, "tipo": -1, "finSemanaFeriado": false } ``` ## Vista Previa del Formulario de Gestión ### HTTP Request `POST ${APIMARCACIONES_URL}/RegistroEntradaSalida/AppVistaPreviaFormulario` #### Descripción Este endpoint procesa los datos de gestión de jornda labora y genera el PDF de la justificación/recuperación. #### Cuerpo de la Petición ```json { "idpersona": int, //id de tbl_persona "entrada": "string", // Hora de inicio "salida": "string", // Hora fin "fecha": "string", // Fecha del evento "fechar": "string?", // Fecha de recuperación (opcional) "tipo": "string", // Tipo de registro (J = Justificación, R = Recuperación) "subtipo": int, // Subtipo del registro, enviado desde el frontend "observacion": "string" // Observaciones adicionales } ``` #### Respuestas - **200 OK**: La solicitud fue procesada correctamente y el contenido en PDF ha sido insertado. - **409 Conflict**: Error en el procesamiento de la solicitud. Devuelve un mensaje de error. ## Guardar Gestión ### POST ${DATOSPERSONALES_URL}/api/RegistroEntradaSalida/AppPostGuardarJustificacion #### Descripción Este endpoint acepta datos de justificación/recuperación y los almacena en la nueva estructura. Además, envía correos electrónicos de notificación sobre la solicitud ingresada. #### Cuerpo de la Petición ```json { "idpersona": int, "entrada": "string", // Hora de inicio "salida": "string", // Hora fin "fecha": "string", // Fecha del evento "fechar": "string?", // Fecha de recuperación (opcional) "tipo": "string", // Tipo de registro (J = Justificación, R = Recuperación) "subtipo": int, // Subtipo del registro, enviado desde el frontend "observacion": "string" // Motivo de la no marcación } ``` #### Respuestas - **200 OK**: La solicitud fue procesada correctamente. La respuesta incluye detalles del registro almacenado y un mensaje de éxito. ```json { "JornaLaboral": { "idpersona": int, "entrada": "string", "salida": "string", "fecha": "string", "fechar": "string?", "tipo": "string", "subtipo": int, "observacion": "string" }, "strEstado": "EXITO", "strMensaje": "Solicitud de justificación realizada con éxito." } ``` - **409 Conflict**: Error en el procesamiento de la solicitud. Devuelve un mensaje de error con detalles adicionales. ```json { "strEstado": "NOEXITO", "strMensaje": "Error en AppPostGuardarJustificación: [detalle del error]" } ``` ## Obtener Disponibilidad Empleado ### HTTP Request `POST GET ${APIMARCACIONES_URL}/Horario/GetHorariosRangoFechas/{identificacion}/{fechaInicio}/{fechaFin}` #### Descripción Este endpoint recibir la identificación de una persona, una fecha de inicio y una fecha de fin y obtener sus horarios por cada día y conocer si tal día tiene vacación. #### Parámetros de Entrada - `identificacion`: String. Identificación del empleado cuyo horario y estado de vacaciones se desea consultar. - `fechaInicio`: DateTime. Fecha de inicio del rango para consultar horarios y vacaciones. - `fechaFin`: DateTime. Fecha de fin del rango para consultar horarios y vacaciones. ### Validaciones - El rango entre `fechaInicio` y `fechaFin` no debe exceder los 30 días. #### Respuestas - **200 OK**: La respuesta retorna una lista de objetos, donde cada objeto representa un día dentro del rango especificado y contiene la siguiente información. ```json { "fecha": "2024-10-01", "horario": { "horaInicio": "08:00:00", "horaFin": "16:30:00", "recesoInicio": "12:00:00", "recesoFin": "15:00:00" }, "vacacion": false }, { "fecha": "2024-10-02", "horario": { "horaInicio": "08:00:00", "horaFin": "16:30:00", "recesoInicio": "12:00:00", "recesoFin": "15:00:00" }, "vacacion": true }, ``` ### Consideraciones Generales - Prueba exhaustivamente todos los endpoints para asegurar que manejan correctamente tanto los casos de éxito como los de error. ## Obtener Información de Tipos de Jornada Este endpoint proporciona la información sobre los diferentes tipos de jornadas disponibles, incluyendo su identificador, descripción y el color asociado. ### HTTP Request `GET ${APIMARCACIONES_URL}/Gestion/GetTipoJornadaInfo` ### Headers No se requieren headers especiales para esta solicitud. ### Response La respuesta es un array de objetos, donde cada objeto representa un tipo de jornada con su correspondiente identificador, descripción y color asociado. ```json [ { "id": -1, "descripcion": "Error", "color": "#EF4444" }, { "id": 0, "descripcion": "Neutral", "color": "#6B7278" }, { "id": 1, "descripcion": "Correcto", "color": "#22C55E" }, { "id": 2, "descripcion": "Procesando", "color": "#fc8a31" }, { "id": 3, "descripcion": "Ejecutando", "color": "#FDE047" }, { "id": 4, "descripcion": "Gestionado", "color": "#14B8A6" } ]