public async Task <ActionResult <ProductToReturnDTO> > GetProductById(int id)
        {
            var spec    = new ProductsWithTypesandBrandsSpecifications(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] ProductSpecParams @params)
        {
            var spec = new ProductsWithTypesandBrandsSpecifications(@params);

            var countSpec = new ProuctWithFiltersForCountSpecification(@params);

            var totalItems = await _productRepo.CountAsync(countSpec);

            var products = await _productRepo.ListAsync(spec);

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

            var results = new Pagination <ProductToReturnDTO>(@params.PageIndex, @params.PageSize, totalItems, data);


            return(Ok(results));
        }