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); }
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()); }