public async Task <Response <List <BookResource> > > GetBooks([FromHeader] GetBooksPerPageQuery query)
        {
            query.ConvertToBookPagination(HttpContext);
            var pagedOrder = await mediatr.Send(query);

            Response.AddPaginationToHeader(new Pagination(pagedOrder.Item.PageNumber, pagedOrder.Item.PageSize, pagedOrder.Item.TotalPages, pagedOrder.Item.TotalCount));
            return(book.Application.common.Response.Ok <List <BookResource> >(pagedOrder.Item.ToList()));
        }
        public async Task <Response <PagedList <BookResource> > > Handle(GetBooksPerPageQuery request, CancellationToken cancellationToken)
        {
            PagedList <Book> pagedBook = await bookRepo.GetBooksPerPage(request as BookPaginationParams);

            if (pagedBook.Any())
            {
                PagedList <BookResource> pagedBookResource = pagedConvertor.bookPagedToResource(pagedBook);
                return(Response.Ok <PagedList <BookResource> >(pagedBookResource));
            }
            else
            {
                return(Response.Fail <PagedList <BookResource> >("هیچ کتابی با این مشخصات وجود ندارد", StatusCodeEnum.NOTFUOUND));
            }
        }
        private HttpRequestMessage GetRequestCreator(GetBooksPerPageQuery query)
        {
            var request = new HttpRequestMessage(HttpMethod.Get, "/api/book");

            foreach (PropertyInfo info in query.GetType().GetProperties())
            {
                if (info.Name == "BookCategories")
                {
                    var list    = info.GetValue(query) as List <BookCategoryEnum>;
                    var intList = list.Select(item => Convert.ToInt32(item).ToString());
                    request.Headers.Add(info.Name, intList);
                }
                else
                {
                    request.Headers.Add(info.Name, info.GetValue(query)?.ToString());
                }
            }
            // Client.DefaultRequestHeaders.Add("minPrice" , ) ;
            return(request);
        }
        public async Task GetBookPerPageWithFilter_ShouldReturnPagedListBookResources(GetBooksPerPageQuery query)
        {
            //tested..works fine
            await AuthenticateMeBabyAsync();

            var request  = GetRequestCreator(query);
            var response = await Client.SendAsync(request);

            var content = await response.Content.ReadAsAsync <Response <List <BookResource> > >();

            content.Item.Count().Should().NotBe(0);
        }