public async Task <ActionResult <ProductsToReturn> > GetProduct(int id)
        {
            var spec    = new ProductsWithTypeandBrandsSpecification(id);
            var product = await _ProductRepo.GetEntityWithSpec(spec);

            if (product == null)
            {
                return(NotFound(new ApiResponse(404)));
            }
            return(mapper.Map <Product, ProductsToReturn>(product));
        }
        public async Task <ActionResult <Pagination <ProductsToReturn> > > GetProducts(
            [FromQuery] ProductSpecParam productParams)

        {
            var spec       = new ProductsWithTypeandBrandsSpecification(productParams);
            var countSpec  = new ProductWithFiltersForCountSpecification(productParams);
            var totalItems = await _ProductRepo.CountAsync(countSpec);

            var products = await _ProductRepo.ListAsync(spec);

            var data = mapper
                       .Map <IReadOnlyList <Product>, IReadOnlyList <ProductsToReturn> >(products);

            return(Ok(new Pagination <ProductsToReturn>(productParams.pageIndex, productParams.Pagesize, totalItems, data)));
        }