/// <summary> /// Delete a category /// </summary> /// <param name="category"></param> public void Delete(Category category) { // Check if anyone else if using this role var okToDelete = !category.Topics.Any(); if (okToDelete) { // Get any categorypermissionforoles and delete these first var rolesToDelete = _categoryPermissionForRoleRepository.GetByCategory(category.Id); foreach (var categoryPermissionForRole in rolesToDelete) { _categoryPermissionForRoleRepository.Delete(categoryPermissionForRole); } var categoryNotificationsToDelete = new List <CategoryNotification>(); categoryNotificationsToDelete.AddRange(category.CategoryNotifications); foreach (var categoryNotification in categoryNotificationsToDelete) { _categoryNotificationService.Delete(categoryNotification); } _categoryRepository.Delete(category); } else { var inUseBy = new List <Entity>(); inUseBy.AddRange(category.Topics); throw new InUseUnableToDeleteException(inUseBy); } }
/// <summary> /// Delete permission and associated category permission for roles /// </summary> /// <param name="permission"></param> public void Delete(Permission permission) { var catPermForRoles = _categoryPermissionForRoleRepository.GetByPermission(permission.Id); foreach (var categoryPermissionForRole in catPermForRoles) { _categoryPermissionForRoleRepository.Delete(categoryPermissionForRole); } _permissionRepository.Delete(permission); }
/// <summary> /// Delete a role /// </summary> /// <param name="role"></param> public void Delete(MembershipRole role) { // Check if anyone else if using this role var okToDelete = role.Users.Count == 0; if (okToDelete) { // Get any categorypermissionforoles and delete these first var rolesToDelete = _categoryPermissionForRoleRepository.GetByRole(role.Id); foreach (var categoryPermissionForRole in rolesToDelete) { _categoryPermissionForRoleRepository.Delete(categoryPermissionForRole); } _roleRepository.Delete(role); } else { var inUseBy = new List <Entity>(); inUseBy.AddRange(role.Users); throw new InUseUnableToDeleteException(inUseBy); } }