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(); } }