public static IOrderedQueryable <Beer> OrderBy(this IQueryable <Beer> query, BeerGetBinding binding) { switch (binding.OrderBy) { case BeerSort.Abv: return(query.OrderBy(binding.OrderAscending, x => x.Abv)); default: return(query.OrderBy(binding.OrderAscending, x => x.Name)); } }
public async Task <PagedView <View.Beer> > GetBeers(BeerGetBinding binding) { using (var context = GetMainContext()) { int?brandId = context.BeerBrands.GetId(binding.BrandId); return(await context.Beers.Include(x => x.BeerStyle) .WhereIf(brandId.HasValue, x => x.BeerBrandId == brandId).OrderBy(binding) .WhereIf(!string.IsNullOrWhiteSpace(binding.Search), x => x.Name.ToLower().Contains(binding.Search.ToLower()) || x.ValueId.ToLower().Contains(binding.Search.ToLower())) .Select(x => new View.Beer(x)) .ToPagedViewAsync(binding)); } }
public async Task <IActionResult> Get([FromQuery] BeerGetBinding binding) => Ok(await _beerHandler.GetBeers(binding));