コード例 #1
0
        public IHttpActionResult GetTasks([FromUri] TaskResourceParameters parameters)
        {
            try
            {
                var pagedList = _taskReadRepository.ToPagedList(parameters);


                var previousPageLink = pagedList.HasPrevious ?
                                       CreateTaskResourceUri(parameters,
                                                             ResourceUriType.PreviousPage) : null;

                var nextPageLink = pagedList.HasNext ?
                                   CreateTaskResourceUri(parameters,
                                                         ResourceUriType.NextPage) : null;

                var taskDto = AutoMapper.Mapper.Map <IEnumerable <TaskDetailDto> >(pagedList);

                var response = Request.CreateResponse(HttpStatusCode.OK, taskDto);
                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 CreateTaskResourceUri(
            TaskResourceParameters parameters,
            ResourceUriType type)
        {
            var _urlHelper = new UrlHelper(Request);

            int pageAdjustment = type.GetPageAdjustment();

            return(Url.Link("GetTasks",
                            new
            {
                searchQuery = parameters.SearchQuery,
                name = parameters.Name,
                pageNumber = parameters.PageNumber + pageAdjustment,
                pageSize = parameters.PageSize,
                orderBy = parameters.OrderBy
            }));
        }
コード例 #3
0
        public static PagedList <Task> ToPagedList(this IReadRepository <Task> repo, TaskResourceParameters parameters)
        {
            parameters = parameters ?? new TaskResourceParameters();
            var tasks = repo.List().OrderBy(t => t.Name).AsQueryable();

            if (!string.IsNullOrEmpty(parameters.Name))
            {
                tasks = tasks.Where(t => t.Name.ToLower() == parameters.Name.ToLower());
            }

            if (!string.IsNullOrEmpty(parameters.SearchQuery))
            {
                var searchQuery = parameters.SearchQuery.ToLower();
                tasks = tasks.Where(t => t.Name.ToLower().Contains(searchQuery) ||
                                    t.Description.ToLower().Contains(searchQuery));
            }

            return(PagedList <Task> .Create(tasks, parameters.PageNumber, parameters.PageSize));
        }