public async Task <ICollection <Reserva> > Busca(ReservaFilter filtro) { //inicializa a consulta var query = _db.Reserva .Include(a => a.Turista) .Include(a => a.Guia) .Include(a => a.ReservaRoteiros) .ThenInclude(b => b.Roteiro) .AsQueryable(); // faz o filtro query = Filter(query, filtro); //retorna o resultado return(await query.ToListAsync()); }
public async Task <ActionResult> Get([FromBody] ReservaFilter item) { try { //carrega o repositorio using var repository = new ReservaRepository(); //efetua a consulta var result = await repository.Busca(item); //retorna o resultado return(Ok(result)); } catch (Exception ex) { return(BadRequest(new ValidationModel(ex.Message))); } }
public IQueryable <Reserva> Filter(IQueryable <Reserva> query, ReservaFilter filter) { // executa os filtros if (filter.Ids != null) { query = query.Where(a => filter.Ids.Contains(a.Id)); } if (filter.Turista != null) { query = query.Where(a => a.IdTurista == filter.Turista); } if (filter.Guia != null) { query = query.Where(a => a.IdGuia == filter.Guia); } if (filter.Roteiros != null) { query = query.Where(a => a.ReservaRoteiros.Any(b => filter.Roteiros.Contains(b.IdRoteiro))); } if (filter.DataCriacaoInicio != null || filter.DataCriacaoFim != null) { var dataCriacaoInicio = filter.DataCriacaoInicio ?? DateTime.Today.AddYears(-100); var dataCriacaoFim = filter.DataCriacaoFim ?? DateTime.Today.AddYears(100); query = query.Where(a => a.DataCriacao >= dataCriacaoInicio && a.DataCriacao <= dataCriacaoFim); } if (filter.DataReservaInicio != null || filter.DataReservaFim != null) { var dataReservaInicio = filter.DataReservaInicio ?? DateTime.Today.AddYears(-100); var dataReservaFim = filter.DataReservaFim ?? DateTime.Today.AddYears(100); query = query.Where(a => a.DataReserva >= dataReservaInicio && a.DataCriacao <= dataReservaFim); } // retorna o resultado return(query); }