public ActionResult <IEnumerable <ValueToReplaceDto> > GetValueToReplaces([FromQuery] ValueToReplaceParametersDto valueToReplaceParametersDto) { var valueToReplacesFromRepo = _valueToReplaceRepository.GetValueToReplaces(valueToReplaceParametersDto); var previousPageLink = valueToReplacesFromRepo.HasPrevious ? CreateValueToReplacesResourceUri(valueToReplaceParametersDto, ResourceUriType.PreviousPage) : null; var nextPageLink = valueToReplacesFromRepo.HasNext ? CreateValueToReplacesResourceUri(valueToReplaceParametersDto, ResourceUriType.NextPage) : null; var paginationMetadata = new { totalCount = valueToReplacesFromRepo.TotalCount, pageSize = valueToReplacesFromRepo.PageSize, pageNumber = valueToReplacesFromRepo.PageNumber, totalPages = valueToReplacesFromRepo.TotalPages, hasPrevious = valueToReplacesFromRepo.HasPrevious, hasNext = valueToReplacesFromRepo.HasNext, previousPageLink, nextPageLink }; Response.Headers.Add("X-Pagination", JsonSerializer.Serialize(paginationMetadata)); var valueToReplacesDto = _mapper.Map <IEnumerable <ValueToReplaceDto> >(valueToReplacesFromRepo); return(Ok(valueToReplacesDto)); }
public PagedList <ValueToReplace> GetValueToReplaces(ValueToReplaceParametersDto valueToReplaceParameters) { if (valueToReplaceParameters == null) { throw new ArgumentNullException(nameof(valueToReplaceParameters)); } var collection = _context.ValueToReplaces as IQueryable <ValueToReplace>; // TODO: AsNoTracking() should increase performance, but will break the sort tests. need to investigate if (!string.IsNullOrWhiteSpace(valueToReplaceParameters.QueryString)) { var QueryString = valueToReplaceParameters.QueryString.Trim(); collection = collection.Where(lambdaInitialsToReplace => lambdaInitialsToReplace.ValueToReplaceTextField1.Contains(QueryString) || lambdaInitialsToReplace.ValueToReplaceTextField2.Contains(QueryString)); } var sieveModel = new SieveModel { Sorts = valueToReplaceParameters.SortOrder, Filters = valueToReplaceParameters.Filters }; collection = _sieveProcessor.Apply(sieveModel, collection); return(PagedList <ValueToReplace> .Create(collection, valueToReplaceParameters.PageNumber, valueToReplaceParameters.PageSize)); }
private string CreateValueToReplacesResourceUri( ValueToReplaceParametersDto valueToReplaceParametersDto, ResourceUriType type) { switch (type) { case ResourceUriType.PreviousPage: return(Url.Link("GetValueToReplaces", new { filters = valueToReplaceParametersDto.Filters, orderBy = valueToReplaceParametersDto.SortOrder, pageNumber = valueToReplaceParametersDto.PageNumber - 1, pageSize = valueToReplaceParametersDto.PageSize, searchQuery = valueToReplaceParametersDto.QueryString })); case ResourceUriType.NextPage: return(Url.Link("GetValueToReplaces", new { filters = valueToReplaceParametersDto.Filters, orderBy = valueToReplaceParametersDto.SortOrder, pageNumber = valueToReplaceParametersDto.PageNumber + 1, pageSize = valueToReplaceParametersDto.PageSize, searchQuery = valueToReplaceParametersDto.QueryString })); default: return(Url.Link("GetValueToReplaces", new { filters = valueToReplaceParametersDto.Filters, orderBy = valueToReplaceParametersDto.SortOrder, pageNumber = valueToReplaceParametersDto.PageNumber, pageSize = valueToReplaceParametersDto.PageSize, searchQuery = valueToReplaceParametersDto.QueryString })); } }