예제 #1
0
        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!")));
            }
        }
예제 #2
0
        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));
        }