public static void Add <T>(this IObjVerEx obj, int propertyId, T?value) where T : struct { if (typeof(T).IsEnum && (value != null && value.GetType() == typeof(T))) { Lookups lookups = obj.objVerEx.GetLookups(propertyId); string value_list_name = typeof(T).Name.Replace("VL", ""); if (!string.IsNullOrEmpty(value_list_name) && !char.IsDigit(value_list_name[1])) { value_list_name = value_list_name.Substring(1, value_list_name.Length - 1); } int ObjectType = (int)Enum.Parse(typeof(VL_ValueLists), value_list_name, true); Lookup lookupToAdd = new Lookup() { Item = Convert.ToInt32(value), ObjectType = ObjectType }; if (lookups.GetLookupIndexByItem(lookupToAdd.Item) == -1) { lookups.Add(-1, lookupToAdd); } PropertyValue propValue = new PropertyValue() { PropertyDef = (int)propertyId }; propValue.TypedValue.SetValueToMultiSelectLookup(lookups); obj.objVerEx.SetProperty(propValue); } }
public static bool Contains <T>(this IObjVerEx obj, int propertyId, T?value) where T : struct { if (typeof(T).IsEnum && (value != null && value.GetType() == typeof(T))) { PropertyValue propValue = obj.objVerEx.GetProperty(propertyId); Lookups lookups = obj.objVerEx.GetLookups(propertyId); int itemIndex = lookups.GetLookupIndexByItem(Convert.ToInt32(value)); return(itemIndex != -1); } return(false); }
public static bool Contains <T>(this IObjVerEx obj, int propertyId, T value) where T : IObjVerEx { if (obj.objVerEx.HasProperty(propertyId)) { PropertyValue propValue = obj.objVerEx.GetProperty(propertyId); Lookups lookups = propValue.TypedValue.GetValueAsLookups(); int itemIndex = lookups.GetLookupIndexByItem(value.objVerEx.ID); return(itemIndex != -1); } return(false); }
public static PropertyValue ConvertValueListToLookups <T>(object id, MFDataType data_type, List <T?> vList) where T : struct { if (!typeof(T).IsEnum || vList == null) { PropertyValue pv = new PropertyValue() { PropertyDef = (int)id }; pv.TypedValue.SetValueToNULL(data_type); return(pv); } Lookups lookups = new Lookups(); foreach (T t in vList) { if (Equals(t, default(T))) { continue; } string value_list_name = typeof(T).Name.Replace("VL", ""); if (!string.IsNullOrEmpty(value_list_name) && !char.IsDigit(value_list_name[1])) { value_list_name = value_list_name.Substring(1, value_list_name.Length - 1); } int ObjectType = (int)Enum.Parse(typeof(VL_ValueLists), value_list_name, true); Lookup lookup = new Lookup() { Item = Convert.ToInt32(t), ObjectType = ObjectType }; if (lookups.GetLookupIndexByItem(lookup.Item) == -1) { lookups.Add(-1, lookup); } } PropertyValue propVal = new PropertyValue() { PropertyDef = (int)id }; propVal.TypedValue.SetValueToMultiSelectLookup(lookups); return(propVal); }
public static void Remove <T>(this IObjVerEx obj, int propertyId, T value) where T : IObjVerEx { if (obj.objVerEx.HasProperty(propertyId)) { PropertyValue propValue = obj.objVerEx.GetProperty(propertyId); Lookups lookups = propValue.TypedValue.GetValueAsLookups(); int itemIndex = lookups.GetLookupIndexByItem(value.objVerEx.ID); if (itemIndex != -1) { lookups.Remove(itemIndex); } } }
public static void Remove <T>(this IObjVerEx obj, int propertyId, T?value) where T : struct { if (typeof(T).IsEnum && (value != null && value.GetType() == typeof(T))) { PropertyValue propValue = obj.objVerEx.GetProperty(propertyId); Lookups lookups = obj.objVerEx.GetLookups(propertyId); int itemIndex = lookups.GetLookupIndexByItem(Convert.ToInt32(value)); if (itemIndex != -1) { lookups.Remove(itemIndex); } } }
public static Lookups ToLookups(this List <ObjVerEx> objVerEx) { Lookups lookups = new Lookups(); foreach (ObjVerEx obj in objVerEx) { Lookup lu = new Lookup { ObjectType = obj.Type, Item = obj.ID, Version = -1 }; if (lookups.GetLookupIndexByItem(lu.Item) == -1) { lookups.Add(-1, lu); } } return(lookups); }
public static PropertyValue ConvertObjectToLookups <T>(object id, MFDataType data_type, List <T> objClass) where T : IObjVerEx { if (null == objClass) { PropertyValue pv = new PropertyValue() { PropertyDef = (int)id }; pv.TypedValue.SetValueToNULL(data_type); return(pv); } Lookups lookups = new Lookups(); foreach (T t in objClass) { if (null == t) { continue; } Lookup lookup = new Lookup() { Item = t.objVerEx.ID, ObjectType = t.objVerEx.Type }; if (lookups.GetLookupIndexByItem(lookup.Item) == -1) { lookups.Add(-1, lookup); } } PropertyValue propVal = new PropertyValue(); propVal.TypedValue.SetValueToMultiSelectLookup(lookups); propVal.PropertyDef = (int)id; return(propVal); }
private void Lognotices(Vault vault, ObjVer objver, MfTask otask, string server) { // Writelog(string.Format("in Lognotices,objver.type={0},id={1},vaultname={2}", objver.Type, objver.ID, vault.Name)); var userIds = new Lookups(); try { userIds = vault.ObjectPropertyOperations.GetProperty(objver, (int)MFBuiltInPropertyDef. MFBuiltInPropertyDefAssignedTo) .Value.GetValueAsLookups(); } #region no propertydefassignedto catch (Exception ex) { // Writelog(string.Format("in Lognotices,big catch,type={0},id={1},vaultname={2},exception={3}", objver.Type, objver.ID, vault.Name,ex.Message )); try { var perms = vault.ObjectOperations.GetObjectPermissions(objver); var aceks = perms.CustomACL ? perms.AccessControlList.CustomComponent.AccessControlEntries. GetKeysWithPseudoUserDefinitions() : perms.NamedACL.AccessControlList.CustomComponent. AccessControlEntries.GetKeysWithPseudoUserDefinitions(); var aclc = perms.CustomACL ? perms.AccessControlList.CustomComponent : perms.NamedACL.AccessControlList.CustomComponent; Writelog(string.Format("perms:Count={0},CustomACL={1},Type={2},ID={3}", aceks.Count, perms.CustomACL, objver.Type, objver.ID)); foreach (AccessControlEntryKey acek in aceks) { Writelog(string.Format("perms:IsGroup={0},IsPseudoUser={1},PseudoUserID={2},UserOrGroupID={3}", acek.IsGroup, acek.IsPseudoUser, acek.PseudoUserID, acek.UserOrGroupID)); if (acek.UserOrGroupID == 1) { continue; //m-files api 获取结果不正确,暂时回避内部所有用户 } #region deal with group if (acek.IsGroup) { if (acek.IsPseudoUser) { foreach (UserOrUserGroupID uoug in acek.GetResolvedPseudoUserOrGroupIDs()) { #region deal with MFUserOrUserGroupTypeUserAccount if (uoug.UserOrGroupType == MFUserOrUserGroupType.MFUserOrUserGroupTypeUserAccount) { try { Writelog(string.Format("in Lognotices,big catch,first little try111,type={0},id={1},UserOrGroupID={2}", objver.Type, objver.ID, uoug.UserOrGroupID)); //var perm = aclc.GetACEByUserOrGroupID(uoug.UserOrGroupID, false); //Writelog(string.Format("in Lognotices,big catch,first little try222,type={0},id={1},vaultname={2}", objver.Type, objver.ID, vault.Name)); //var url = // string.Format( // "user1,AttachObjectsPermission={0},DeletePermission={1},ChangePermissionsPermission={2},EditPermission={3},ReadPermission={4},UserOrGroupID={5},CustomACL={6},ID={7}", // perm.AttachObjectsPermission, perm.DeletePermission, // perm.ChangePermissionsPermission, perm.EditPermission, perm.ReadPermission, uoug.UserOrGroupID, perms.CustomACL, objver.ID); //Writelog(string.Format("url:{0}", url)); //{"Id":1,"Name":"小白"} //if (Checkperm(perm)) continue; var lu = new Lookup { Item = uoug.UserOrGroupID }; if (userIds.GetLookupIndexByItem(lu.Item) < 0) { userIds.Add(-1, lu); } } catch (Exception ex1) { Writelog(string.Format("in Lognotices,big catch,first little catch,type={0},id={1},vaultname={2},exception={3}", objver.Type, objver.ID, vault.Name, ex1.Message)); } } #endregion deal with MFUserOrUserGroupTypeUserAccount #region deal with MFUserOrUserGroupTypeUserGroup else if (uoug.UserOrGroupType == MFUserOrUserGroupType.MFUserOrUserGroupTypeUserGroup) { try { Writelog(string.Format("in Lognotices,big catch,second little try 111,type={0},id={1},UserOrGroupID={2},acek.UserOrGroupID={3}", objver.Type, objver.ID, uoug.UserOrGroupID, acek.UserOrGroupID)); //var perm = aclc.GetACEByUserOrGroupID(uoug.UserOrGroupID, true); //Writelog(string.Format("in Lognotices,big catch,second little try 222,type={0},id={1},vaultname={2}", objver.Type, objver.ID, vault.Name)); //var url = // string.Format( // "group1,AttachObjectsPermission={0},DeletePermission={1},ChangePermissionsPermission={2},EditPermission={3},ReadPermission={4},UserOrGroupID={5},CustomACL={6},ID={7}", // perm.AttachObjectsPermission, perm.DeletePermission, // perm.ChangePermissionsPermission, perm.EditPermission, perm.ReadPermission, uoug.UserOrGroupID, perms.CustomACL, objver.ID); //Writelog(string.Format("url:{0}", url)); //{"Id":1,"Name":"小白"} //if (Checkperm(perm)) continue; var retul = GetUsers(vault, uoug.UserOrGroupID); foreach (var lu in retul) { if (userIds.GetLookupIndexByItem(lu.Item) < 0) { userIds.Add(-1, lu); } } } catch (Exception ex2) { Writelog(string.Format("in Lognotices,big catch,2nd little catch,type={0},id={1},vaultname={2},exception={3}", objver.Type, objver.ID, vault.Name, ex2.Message)); } } #endregion deal MFUserOrUserGroupTypeUserGroup // Writelog( //string.Format( // "in LogCheckInNotice,catch'catch,UserOrGroupID={0},IsPseudoUser={1},Type={2},ID={3},UserOrGroupID={4},UserOrGroupType={5}", // acek.UserOrGroupID, // acek.IsPseudoUser, objver.Type, objver.ID, uoug.UserOrGroupID, uoug.UserOrGroupType)); } continue; } IEnumerable <Lookup> ul = new List <Lookup>(); try { var perm = aclc.GetACEByUserOrGroupID(acek.UserOrGroupID, true); var url = string.Format( "group2,AttachObjectsPermission={0},DeletePermission={1},ChangePermissionsPermission={2},EditPermission={3},ReadPermission={4},UserOrGroupID={5},CustomACL={6},ID={7}", perm.AttachObjectsPermission, perm.DeletePermission, perm.ChangePermissionsPermission, perm.EditPermission, perm.ReadPermission, acek.UserOrGroupID, perms.CustomACL, objver.ID); Writelog(string.Format("url:{0}", url)); if (Checkperm(perm)) { continue; } ul = GetUsers(vault, acek.UserOrGroupID); // ul = GetUsers(vault, uoug.UserOrGroupID); } catch (Exception exson) { Writelog( string.Format( "in Lognotices,catch'catch,UserOrGroupID={0},IsPseudoUser={1},Type={2},ID={3},Message={4}", acek.UserOrGroupID, acek.IsPseudoUser, objver.Type, objver.ID, exson.Message)); } try { foreach (var lu in ul) { if (userIds.GetLookupIndexByItem(lu.Item) < 0) { userIds.Add(-1, lu); } } } catch (Exception ex3) { Writelog(string.Format("in Lognotices,big catch,third little catch,type={0},id={1},vaultname={2},exception={3}", objver.Type, objver.ID, vault.Name, ex3.Message)); } } #endregion deal with group else { try { var perm = aclc.GetACEByUserOrGroupID(acek.UserOrGroupID, false); var url = string.Format( "user2,AttachObjectsPermission={0},DeletePermission={1},ChangePermissionsPermission={2},EditPermission={3},ReadPermission={4},UserOrGroupID={5},CustomACL={6},ID={7}", perm.AttachObjectsPermission, perm.DeletePermission, perm.ChangePermissionsPermission, perm.EditPermission, perm.ReadPermission, acek.UserOrGroupID, perms.CustomACL, objver.ID); Writelog(string.Format("url:{0}", url)); //{"Id":1,"Name":"小白"} if (Checkperm(perm)) { continue; } var lu = new Lookup { Item = acek.UserOrGroupID }; if (userIds.GetLookupIndexByItem(lu.Item) < 0) { userIds.Add(-1, lu); } } catch (Exception ex4) { Writelog(string.Format("in Lognotices,big catch,4th little catch,type={0},id={1},vaultname={2},exception={3}", objver.Type, objver.ID, vault.Name, ex4.Message)); } } } } catch (Exception exx) { Writelog(string.Format("in Lognotices,in big catch,another catch,type={0},id={1},vaultname={2},exception={3}", objver.Type, objver.ID, vault.Name, exx.Message)); } // Writelog(string.Format("in Lognotices,end big catch,type={0},id={1},vaultname={2}", objver.Type, objver.ID, vault.Name)); } #endregion no propertydefassignedto try { foreach (Lookup a in userIds) { otask.UserIds.Add(a.Item.ToString(CultureInfo.InvariantCulture)); } //Writelog(string.Format("Users Info,type={0},id={1},vaultname={2},counts={3},users={4}", // objver.Type, objver.ID, vault.Name, userIds.Count, userIds.ToString())); Logonenotice(vault, otask, server); } catch (Exception ex) { Writelog(string.Format("in Lognotices,Logonetask,type={0},id={1},{2}", objver.Type, objver.ID, ex.Message)); } // Writelog(string.Format("in Lognotices,the end,type={0},id={1},vaultname={2}", objver.Type, objver.ID, vault.Name)); }