Exemple #1
0
        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));
        }
Exemple #3
0
        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)));
            }
        }