public async Task SetCategoriesAsync(Guid discountId, IEnumerable <Guid> categoryIds)
        {
            var discount = await productCategoryDiscountRepository.GetAndEnsureExistAsync(discountId);

            var categories = await productCategoryRepository.GetByIdsAsync(categoryIds);

            await discountCategoryRepository.DeleteRangeAsync(discount);

            var discountCategories = categories.Select(category => new DiscountCategory(category, discount)).ToList();

            await discountCategoryRepository.AddRangeAsync(discountCategories);

            await discountCategoryRepository.SaveChangesAsync();
        }
        public async Task <IList <ProductsCategoriesForDiscountDto> > GetCategoriesForDiscountAsync(Guid id)
        {
            var discount = await discountRepository.GetAndEnsureExistAsync(id);

            var discountCategories = await discountCategoryRepository.GetCategories(discount);

            var categories = await productCategoryRepository.GetChildrenAsync();

            var mapped = MapCategories(categories, discountCategories);

            return(mapped);
        }