示例#1
0
        public async ValueTask <(bool isSuccess, string error)> DeleteSubcategory(string categoryId, string subcategoryId)
        {
            var subcategory = await _repository.GetSubcategory(categoryId, subcategoryId);

            if (subcategory is null)
            {
                return(
                    false,
                    $"Что-то пошло не так, не удалось найти подкатегорию.\n\tКатегория: {categoryId}\n\tПодкатегория: {subcategoryId}"
                    );
            }

            foreach (var photo in subcategory.Photos)
            {
                await _photoSaver.RemoveFileFromRepository(photo, updateDB : false);
            }

            await _context.Entry(subcategory)
            .Collection(x => x.Products)
            .LoadAsync();

            foreach (var product in subcategory.Products)
            {
                await _context.Entry(product)
                .Collection(x => x.Photos)
                .LoadAsync();

                foreach (var photo in product.Photos)
                {
                    await _photoSaver.RemoveFileFromRepository(photo, updateDB : false);
                }
            }

            await _repository.DeleteSubcategory(subcategory);

            return(true, null);
        }