public async Task <ActionResult <ProductToReturnDTO> > GetProduct(int id)
        {
            var spec    = new ProductWithBrandsAndTypeSpecification(id);
            var product = await _productRepo.GetEntityWithSpec(spec);

            if (product == null)
            {
                return(NotFound(new APIResponse(404)));
            }

            return(_mapper.Map <Product, ProductToReturnDTO>(product));
        }
        public async Task <ActionResult <Pagination <ProductToReturnDTO> > > GetProducts(
            [FromQuery] ProductSpecParameters ProductParam)
        {
            var spec = new ProductWithBrandsAndTypeSpecification(ProductParam);

            var CountSpec = new ProductWithFilterandCountSpecifications(ProductParam);

            var totalItems = await _productRepo.CountAsync(CountSpec);

            var products = await _productRepo.GetListWithSpec(spec);

            var data = _mapper
                       .Map <IReadOnlyList <Product>, IReadOnlyList <ProductToReturnDTO> >(products);

            return(Ok(new Pagination <ProductToReturnDTO>(ProductParam.PageIndex, ProductParam.PageSize,
                                                          totalItems, data)));

            //return Ok(products);
        }