public async Task <IEnumerable <ProductDto> > AddProductsAsync(
            IEnumerable <ProductForCreationDto> newProducts, CancellationToken cancellationToken = default(CancellationToken))
        {
            var productEntities = newProducts.Select(ProductMapper.CreationToEntityFunc).ToList();

            _context.Products.AddRange(productEntities);
            var affectedRow = await _context.SaveChangesAsync(cancellationToken);

            var expectedAffectedRow = productEntities.Count + productEntities.Sum(p => p.ProductImages.Count);

            HelperCore.CheckSaveChange(affectedRow, expectedAffectedRow);

            var returnProducts = productEntities.Select(ProductMapper.EntityToDtoFunc);

            return(returnProducts);
        }
        public async Task DeleteProductAsync(int id, CancellationToken cancellationToken = default(CancellationToken))
        {
            var productEntity = await _context.Products
                                .FirstOrDefaultAsync(p => p.ProductId == id, cancellationToken);

            if (productEntity == null)
            {
                throw  new EntityNotFoundException($"Cannot find product with id={id} in order to delete");
            }

            _context.Products.Remove(productEntity);

            var affectedRow = await _context.SaveChangesAsync(cancellationToken);

            HelperCore.CheckSaveChange(affectedRow, 1);
        }