コード例 #1
0
        public async Task DeleteCategory(Guid categoryId)
        {
            if (!_permissionService.HasPermissionToChangeCategories())
            {
                throw new InvalidOperationException("Нет прав доступа для изменения категорий");
            }
            var category = await _context.Categories.FirstOrDefaultAsync(x => x.Id == categoryId);

            var products = await _context.Products.Where(x => x.CategoryId == categoryId).ToArrayAsync();

            var productIds = products.Select(x => x.Id);
            var bookings   = await _context.Bookings.Where(x => productIds.Contains(x.ProductId)).ToArrayAsync();

            if (category != null)
            {
                _context.Remove(category);
                _context.RemoveRange(products);
                _context.RemoveRange(bookings);
                await _context.SaveChangesAsync();
            }
        }