Esempio n. 1
0
        public ICollection <VueloTo> ObtenerVuelosPorFiltro(FiltroVuelosTo filtro)
        {
            List <VueloTo> vuelos = new List <VueloTo>();

            using (var Contexto = ViveVolarDbContext.GetDbContext())
            {
                var vueloRepositorio = new VueloRepository(Contexto);

                var result = vueloRepositorio.Filtrar(ConstruirExpresionConsultaVuelosPorFiltroVuelos(filtro)).ToList();
                vuelos = Mapper.Map <List <VueloTo> >(result);
            }
            return(vuelos);
        }
Esempio n. 2
0
        public void ObtenerVuelosPorFiltro()
        {
            FiltroVuelosTo filtro = new FiltroVuelosTo();

            filtro.CriterioBusquedaOrigen  = FiltroVueloOrigen.IdOrigen;
            filtro.CriterioBusquedaDestino = FiltroVueloDestino.IdDestino;
            filtro.IdOrigen     = 2;
            filtro.IdDestino    = 1;
            filtro.FechaOrigen  = new DateTime(2018, 6, 21);
            filtro.FechaDestino = new DateTime(2018, 6, 21);
            var result = _vuelosRepo.ObtenerVuelosPorFiltro(filtro);

            Assert.IsNotNull(result);
        }
Esempio n. 3
0
        private Expression <Func <Vuelo, bool> > ConstruirExpresionConsultaVuelosPorFiltroVuelos(FiltroVuelosTo filtro)
        {
            Expression <Func <Vuelo, bool> > filtroInfo        = null;
            Expression <Func <Vuelo, bool> > predicateAuxiliar = null;

            switch (filtro.CriterioBusquedaOrigen)
            {
            case FiltroVueloOrigen.IdOrigen:
                filtroInfo = v => v.IdOrigen == filtro.IdOrigen;
                break;

            case FiltroVueloOrigen.IdCiudadOrigen:
                filtroInfo = v => v.Origen.Aeropuerto.IdCiudad == filtro.IdOrigen;
                break;

            case FiltroVueloOrigen.IdPaisOrigen:
                filtroInfo = v => v.Origen.Aeropuerto.Ciudad.Estado.IdPais == filtro.IdOrigen;
                break;
            }

            if (filtro.FechaOrigen != null)
            {
                DateTime fecha = filtro.FechaOrigen.Value.Date;
                predicateAuxiliar = v => v.HoraSalida >= fecha;
            }
            else
            {
                DateTime fecha = DateTime.UtcNow.Date;
                predicateAuxiliar = v => v.HoraSalida >= fecha;
            }

            filtroInfo = filtroInfo.And(predicateAuxiliar);

            switch (filtro.CriterioBusquedaDestino)
            {
            case FiltroVueloDestino.IdDestino:
                predicateAuxiliar = v => v.IdDestino == filtro.IdDestino;
                break;

            case FiltroVueloDestino.IdCiudadDestino:
                predicateAuxiliar = v => v.Destino.Aeropuerto.IdCiudad == filtro.IdDestino;
                break;

            case FiltroVueloDestino.IdPaisDestino:
                predicateAuxiliar = v => v.Destino.Aeropuerto.Ciudad.Estado.IdPais == filtro.IdDestino;
                break;
            }

            filtroInfo = filtroInfo.And(predicateAuxiliar);

            if (filtro.FechaDestino != null)
            {
                DateTime fecha = filtro.FechaOrigen.Value.Date.AddDays(1).AddMilliseconds(-1);
                predicateAuxiliar = v => v.HoraLlegada <= fecha;
            }
            else
            {
                DateTime fecha = DateTime.UtcNow.AddDays(31).Date.AddMilliseconds(-1);
                predicateAuxiliar = v => v.HoraLlegada <= fecha;
            }

            filtroInfo = filtroInfo.And(predicateAuxiliar);
            return(filtroInfo);
        }