Exemplo n.º 1
0
        public async Task <ActionResult <Book[]> > GetBooksByPubIdAsync(int pubId, int pageNumber = 1, int pageSize = Data.Constants.Paging.DefaultPageSize, string sortBy = "BookId Desc")
        {
            EntityCollection <Book> dbBooks = null;

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

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

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

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

            return(Ok(Books));
        }