public ApiResponse <IList <DTOReporteEstatico> > GetReporteEstatico(DTOReporteEstatico reporteEstatico)
        {
            ApiResponse <IList <DTOReporteEstatico> > apiResponse = new ApiResponse <IList <DTOReporteEstatico> >();

            try
            {
                IList <Derechohabiente> derechohabientes = _derechohabienteRepository.GetList(x => (reporteEstatico.IdEstado != null ? x.IdEstado == reporteEstatico.IdEstado : x.IdEstado == x.IdEstado) &&
                                                                                              (reporteEstatico.IdGenero != null ? x.IdGenero == reporteEstatico.IdGenero : x.IdGenero == x.IdGenero) &&
                                                                                              (reporteEstatico.RangoInferior != null ? (reporteEstatico.RangoInferior <= (DateTime.Now.Year - x.FechaNacimiento.Year)) : x.FechaNacimiento == x.FechaNacimiento) &&
                                                                                              (reporteEstatico.RangoInferior != null ? (reporteEstatico.RangoSuperior >= (DateTime.Now.Year - x.FechaNacimiento.Year)) : x.FechaNacimiento == x.FechaNacimiento));

                apiResponse.Data = (from encuesta in _encuestaRepository.GetList(x => x.FechaAplicacion >= reporteEstatico.FechaInicio.Date && x.FechaAplicacion.Date <= reporteEstatico.FechaFin.Date)
                                    join derechohabiente in derechohabientes on encuesta.IdDerechohabiente equals derechohabiente.IdDerechohabiente
                                    from tipoDestino in _tiposDestinoRepository.GetList(x => x.IdTipoDestino == encuesta.IdTipoDestino).Take(1).DefaultIfEmpty()
                                    from temporada in _temporadasRepository.GetList(x => x.IdTemporada == encuesta.IdTemporada).Take(1).DefaultIfEmpty()
                                    from viaje in _tiposViajeRepository.GetList(x => x.IdTipoViaje == encuesta.IdTipoViaje).Take(1).DefaultIfEmpty()
                                    from genero in _generoRepository.GetList(x => x.IdGenero == derechohabiente.IdGenero).Take(1).DefaultIfEmpty()
                                    from estado in _estadoRepository.GetList(x => x.IdEstado == derechohabiente.IdEstado).Take(1).DefaultIfEmpty()
                                    select new DTOReporteEstatico
                {
                    Destino = tipoDestino.Nombre,
                    TemporadaVacacional = temporada.Nombre,
                    Viaje = viaje.Nombre,
                    Genero = genero.Genero,
                    Edad = DateTime.Now.Year - derechohabiente.FechaNacimiento.Year,
                    Estado = estado.Nombre
                }).ToList();

                if (apiResponse.Data != null)
                {
                    apiResponse.Result  = (int)ApiResult.Success;
                    apiResponse.Message = Resources.ConsultaExitosa;
                }

                else
                {
                    apiResponse.Result  = (int)ApiResult.Failure;
                    apiResponse.Message = Resources.ConsultaFallida;
                }
            }
            catch (Exception ex)
            {
                apiResponse.Result  = (int)ApiResult.Exception;
                apiResponse.Message = ex.Message;
            }

            return(apiResponse);
        }
        public MemoryStream GetReporteEstatico(DTOReporteEstatico reporteEstatico, string fileName)
        {
            MemoryStream memoryStream = null;

            try
            {
                IList <Derechohabiente> derechohabientes = _derechohabienteRepository.GetList(x => (reporteEstatico.IdEstado != null ? x.IdEstado == reporteEstatico.IdEstado : x.IdEstado == x.IdEstado) &&
                                                                                              (reporteEstatico.IdGenero != null ? x.IdGenero == reporteEstatico.IdGenero : x.IdGenero == x.IdGenero) &&
                                                                                              (reporteEstatico.RangoInferior != null ? (reporteEstatico.RangoInferior <= (DateTime.Now.Year - x.FechaNacimiento.Year)) : x.FechaNacimiento == x.FechaNacimiento) &&
                                                                                              (reporteEstatico.RangoInferior != null ? (reporteEstatico.RangoSuperior >= (DateTime.Now.Year - x.FechaNacimiento.Year)) : x.FechaNacimiento == x.FechaNacimiento));

                IList <DTOReporteEstatico> reporteEstaticoList = (from encuesta in _encuestaRepository.GetList(x => x.FechaAplicacion >= reporteEstatico.FechaInicio.Date && x.FechaAplicacion.Date <= reporteEstatico.FechaFin.Date)
                                                                  join derechohabiente in derechohabientes on encuesta.IdDerechohabiente equals derechohabiente.IdDerechohabiente
                                                                  from tipoDestino in _tiposDestinoRepository.GetList(x => x.IdTipoDestino == encuesta.IdTipoDestino).Take(1).DefaultIfEmpty()
                                                                  from temporada in _temporadasRepository.GetList(x => x.IdTemporada == encuesta.IdTemporada).Take(1).DefaultIfEmpty()
                                                                  from viaje in _tiposViajeRepository.GetList(x => x.IdTipoViaje == encuesta.IdTipoViaje).Take(1).DefaultIfEmpty()
                                                                  from genero in _generoRepository.GetList(x => x.IdGenero == derechohabiente.IdGenero).Take(1).DefaultIfEmpty()
                                                                  from estado in _estadoRepository.GetList(x => x.IdEstado == derechohabiente.IdEstado).Take(1).DefaultIfEmpty()
                                                                  select new DTOReporteEstatico
                {
                    Destino = tipoDestino.Nombre,
                    TemporadaVacacional = temporada.Nombre,
                    Viaje = viaje.Nombre,
                    Genero = genero.Genero,
                    Edad = DateTime.Now.Year - derechohabiente.FechaNacimiento.Year,
                    Estado = estado.Nombre
                }).ToList();

                DataTable reporteEstaticoDataTable = ToDataTable.IListToDataTable(new List <DTOReporteEstatico>(reporteEstaticoList));

                memoryStream = ToExcel.ExportToExcel(reporteEstaticoDataTable, fileName);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(memoryStream);
        }
 public async Task <ApiResponse <IList <DTOReporteEstatico> > > GetReporteEstatico(DTOReporteEstatico reporteEstatico)
 {
     return(await Task.Run(() => _repository.GetReporteEstatico(reporteEstatico)));
 }