public ChangePermissionsResult SaveRole(RoleModel role) { if (role == null) return new ChangePermissionsResult { ErrorMessage = Messages.RoleNotFound }; if (Db.IsUniqueRoleName(role.RoleId, role.Name)) return new ChangePermissionsResult { ErrorMessage = Messages.RoleNameNotUnique }; using (var transaction = new TransactionScope()) { var roleDb = new Role { InstanceId = Db.InstanceId.Value, RoleId = role.RoleId, RoleName = role.Name, RoleType = role.Type }; Db.Save(roleDb); var componentsToRole = Db.GetComponentRoles(role.Components, roleDb.RoleId); var isPermissionChanged = false; foreach (var ctr in componentsToRole) { if (ctr.ComponentRoleId != 0 && ctr.AccessLevel == AccessLevel.None) { Db.Delete(ctr); if (!isPermissionChanged) isPermissionChanged = true; } else if ((int)ctr.AccessLevel > (int)AccessLevel.None) { Db.Save(ctr); if (!isPermissionChanged) isPermissionChanged = true; } } transaction.Complete(); return new ChangePermissionsResult { EntityId = roleDb.RoleId, IsPermissionsChanged = isPermissionChanged }; } }
private int InsertRoleAndAccess(int instanceId, SystemRoles systemRole, IEnumerable components, AccessLevel accessLevel) { var role = new Role { InstanceId = instanceId, RoleType = systemRole, RoleName = systemRole.GetDescription() }; Db.Save(role); foreach (var component in components) { if ((int)component == (int)AccessComponent.None) continue; var componentsToRole = new ComponentRole { InstanceId = instanceId, AccessLevel = accessLevel, ComponentId = (int)component, RoleId = role.RoleId }; Db.Save(componentsToRole); } return role.RoleId; }
public RoleModel(Role role) { RoleId = role.RoleId; Name = role.RoleName; Type = role.RoleType; }