TiemposEspera.kt


/**
 * API para la gestión de turnos
 * Esta API se encarga de la gestión de los turnos para las secciones que estén activadas en los dispositivos 
 * que sean de tipo 'Expendedor'. Se podrá solicitar un nuevo turno para la sección seleccionada. 
 * Para ello mostrará las secciones que estén activadas para tal fin y los mostrará en pantalla con sus colores 
 * distintivos, nombre de la sección, el turno actual, etc. También podrá mostrar los turnos ya atendidos 
 * filtrando por fecha y turno, por rango de fechas, seccion, etc. Además, también se podrá mostrar los tickets 
 * expedidos pudiendo filtrar por rango de fechas, turno y fecha, sección, terminal, etc.
 *
 * OpenAPI spec version: 3.0.1
 * 
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */
package io.swagger.client.apis

import io.swagger.client.models.RespuestaOkTiemposEspera
import io.swagger.client.models._400
import io.swagger.client.models._401
import io.swagger.client.models._404
import io.swagger.client.models._405
import io.swagger.client.models._500

import io.swagger.client.infrastructure.*

class TiemposEsperaApi(basePath: kotlin.String = "http://192.180.2.38/gmedia/api/") : ApiClient(basePath) {

    /**
     * Devueleve datos relacionados con los tiempos de espera entre turnos atendidos según el tipo de filtro aplicado
     * Devuelve los datos relacionados con los datos de espera de los turnos ya atendidos de cada sección 
	 *dependiendo del filtro aplicado. 
	 * Puede ser por un rango de fechas de tickets, por un rango de fechas de turnos atendidos, por sección, 
	 * por contador, por tiempo, por recogidos, por fecha de recogidos, por todos los campos anteriores a la vez 
	 * o también por turno y fecha. 
	 * También existe la posibilidad de mostrar por paginación y también filtrar además de por páginas, 
	 * por los campos 'recogido' y 'fecha_recogido'. 
	 * Todos los filtros son combinables entre sí menos 'Turno' 
	 * que sienpre irá acompañado de una fecha concreta.
     * @param authorization Token de autenticación. 
     * @param startDateTicket Fecha de inicio del filtro para tickets (Ejemplo: 2023-10-30 09:20:00) (optional)
     * @param endDateTicket Fecha de fin del filtro para tickets (Ejemplo: 2023-11-01 18:34:19) (optional)
     * @param startDateTurnoAtendido Fecha de inicio del filtro para turnos atendidos (Ejemplo: 2023-10-30 09:20:00) (optional)
     * @param endDateTurnoAtendido Fecha de fin del filtro para turnos atendidos (Ejemplo: 2023-11-01 18:34:19) (optional)
     * @param tiempo Tiempo en ser atendido (Ejemplo: 1) (optional)
     * @param seccion ID de la sección a filtrar (Ejemplo: 4) (optional)
     * @param contador Tiempo de atención? (Ejemplo: 8) (optional)
     * @param turno Número de turno a filtrar (Ejemplo: 26) (optional)
     * @param fecha Fecha a filtrar (Ejemplo: 0000-00-00 00:00:00) (optional)
     * @param paginación Muestra los resultados en páginas con una cantidad de 10 elementos por página (optional)
     * @param recogido Se marca a 1 cuando se obtienen los datos solicitados correctamente (Ejemplo: 0) (optional)
     * @param fechaRecogido Fecha en que se marco a 1 los datos recogidos correctamente (Ejemplo: 0000-00-00 00:00:00) (optional)
     * @param check Si este campo se marca a '1' se actualizará el campo 'recogido' con el valor '1' 
	 * y se registrará la fecha actual en el campo 'fecha_recogido' (optional)
     * @return RespuestaOkTiemposEspera
     */
    @Suppress("UNCHECKED_CAST")
    fun tiemposEsperaGet(authorization: kotlin.String, startDateTicket: kotlin.String? = null, endDateTicket: kotlin.String? = null, 
	startDateTurnoAtendido: kotlin.String? = null, endDateTurnoAtendido: kotlin.String? = null, tiempo: kotlin.Int? = null, 
	seccion: kotlin.Int? = null, contador: kotlin.Int? = null, turno: kotlin.Int? = null, fecha: kotlin.String? = null, 
	paginación: kotlin.Int? = null, recogido: kotlin.Int? = null, fechaRecogido: kotlin.String? = null, 
	check: kotlin.Int? = null): RespuestaOkTiemposEspera {
        val localVariableQuery: MultiValueMap = mutableMapOf>().apply {
            if (startDateTicket != null) {
                put("start_date_ticket", listOf(startDateTicket.toString()))
            }
            if (endDateTicket != null) {
                put("end_date_ticket", listOf(endDateTicket.toString()))
            }
            if (startDateTurnoAtendido != null) {
                put("start_date_turno_atendido", listOf(startDateTurnoAtendido.toString()))
            }
            if (endDateTurnoAtendido != null) {
                put("end_date_turno_atendido", listOf(endDateTurnoAtendido.toString()))
            }
            if (tiempo != null) {
                put("tiempo", listOf(tiempo.toString()))
            }
            if (seccion != null) {
                put("seccion", listOf(seccion.toString()))
            }
            if (contador != null) {
                put("contador", listOf(contador.toString()))
            }
            if (turno != null) {
                put("turno", listOf(turno.toString()))
            }
            if (fecha != null) {
                put("fecha", listOf(fecha.toString()))
            }
            if (paginación != null) {
                put("paginación", listOf(paginación.toString()))
            }
            if (recogido != null) {
                put("recogido", listOf(recogido.toString()))
            }
            if (fechaRecogido != null) {
                put("fecha_recogido", listOf(fechaRecogido.toString()))
            }
            if (check != null) {
                put("check", listOf(check.toString()))
            }
        }
        val localVariableHeaders: MutableMap = mutableMapOf()
        authorization.apply {
            localVariableHeaders["Authorization"] = this.toString()
        }
        localVariableHeaders["Accept"] = "application/json"
        val localVariableConfig = RequestConfig(
                RequestMethod.GET,
                "/tiemposEspera", query = localVariableQuery, headers = localVariableHeaders
        )
        val response = request(
                localVariableConfig
        )

        return when (response.responseType) {
            ResponseType.Success -> (response as Success<*>).data as RespuestaOkTiemposEspera
            ResponseType.Informational -> TODO()
            ResponseType.Redirection -> TODO()
            ResponseType.ClientError -> throw ClientException((response as ClientError<*>).body as? String ?: "Client error")
            ResponseType.ServerError -> throw ServerException((response as ServerError<*>).message ?: "Server error")
        }
    }
}