public PagedList <BorrowDetailDto> GetBorrowDetails(BorrowDetailQueryFilter filters)
        {
            filters.PageNumber = filters.PageNumber == 0 ? _paginationOptions.DefaultPageNumber : filters.PageNumber;
            filters.PageSize   = filters.PageSize == 0 ? _paginationOptions.DefaultPageSize : filters.PageSize;
            var borrowDetails = _unitOfWork.BorrowDetailRepository.GetAllBorrowDetailAndBookName();
            var borrowBooks   = _unitOfWork.BorrowBookRepository.GetAllBorrowBookWithCustomerName();

            if (filters.CustomerId != null)
            {
                borrowBooks   = borrowBooks.Where(x => x.CustomerId == filters.CustomerId);
                borrowDetails = _unitOfWork.BorrowDetailRepository.GetBorrowDetailWithListBorrow(borrowBooks);
            }
            if (filters.BorrowId != null)
            {
                borrowDetails = borrowDetails.Where(x => x.BorrowId == filters.BorrowId);
            }

            if (filters.BookId != null)
            {
                borrowDetails = borrowDetails.Where(x => x.BookId == filters.BookId);
            }
            var pagedBorrowDetails = PagedList <BorrowDetailDto> .Create(borrowDetails, filters.PageNumber, filters.PageSize);

            return(pagedBorrowDetails);
        }
        public IActionResult GetBorrowDetails([FromQuery] BorrowDetailQueryFilter filters)
        {
            var borrowDetails     = _borrowDetailService.GetBorrowDetails(filters);
            var borrowDetailsDtos = _mapper.Map <IEnumerable <BorrowDetailDto> >(borrowDetails);
            var metadata          = new Metadata
            {
                TotalCount      = borrowDetails.TotalCount,
                PageSize        = borrowDetails.PageSize,
                CurrentPage     = borrowDetails.CurrentPage,
                TotalPages      = borrowDetails.TotalPages,
                HasNextPage     = borrowDetails.HasNextPage,
                HasPreviousPage = borrowDetails.HasPreviousPage
            };

            var response = new ApiResponse <IEnumerable <BorrowDetailDto> >(borrowDetailsDtos)
            {
                Meta = metadata
            };

            Response.Headers.Add("X-Pagination", JsonConvert.SerializeObject(metadata));

            return(Ok(response));
        }
예제 #3
0
        public Uri GetBorrowDetailPaginationUri(BorrowDetailQueryFilter filter, string actionUrl)
        {
            string baseUrl = $"{_baseUri}{actionUrl}";

            return(new Uri(baseUrl));
        }