public async Task <ResponseGetProductsViewModel> GetProducts(RequestGetProductsViewModel request)
        {
            RequestGetProductsModel requestModel = _mapper.Map <RequestGetProductsModel>(request);

            List <Book> books = await _bookRepository.GetBooks(requestModel);

            ResponseGetProductsViewModel result = _mapper.Map <ResponseGetProductsViewModel>(books);

            List <int> booksIds = books.Select(item => item.Id).ToList();

            await MapAuthorsToBooks(result, booksIds);

            return(result);
        }
        public async Task <ResponseGetProductsViewModel> GetProducts(RequestGetProductsViewModel requestViewModel)
        {
            RequestGetProductsModel requestModel = _mapper.Map <RequestGetProductsModel>(requestViewModel);

            List <Product> products = await _productRepository.GetByRequest(requestModel);

            IEnumerable <int> categoriesIds = products.Select(product => product.CategoryId).Distinct();

            List <Category> categories = await _categoryRepository.GetByIds(categoriesIds);

            var response = new ResponseGetProductsViewModel();

            response.Data       = _mapper.Map <List <ResponseGetProductsViewModelItem> >(products);
            response.TotalCount = await _productRepository.GetCount();

            MapCategoriesNamesToProducts(response, categories);

            return(response);
        }
        public async Task <List <Product> > GetByRequest(RequestGetProductsModel request)
        {
            List <Product> products = await _context.Products.Skip(request.Index).Take(request.Count).ToListAsync();

            return(products);
        }
        public async Task <List <Book> > GetBooks(RequestGetProductsModel model)
        {
            List <Book> books = await _data.Books.Skip(model.Index).Take(model.Count).ToListAsync();

            return(books);
        }