private static IQueryable <Property> AddFiltersOnQuery(GetAllPropertiesFilter filter, IQueryable <Property> properties) { if (filter?.MaxPricePerNight > 0) { properties = properties.Where(x => x.PricePerNight <= filter.MaxPricePerNight); } if (filter?.MinPricePerNight > 0) { properties = properties.Where(x => x.PricePerNight >= filter.MinPricePerNight); } if (filter?.AccommodatesNumber > 0) { properties = properties.Where(x => x.AccommodatesNumber >= filter.AccommodatesNumber); } if (filter?.UserId > 0) { properties = properties.Where(x => x.UserId == filter.UserId); } if (filter?.CityId > 0) { properties = properties.Where(x => x.CityId == filter.CityId); } return(properties); }
public async Task <IEnumerable <Property> > GetAllPropertiesAsync(GetAllPropertiesFilter filter) { var properties = _dataContext.Properties.AsQueryable(); properties = AddFiltersOnQuery(filter, properties); return(await properties.ToListAsync()); }