public IHttpActionResult GetList(int doctypeid, [FromUri] ResolverResourceParameters parameters) { try { var pagedList = _readRepository.ToPagedList(parameters, _propertyMappingService); var previousPageLink = pagedList.HasPrevious ? CreateResourceUri(parameters, ResourceUriType.PreviousPage) : null; var nextPageLink = pagedList.HasNext ? CreateResourceUri(parameters, ResourceUriType.NextPage) : null; var tpDto = AutoMapper.Mapper.Map <IEnumerable <DocumentTypeResolverDto> >(pagedList); var response = Request.CreateResponse(HttpStatusCode.OK, tpDto); response.Headers.Add("X-Pagination-PageNumber", pagedList.CurrentPage.ToString()); response.Headers.Add("X-Pagination", Newtonsoft.Json.JsonConvert.SerializeObject(pagedList.MetaData(previousPageLink, nextPageLink))); return(ResponseMessage(response)); } catch (Exception ex) { //LOG //return StatusCode(HttpStatusCode.InternalServerError); return(InternalServerError(new Exception("An unexpected error occured! Please try again later!"))); } }
private string CreateResourceUri( ResolverResourceParameters parameters, ResourceUriType type) { var _urlHelper = new UrlHelper(Request); int pageAdjustment = type.GetPageAdjustment(); return(Url.Link("GetDocumentTypeResolvers", new { searchQuery = parameters.SearchQuery, name = parameters.Name, pageNumber = parameters.PageNumber + pageAdjustment, pageSize = parameters.PageSize, orderBy = parameters.OrderBy, description = parameters.Description, value = parameters.Value })); }
public static PagedList <DocumentTypeResolver> ToPagedList(this IReadRepository <DocumentTypeResolver> repo, ResolverResourceParameters parameters, IPropertyMappingService propertyMappingService) { parameters = parameters ?? new ResolverResourceParameters(); if (!propertyMappingService.ValidMappingExistsFor <DocumentTypeResolverDto, DocumentTypeResolver>(parameters.OrderBy)) { throw new Exception("Invalid OrderBy!"); //return BadRequest("Invalid OrderBy!!!"); //TODO => throw exception and return Bad Request to client } var tp = repo.List() .ApplySort(parameters.OrderBy, propertyMappingService.GetPropertyMapping <DocumentTypeResolverDto, DocumentTypeResolver>()); if (!string.IsNullOrEmpty(parameters.Name)) { tp = tp.Where(t => t.Name.ToLower() == parameters.Name.ToLower()); } if (!string.IsNullOrEmpty(parameters.Description)) { tp = tp.Where(t => t.Description.ToLower() == parameters.Description.ToLower()); } if (!string.IsNullOrEmpty(parameters.Value)) { tp = tp.Where(t => t.Value.ToLower() == parameters.Value.ToLower()); } if (!string.IsNullOrEmpty(parameters.SearchQuery)) { var searchQuery = parameters.SearchQuery.ToLower(); tp = tp.Where(t => t.Name.ToLower().Contains(searchQuery) || t.Description.ToLower().Contains(searchQuery) || t.Value.ToLower().Contains(searchQuery) ); } return(PagedList <DocumentTypeResolver> .Create(tp, parameters.PageNumber, parameters.PageSize)); }