예제 #1
0
        public async Task <ActionResult <Author[]> > GetAllAuthors(int pageNumber = 1, int pageSize = Data.Constants.Paging.DefaultPageSize, string sortBy = "AuthorId Desc")
        {
            EntityCollection <Author> dbAuthors = null;

            try
            {
                dbAuthors = await _repository.GetAllAuthorsAsync(pageNumber, pageSize, sortBy);
            }
            catch (ParseException ex)
            {
                return(BadRequest("Request format is invalid: " + ex.Message));
            }
            catch (Exception ex)
            {
                return(StatusCode(StatusCodes.Status500InternalServerError, ex));
            }

            if (dbAuthors == null)
            {
                return(NotFound());
            }

            Data.ModelObjectCollection <Data.Models.Author> Authors = new ModelObjectCollection <Data.Models.Author>
            {
                TotalCount     = dbAuthors.TotalCount,
                PageNumber     = dbAuthors.PageNumber,
                PageSize       = dbAuthors.PageSize,
                TotalPages     = dbAuthors.TotalPages,
                SortBy         = dbAuthors.SortBy,
                NextPageNumber = dbAuthors.NextPageNumber,
                PrevPageNumber = dbAuthors.PrevPageNumber,
                NextPageUrl    = "",
                PrevPageUrl    = "",
                Data           = _mapper.Map <Data.Models.Author []>(dbAuthors.Data)
            };

            Authors.NextPageUrl = (Authors.PageNumber == Authors.TotalPages) ? "" : ("api/Authors?pageNumber" + Authors.NextPageNumber.ToString())
                                  + "&pageSize=" + Authors.PageSize.ToString()
                                  + "&sortBy=" + Authors.SortBy;
            Authors.PrevPageUrl = (Authors.PageNumber == 1) ? "" : ("api/Authors?pageNumber" + Authors.PrevPageNumber.ToString())
                                  + "&pageSize=" + Authors.PageSize.ToString()
                                  + "&sortBy=" + Authors.SortBy;

            return(Ok(Authors));
        }