public static PermissionViewModel ToViewModel(this InstPermission permission) { return(new PermissionViewModel() { Name = permission.Name, State = permission.State }); }
private InstPermission GetInstPermission(string name, string state, MsSqlMonitorEntities context) { InstPermission permission = context.InstPermissions.FirstOrDefault(perm => perm.Name == name && perm.State == state); if (permission == null) { permission = context.InstPermissions.Local.FirstOrDefault(perm => perm.Name == name && perm.State == state); } if (permission == null) { permission = new InstPermission() { Name = name, State = state }; context.InstPermissions.Add(permission); } return(permission); }
private void SetInstancePrincipalsPermissions(List <Tuple <Instance, InstanceInfo> > linkedInfo, MsSqlMonitorEntities context) { linkedInfo.ForEach(li => // In every instance { foreach (PermissionInfo permInfo in li.Item2.Permissions) // find every permission { // Permission should be unique, so we take one from database if it exists otherwise create new. InstPermission permission = GetInstPermission(permInfo.Name, permInfo.State, context); int toFind = permInfo.AssociatedIds.Count; foreach (InstRoleInfo role in li.Item2.Roles) // Assign permission to role { if (permInfo.AssociatedIds.Contains(role.NativeId)) { role.Entity.Permissions.Add(permission); toFind--; } if (toFind == 0) { break; } } if (toFind == 0) { continue; } foreach (InstLoginInfo login in li.Item2.Logins) // or to login { if (permInfo.AssociatedIds.Contains(login.NativeId)) { login.Entity.Permissions.Add(permission); toFind--; } if (toFind == 0) { break; } } } }); }