Example #1
0
        public async Task <IEnumerable <PrintingEditionModel> > GetAllEditionsAsync(PaginationQuery paginationFilter,
                                                                                    PrintingEditionFilter filter = null)
        {
            var skip = (paginationFilter.PageNumber - 1) * paginationFilter.PageSize;

            if (filter is null)
            {
                var printingEditionsNoFilter =
                    _mapper.Map <IEnumerable <PrintingEdition>, IEnumerable <PrintingEditionModel> >(
                        await _editionRepository.GetEditionsAsync(skip, paginationFilter.PageSize));

                return(printingEditionsNoFilter);
            }

            var printingEditionsFilter = _mapper.Map <IEnumerable <PrintingEdition>, IEnumerable <PrintingEditionModel> >(
                await _editionRepository.GetEditionsAsync(skip,
                                                          paginationFilter.PageSize,
                                                          filter));

            return(printingEditionsFilter);
        }
Example #2
0
        public async Task <IActionResult> GetEditions([FromQuery] PaginationQuery paginationQuery, [FromQuery] PrintingEditionFilter filter)
        {
            var editionsResponse = await _editionService.GetAllEditionsAsync();

            if (paginationQuery is null || paginationQuery.PageSize < 1 || paginationQuery.PageNumber < 1)
            {
                return(Ok(new PagedResponse <PrintingEditionModel>(editionsResponse)));
            }

            editionsResponse = await _editionService.GetAllEditionsAsync(paginationQuery, filter);

            var paginationResponse = PaginationProvider.CreatePaginatedResponse(_uriService,
                                                                                $"api/{ControllerContext.ActionDescriptor.ControllerName}/{Constants.Routes.EDITIONS_GET_ALL_ROUTE}",
                                                                                paginationQuery, filter,
                                                                                editionsResponse);


            return(Ok(paginationResponse));
        }
        public async Task <IEnumerable <PrintingEdition> > GetEditionsAsync(int skip, int pageSize, PrintingEditionFilter filter)
        {
            var printingEditions = _dbSet.Include("AuthorInPrintingEditions.Author");

            if (!string.IsNullOrWhiteSpace(filter.SearchString))
            {
                printingEditions = printingEditions.Where(pe => pe.Title.ToLower().Contains(filter.SearchString.ToLower()) ||
                                                          pe.Description.ToLower().Contains(filter.SearchString.ToLower()));
            }

            if (filter.Types != null)
            {
                printingEditions = printingEditions.Where(pe => filter.Types.Contains(pe.EditionType));
            }

            if (filter.MaxPrice > 0)
            {
                printingEditions =
                    printingEditions.Where(pe => pe.Price >= filter.MinPrice && pe.Price <= filter.MaxPrice);
            }

            if (filter.Currency != null)
            {
                printingEditions = printingEditions.Where(pe => pe.EditionCurrency == filter.Currency);
            }

            if (filter.Sort != null)
            {
                if ((bool)filter.Sort)
                {
                    printingEditions = printingEditions.OrderByDescending(pe => pe.Price);
                }
                else
                {
                    printingEditions = printingEditions.OrderBy(pe => pe.Price);
                }
            }

            printingEditions = printingEditions.Skip(skip).Take(pageSize);

            return(await printingEditions.ToListAsync());
        }