public async Task <List <Restaurant> > SelectPaginated(RestaurantPaginatedFilter filter) { var query = _context .Restaurants .AsQueryable <Restaurant>(); if (!string.IsNullOrWhiteSpace(filter.Name)) { query = query.Where(r => r.Name.Contains(filter.Name)); } if (filter.IncludeMenus) { query = query.Include(r => r.Menus); } if (filter.OrderByDesc) { query = query.OrderByDescending(r => r.Name); } else { query = query.OrderBy(r => r.Name); } return(await query .Skip(filter.StartIndex) .Take(filter.PageSize) .ToListAsync()); }
public async Task <PaginatedResult <RestaurantOutputModel> > SelectPaginated(RestaurantPaginatedFilter filter) { var total = await _repository.TotalWithFilter(filter); var results = await _repository.SelectPaginated(filter); return(new PaginatedResult <RestaurantOutputModel>( results?.Select(_mapper.Map <RestaurantOutputModel>), total, filter.Page, filter.PageSize)); }
public async Task <long> TotalWithFilter(RestaurantPaginatedFilter filter) { var query = _context .Restaurants .AsQueryable <Restaurant>(); if (!string.IsNullOrWhiteSpace(filter.Name)) { query = query.Where(r => r.Name.Contains(filter.Name)); } return(await query .CountAsync()); }
public async Task <ActionResult <PaginatedResult <RestaurantOutputModel> > > GetPaginated([FromBody] RestaurantPaginatedFilter filter) { try { var result = await _service.SelectPaginated(filter); return(ReturnPaginatedResult(result)); } catch (Exception ex) { return(ReturnPaginatedResult(PaginatedResult <RestaurantOutputModel> .Error(ex))); } }