public PolizaSearchingFields GetSearchingFields(int?polizaId, string matricula, string dniCliente, string telefonoCliente, string fechaInicio, string fechaFinal, string estadoPoliza)
        {
            PolizaSearchingFields output = new PolizaSearchingFields()
            {
                FechaInicio    = DateTime.Parse(fechaInicio.Trim(), CultureInfo.GetCultureInfo("es-ES")),
                FechaFinal     = DateTime.Parse(fechaFinal.Trim(), CultureInfo.GetCultureInfo("es-ES")),
                SearchingParam = PolizaSearchingParam.empty
            };

            if (estadoPoliza == "0")
            {
                output.EstadoPoliza = EstadoPolizaParam.noActivo;
            }
            if (estadoPoliza == "1")
            {
                output.EstadoPoliza = EstadoPolizaParam.activo;
            }
            if (estadoPoliza == "2")
            {
                output.EstadoPoliza = EstadoPolizaParam.todos;
            }

            if (polizaId != null)
            {
                output.SearchingParam = PolizaSearchingParam.polizaId;
                output.PolizaId       = (int)polizaId;
            }

            if (matricula.IsNullOrWhiteSpace() == false)
            {
                output.SearchingParam = PolizaSearchingParam.matricula;
                output.Value          = matricula.Trim().ToUpperInvariant();
            }
            if (dniCliente.IsNullOrWhiteSpace() == false)
            {
                output.SearchingParam = PolizaSearchingParam.dniCliente;
                output.Value          = dniCliente.Trim().ToUpperInvariant();
            }
            if (telefonoCliente.IsNullOrWhiteSpace() == false)
            {
                output.SearchingParam = PolizaSearchingParam.telefonoCliente;
                output.Value          = telefonoCliente.Trim();
            }
            return(output);
        }
        /// <summary>
        /// Búsqueda por parámetros.
        /// Filtra por los parámetros que no están vacíos ,
        /// busca coincidencias por:
        /// Parámetro
        /// + estado Póliza ( 0=> no activa , 1 => activa ,  2=> todos)
        /// + fecha de Alta de la póliza (rango de fechas comprendido entre FechaInicio/FechaFinal)
        /// </summary>
        /// <param name="searchingFields"></param>
        /// <returns>Lista de gestion pólizas coincidentes (la última creada de cada póliza coincidente ) </returns>
        public List <GestionPoliza> SearchPolizas(PolizaSearchingFields searchingFields)
        {
            List <GestionPoliza> output = new List <GestionPoliza>();

            // Fecha Alta + Estado  (resto de campos vacíos).
            if (searchingFields.SearchingParam == PolizaSearchingParam.empty)
            {
                output = unitOfWork.GestionPoliza.GetLastGestionesPolizaWithCliente(searchingFields.FechaInicio, searchingFields.FechaFinal, (int)searchingFields.EstadoPoliza).ToList();
                return(output);
            }

            // Póliza Id
            if (searchingFields.SearchingParam == PolizaSearchingParam.polizaId)
            {
                GestionPoliza gestionPoliza = unitOfWork.GestionPoliza.GetLastGestionPolizaWithClienteBy(searchingFields.PolizaId);
                if (gestionPoliza != null)
                {
                    output.Add(gestionPoliza);
                }
                return(output);
            }
            // Fecha Alta + Estado + Matrícula que aparezca en cualquiera de sus gestionPoliza.
            if (searchingFields.SearchingParam == PolizaSearchingParam.matricula)
            {
                output = unitOfWork.GestionPoliza.GetLastGestionesPolizaWithClienteByMatricula(searchingFields.FechaInicio, searchingFields.FechaFinal, (int)searchingFields.EstadoPoliza, searchingFields.Value).ToList();
                return(output);
            }
            // Fecha Alta + Estado + NIF / NIE.
            if (searchingFields.SearchingParam == PolizaSearchingParam.dniCliente)
            {
                output = unitOfWork.GestionPoliza.GetLastGestionesPolizaWithClienteByDni(searchingFields.FechaInicio, searchingFields.FechaFinal, (int)searchingFields.EstadoPoliza, searchingFields.Value).ToList();
                return(output);
            }
            // Fecha Alta + Estado + Teléfono.
            if (searchingFields.SearchingParam == PolizaSearchingParam.telefonoCliente)
            {
                output = unitOfWork.GestionPoliza.GetLastGestionesPolizaWithClienteByTelefono(searchingFields.FechaInicio, searchingFields.FechaFinal, (int)searchingFields.EstadoPoliza, searchingFields.Value).ToList();
                return(output);
            }
            // Si no hay ningún resultado coincidente, devuelve una lista vacía.
            return(output);
        }