#18636: Fixing exception when deleting a role begin used

Work Item: 18636

--HG--
branch : 1.x
This commit is contained in:
Sebastien Ros
2012-07-02 17:32:26 -07:00
parent ed4be02336
commit e5d3701763

View File

@@ -16,17 +16,22 @@ namespace Orchard.Roles.Services {
private readonly IRepository<RoleRecord> _roleRepository; private readonly IRepository<RoleRecord> _roleRepository;
private readonly IRepository<PermissionRecord> _permissionRepository; private readonly IRepository<PermissionRecord> _permissionRepository;
private readonly IRepository<UserRolesPartRecord> _userRolesRepository;
private readonly IEnumerable<IPermissionProvider> _permissionProviders; private readonly IEnumerable<IPermissionProvider> _permissionProviders;
private readonly ICacheManager _cacheManager; private readonly ICacheManager _cacheManager;
private readonly ISignals _signals; private readonly ISignals _signals;
public RoleService(IRepository<RoleRecord> roleRepository, public RoleService(
IRepository<RoleRecord> roleRepository,
IRepository<PermissionRecord> permissionRepository, IRepository<PermissionRecord> permissionRepository,
IRepository<UserRolesPartRecord> userRolesRepository,
IEnumerable<IPermissionProvider> permissionProviders, IEnumerable<IPermissionProvider> permissionProviders,
ICacheManager cacheManager, ICacheManager cacheManager,
ISignals signals) { ISignals signals
) {
_roleRepository = roleRepository; _roleRepository = roleRepository;
_permissionRepository = permissionRepository; _permissionRepository = permissionRepository;
_userRolesRepository = userRolesRepository;
_permissionProviders = permissionProviders; _permissionProviders = permissionProviders;
_cacheManager = cacheManager; _cacheManager = cacheManager;
_signals = signals; _signals = signals;
@@ -111,6 +116,12 @@ namespace Orchard.Roles.Services {
} }
public void DeleteRole(int id) { public void DeleteRole(int id) {
var currentUserRoleRecords = _userRolesRepository.Fetch(x => x.Role.Id == id);
foreach(var userRoleRecord in currentUserRoleRecords) {
_userRolesRepository.Delete(userRoleRecord);
}
_roleRepository.Delete(GetRole(id)); _roleRepository.Delete(GetRole(id));
TriggerSignal(); TriggerSignal();
} }