private IList <PersonalBudget> GetPersonalBudgetHourList(Vault vault) { var typeId = MfAlias.GetObjType(vault, "ObjBudgetHours"); var classId = MfAlias.GetObjectClass(vault, "ClassBudgetHours"); var objVns = MFSearchConditionUtils.SearchObjectsByClass(vault, typeId, classId); var budgets = new List <PersonalBudget>(); if (objVns.Count > 0) { var guid = vault.GetGUID(); var propIdHoursDetail = MfAlias.GetPropDef(vault, "PropBudgetHoursDetail"); var propIdMember = MfAlias.GetPropDef(vault, "PropMember"); for (int i = 1; i <= objVns.Count; i++) { var props = vault.ObjectPropertyOperations.GetProperties(objVns[i].ObjVer, false); var member = props.SearchForProperty(propIdMember).Value.GetValueAsLookup(); var hoursDetail = props.SearchForProperty(propIdHoursDetail).Value.DisplayValue; budgets.Add(new PersonalBudget { MemberID = member.Item, MemberName = member.DisplayValue, HoursDetail = hoursDetail, VaultGuid = guid }); } } return(budgets); }
/// <summary> /// 解析出联系人信息 /// </summary> /// <param name="vault"></param> /// <param name="lnkman"></param> /// <param name="oProperties"></param> private static void LinkmanInfo(Vault vault, Linkman lnkman, PropertyValues oProperties) { if (oProperties == null || oProperties.Count == 0) { return; } var propLinkmanName = MfAlias.GetPropDef(vault, "PropLinkmanName", true); //姓名 var propEmail = MfAlias.GetPropDef(vault, "PropEmail", true); //邮箱 var propInerUse = MfAlias.GetPropDef(vault, "PropInnerUser", true); //内部用户 foreach (PropertyValue item in oProperties) { if (item.PropertyDef == propLinkmanName) { lnkman.Name = item.TypedValue.DisplayValue; } if (item.PropertyDef == propEmail) { lnkman.Mail = item.TypedValue.DisplayValue; } if (item.PropertyDef == propInerUse) { lnkman.InnerUser = item.TypedValue.DisplayValue; } } }
public ICollection <string> GetUsersInGroupByAlias(MFilesVault vault, string groupAlias) { var ovault = MFServerUtility.GetVault(vault); var groupId = MfAlias.GetUsergroup(ovault, groupAlias); return(GetUsersInGroup(ovault, groupId)); }
internal static MfContact GetContactById(Vault mfVault, MetadataAliases aliases, int contactId) { var objAlias = aliases.Objects["ObjContacts"]; var classAlias = objAlias.ClassDict["ClassContacts"]; var typeId = MfAlias.GetObjType(mfVault, objAlias.Alias); var objId = new ObjID(); objId.SetIDs(typeId, contactId); var objVer = mfVault.ObjectOperations.GetLatestObjVer(objId, false); var accountPDId = MfAlias.GetPropDef(mfVault, classAlias.PropDict["PropAccount"]); var accountTV = mfVault.ObjectPropertyOperations.GetProperty(objVer, accountPDId).Value; var userId = accountTV.GetLookupID(); var contact = new MfContact { UserId = userId, InternalId = objVer.ID, RoleAlias = classAlias.PropDict["PropProjectRole"] }; var roleId = MfAlias.GetPropDef(mfVault, contact.RoleAlias);//mfVault.UserGroupOperations.GetUserGroupIDByAlias(contact.RoleAlias); contact.RoleName = mfVault.ObjectPropertyOperations.GetProperty(objVer, roleId).GetValueAsLocalizedText(); if (!String.IsNullOrEmpty(objAlias.Owner)) { var partTypeId = MfAlias.GetObjType(mfVault, objAlias.Owner); var partType = mfVault.ObjectTypeOperations.GetObjectType(partTypeId); var partOwnerPropId = partType.OwnerPropertyDef; var partyTV = mfVault.ObjectPropertyOperations.GetProperty(objVer, partOwnerPropId).Value; contact.PartName = partyTV.DisplayValue; } return(contact); }
private bool IsValid(Vault vault) { if (vault == null) { return(false); } var typeId = MfAlias.GetObjType(vault, "ObjBudgetHours", false); return(typeId != -1); }
//获取总工时 private double GetBudgetTotalHours(Vault vault) { var typeId = MfAlias.GetObjType(vault, "ObjBudgetHours"); var classId = MfAlias.GetObjectClass(vault, "ClassTotalBudgetHours"); var objVns = MFSearchConditionUtils.SearchObjectsByClass(vault, typeId, classId); if (objVns.Count > 0) { var propIdTotalHours = MfAlias.GetPropDef(vault, "PropTotalBudgetHours"); return(vault.ObjectPropertyOperations.GetProperty(objVns[1].ObjVer, propIdTotalHours).Value.Value); } return(0.0); }
/// <summary> /// 获取楼层:parentId为父对象单体 ID /// </summary> public static IEnumerable <ObjInfo> GetFloors(Vault vault, int parentId) { var typeId = MfAlias.GetObjType(vault, "ObjFloor"); var parentTypeId = MfAlias.GetObjType(vault, "ObjModelUnit"); var floors = SearchObjsByParent(vault, typeId, parentTypeId, parentId, 2); foreach (ObjInfo o in floors) { o.Model = SearchModel(vault, o); } return(floors); }
/// <summary> /// 获取专业:parentId为父对象楼层 ID /// </summary> public static IEnumerable <ObjInfo> GetDisciplines(Vault vault, int parentId) { var typeId = MfAlias.GetObjType(vault, "ObjModelDiscipline"); var parentTypeId = MfAlias.GetObjType(vault, "ObjFloor"); var majors = SearchObjsByParent(vault, typeId, parentTypeId, parentId, 3); foreach (ObjInfo o in majors) { o.Model = SearchModel(vault, o); } return(majors); }
internal static MfContact GetContactByUserId(Vault mfVault, MetadataAliases aliases, int userId) { var objAlias = aliases.Objects["ObjContacts"]; var classAlias = objAlias.ClassDict["ClassContacts"]; var typeId = MfAlias.GetObjType(mfVault, objAlias.Alias); var classId = MfAlias.GetObjectClass(mfVault, classAlias.Alias); var scs = new SearchConditions(); MFSearchConditionUtils.AddBaseConditions(scs, typeId, classId); var userPropId = MfAlias.GetPropDef(mfVault, classAlias.PropDict["PropAccount"]); scs.Add(-1, MFSearchConditionUtils.Property(MFConditionType.MFConditionTypeEqual, userPropId, MFDataType.MFDatatypeLookup, userId)); var res = mfVault.ObjectSearchOperations.SearchForObjectsByConditions(scs, MFSearchFlags.MFSearchFlagNone, false); if (res.Count != 1) { return(null); } var obj = res[1]; var contact = new MfContact { UserId = userId, InternalId = obj.ObjVer.ID, RoleAlias = classAlias.PropDict["PropProjectRole"] }; var roleId = MfAlias.GetPropDef(mfVault, contact.RoleAlias);//mfVault.UserGroupOperations.GetUserGroupIDByAlias(contact.RoleAlias); contact.RoleName = mfVault.ObjectPropertyOperations.GetProperty(obj.ObjVer, roleId).GetValueAsLocalizedText(); if (!String.IsNullOrEmpty(objAlias.Owner)) { var partTypeId = MfAlias.GetObjType(mfVault, objAlias.Owner); var partType = mfVault.ObjectTypeOperations.GetObjectType(partTypeId); var partOwnerPropId = partType.OwnerPropertyDef; var partyTV = mfVault.ObjectPropertyOperations.GetProperty(obj.ObjVer, partOwnerPropId).Value; contact.PartName = partyTV.DisplayValue; } return(contact); }
private static Model SearchModel(Vault vault, ObjInfo owner) { int classIdModel = MfAlias.GetObjectClass(vault, "ClassBimModelDoc"); int propIdUnit = MfAlias.GetPropDef(vault, "PropModelUnitAt"); int propIdFloor = MfAlias.GetPropDef(vault, "PropFloorAt"); int propIdMajor = MfAlias.GetPropDef(vault, "PropDisciplineAt"); var sConditons = new SearchConditions(); var scClass = new SearchCondition(); scClass.ConditionType = MFConditionType.MFConditionTypeEqual; scClass.Expression.DataPropertyValuePropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefClass; scClass.TypedValue.SetValue(MFDataType.MFDatatypeLookup, classIdModel); sConditons.Add(-1, scClass); if (owner.Level == 1) { sConditons.Add(-1, LookupProperty(propIdUnit, owner.ID)); sConditons.Add(-1, LookupProperty(propIdFloor, 0)); } else if (owner.Level == 2) { sConditons.Add(-1, LookupProperty(propIdFloor, owner.ID)); sConditons.Add(-1, LookupProperty(propIdMajor, 0)); } else if (owner.Level == 3) { sConditons.Add(-1, LookupProperty(propIdMajor, owner.ID)); } else { return(null); } //所在... var objVns = SearchObjects(vault, 0, sConditons); if (objVns.Count == 0) { return(null); } var objVn = objVns[1]; return(new Model { ID = objVn.ObjVer.ID, Type = objVn.ObjVer.Type, Title = objVn.Title }); }
//获取项目成员 private IEnumerable <Member> GetProjectMembers(Vault vault) { var typeId = MfAlias.GetObjType(vault, "ObjContacts"); var objVns = MFSearchConditionUtils.SearchObjectsByType(vault, typeId); var propIdAccount = MfAlias.GetPropDef(vault, "PropAccount"); return((from ObjectVersion o in objVns let userId = vault.ObjectPropertyOperations.GetProperty(o.ObjVer, propIdAccount).Value.GetLookupID() select new Member { ID = o.ObjVer.ID, Name = o.Title, UserId = userId }).ToList()); }
internal static void Create(Vault vault, MFObject obj) { // Writelog(string.Format("--11--{0},{1},{2}",obj.Id,obj.Properties.Count,obj)); var objType = MfAlias.GetObjType(vault, obj.ObjDef.TypeAlias); // Writelog("--22--"); var objClass = MfAlias.GetObjectClass(vault, obj.ObjDef.ClassAlias); // Writelog("--33--"); var pvs = new PropertyValues(); var classPV = MFPropertyUtils.Class(objClass); pvs.Add(-1, classPV); // Writelog("--44--"); SetProperties(vault, pvs, obj); var isSingleFile = false; // Writelog("--55--"); SourceObjectFiles files = null; if (obj.Filepaths != null && obj.Filepaths.Count > 0) { files = new SourceObjectFiles(); //todo if (obj.Filepaths.Count == 1) { isSingleFile = true; } // Writelog("--66--"); } var singleFilePV = MFPropertyUtils.SingleFile(isSingleFile); pvs.Add(-1, singleFilePV); // Writelog("--77--"); try { var objVersion = vault.ObjectOperations.CreateNewObject(objType, pvs, files); // Writelog("--88--"); var newObjVersion = vault.ObjectOperations.CheckIn(objVersion.ObjVer); obj.Id = newObjVersion.ObjVer.ID; } catch (Exception ex) { Log.Error(string.Format("CreateNewObject error:{0},{1},{2}", objType, pvs.Count, ex.Message)); } }
/// <summary> /// 通过库获取当前登录用户的用户名和Email /// </summary> /// <param name="vault"></param> /// <param name="name"></param> /// <param name="email"></param> public static void GetNameAndEmailFromVault(Vault vault, ref string name, ref string email) { try { //获取登录用户ID var userId = vault.SessionInfo.UserID; //通过用户ID搜索邮件联系人 var oSearchCondition = new SearchCondition(); oSearchCondition.ConditionType = MFConditionType.MFConditionTypeEqual; oSearchCondition.Expression.DataPropertyValuePropertyDef = vault.PropertyDefOperations.GetPropertyDefIDByAlias("PropInnerUser"); oSearchCondition.TypedValue.SetValue(MFDataType.MFDatatypeLookup, userId); var result = vault.ObjectSearchOperations.SearchForObjectsByCondition(oSearchCondition, false); if (result.Count > 0) { //获取邮件联系人的“姓名”和“邮箱” var properties = vault.ObjectPropertyOperations.GetProperties(result[1].ObjVer); if (properties == null || properties.Count == 0) { return; } foreach (PropertyValue item in properties) { if (item.PropertyDef == MfAlias.GetPropDef(vault, "PropLinkmanName")) { name = item.TypedValue.DisplayValue; } if (item.PropertyDef == MfAlias.GetPropDef(vault, "PropEmail")) { email = item.TypedValue.DisplayValue; } } } else { //创建“邮箱设置”时会自动创建“邮箱联系人” } } catch (Exception ex) { Logger.Log.ErrorFormat("exception. get username or email from mfiles error: {0}", ex.Message); } }
/// <summary> /// 获取单体 /// </summary> public static IEnumerable <ObjInfo> GetUnits(Vault vault) { var typeId = MfAlias.GetObjType(vault, "ObjModelUnit"); var objs = SearchObjectsByType(vault, typeId); var res = new List <ObjInfo>(); for (var i = 1; i <= objs.Count; i++) { var obj = objs[i]; res.Add(ToObjInfo(obj, 1)); } var units = (from ObjInfo o in res orderby o.ID select o).ToList(); foreach (ObjInfo o in units) { o.Model = SearchModel(vault, o); } return(units); }
//获取工时日志 internal IList <HourLog> GetHourLogs(Vault vault, DateTime?startDate, DateTime?endDate) { var typeId = MfAlias.GetObjType(vault, "ObjJobLog"); var propIdLogDate = MfAlias.GetPropDef(vault, "PropJobDate"); var scs = new SearchConditions(); if (startDate != null) { var sdCondition = new SearchCondition(); sdCondition.ConditionType = MFConditionType.MFConditionTypeGreaterThanOrEqual; sdCondition.Expression.DataPropertyValuePropertyDef = propIdLogDate; sdCondition.TypedValue.SetValue(MFDataType.MFDatatypeDate, startDate.Value); scs.Add(-1, sdCondition); } if (endDate != null) { var edCondition = new SearchCondition(); edCondition.ConditionType = MFConditionType.MFConditionTypeLessThanOrEqual; edCondition.Expression.DataPropertyValuePropertyDef = propIdLogDate; edCondition.TypedValue.SetValue(MFDataType.MFDatatypeDate, endDate.Value); scs.Add(-1, edCondition); } var objVns = MFSearchConditionUtils.SearchObjects(vault, typeId, null, scs); var res = new List <HourLog>(); var guid = vault.GetGUID(); foreach (ObjectVersion o in objVns) { int userId = vault.ObjectPropertyOperations.GetProperty(o.ObjVer, 25).Value.GetLookupID(); var titleArr = o.Title.Split(new [] { '_' }); DateTime logDate = String2Date(titleArr[1]).GetValueOrDefault(); var log = new HourLog { MemberName = titleArr[0], LogDate = logDate, LogHours = double.Parse(titleArr[2]), VaultGuid = guid, UserID = userId }; res.Add(log); } return(res); }
internal static int GetPartyId(this MetadataAliases aliases, Vault vault, string partyName) { var typeId = MfAlias.GetObjType(vault, aliases.Objects["ObjParticipant"].Alias); var scs = new SearchConditions(); scs.Add(-1, MFSearchConditionUtils.ObjType(typeId)); scs.Add(-1, MFSearchConditionUtils.Deleted(false)); var res = vault.ObjectSearchOperations.SearchForObjectsByConditions(scs, MFSearchFlags.MFSearchFlagNone, false); foreach (ObjectVersion ov in res) { if (ov.Title == partyName) { return(ov.ObjVer.ID); } } return(-1); }
/// <summary> /// 解析:发送邮件信息 /// </summary> private static void SendMailInfo(Vault vault, Linkman lnkman, PropertyValues oProperties) { if (oProperties == null || oProperties.Count == 0) { return; } var propMailReceiver = MfAlias.GetPropDef(vault, "PropMailReceiver", true); //收件人 var propMailCc = MfAlias.GetPropDef(vault, "PropMailCc", true); //抄送 foreach (PropertyValue item in oProperties) { if (item.PropertyDef == propMailReceiver) { lnkman.Mail = item.TypedValue.DisplayValue; } if (item.PropertyDef == propMailCc) { lnkman.Cc = item.TypedValue.DisplayValue; } } }
private static void SetProperties(Vault vault, PropertyValues pvs, MFObject obj) { foreach (var key in obj.Properties.Keys) { var value = obj.Properties[key]; try { //if (!obj.ObjDef.Properties.ContainsKey(key)) //{ //} var propId = MfAlias.GetPropDef(vault, obj.ObjDef.Properties[key]); var pv = MFPropertyUtils.Create(vault, propId, value); pvs.Add(-1, pv); } catch (Exception ex) { Log.Error("创建MF对象失败:" + ex.Message, ex); throw; } } }
private static int GetContactAccount(Vault vault, MetadataAliases aliases, int contactId) { var objId = new ObjID(); var objAlias = aliases.Objects["ObjContacts"]; var objType = MfAlias.GetObjType(vault, objAlias.Alias); var classAlias = objAlias.ClassDict["ClassContacts"]; //PropAccount objId.SetIDs(objType, contactId); var objVer = vault.ObjectOperations.GetLatestObjVer(objId, false); var propId = MfAlias.GetPropDef(vault, classAlias.PropDict["PropAccount"]); try { var tv = vault.ObjectPropertyOperations.GetProperty(objVer, propId).Value; return(tv.GetLookupID()); } catch (Exception ex) { var err = "获取登录账户失败: " + objType + " # " + contactId + " # " + ex.Message; Log.Error(err, ex); throw; } }
internal static void Update(Vault vault, MFObject obj) { var objType = MfAlias.GetObjType(vault, obj.ObjDef.TypeAlias); var pvs = new PropertyValues(); SetProperties(vault, pvs, obj); ObjID objID = null; if (obj.Id <= 0) { var objClass = MfAlias.GetObjectClass(vault, obj.ObjDef.ClassAlias); objID = SearchObjectByClass(vault, objType, objClass); //new ObjID(); //objID.SetIDs(objType, obj.Id); } else { objID = SearchObjectByObjId(vault, objType, obj.Id); } var objVersion = vault.ObjectOperations.CheckOut(objID); var newobjVersion = vault.ObjectPropertyOperations.SetProperties(objVersion.ObjVer, pvs); vault.ObjectOperations.CheckIn(newobjVersion.ObjVer); }
//获取项目起止日期 private ProjectDate GetProjectDate(Vault vault) { var typeId = MfAlias.GetObjType(vault, "ObjProject"); var objVns = MFSearchConditionUtils.SearchObjectsByType(vault, typeId); if (objVns.Count == 0) { throw new NoNullAllowedException(vault.Name + "无对象项目"); } var projDate = new ProjectDate { ProjName = objVns[1].Title }; var propIdBeginDate = MfAlias.GetPropDef(vault, "PropStartDate"); var propIdEndDate = MfAlias.GetPropDef(vault, "42"); var tValue1 = vault.ObjectPropertyOperations.GetProperty(objVns[1].ObjVer, propIdBeginDate).Value; projDate.BeginDate = tValue1.DisplayValue; var tValue2 = vault.ObjectPropertyOperations.GetProperty(objVns[1].ObjVer, propIdEndDate).Value; projDate.Deadline = tValue2.DisplayValue; return(projDate); }
public static IEnumerable <Qa> GetQaList(Vault vault, string classAlias, string state) { var res = new List <Qa>(); int classId = MfAlias.GetObjectClass(vault, classAlias); int pIdVerdic = MfAlias.GetPropDef(vault, "PropRectificationConclusion", false); //整改意见 int pIdVerdic2 = MfAlias.GetPropDef(vault, "PropVerdicQ", false); //整改意见-质量整改通知单 int pIdFeedback = MfAlias.GetPropDef(vault, "PropFeedback", false); //反馈意见 int pIdViewPort = MfAlias.GetPropDef(vault, "PropViewPortParams", false); //模型视口参数 int partClass = MfAlias.GetObjectClass(vault, "ClassPart"); //int pId = MfAlias.GetPropDef(vault, "PropID"); int pIfcId = MfAlias.GetPropDef(vault, "PropIfcId"); int pModel = MfAlias.GetPropDef(vault, "PropOwnedModel"); var objVns = SearchObjectsByClass(vault, classId); foreach (ObjectVersion o in objVns) { var partVns = GetRelativeParts(vault, o.ObjVer, partClass).ToList(); if (partVns.Count == 0) { continue; } var qa = new Qa(); var qaProps = vault.ObjectPropertyOperations.GetProperties(o.ObjVer); if (qaProps.IndexOf(pIdVerdic) != -1) { qa.Verdict = qaProps.SearchForProperty(pIdVerdic).Value.DisplayValue; } if (qaProps.IndexOf(pIdVerdic2) != -1) { qa.Verdict = qaProps.SearchForProperty(pIdVerdic2).Value.DisplayValue; } if (qaProps.IndexOf(pIdFeedback) != -1) { qa.Verdict = qaProps.SearchForProperty(pIdFeedback).Value.DisplayValue; } if (qaProps.IndexOf(39) != -1) { qa.FlowState = qaProps.SearchForProperty(39).Value.DisplayValue; } if (qaProps.IndexOf(pIdViewPort) != -1) { qa.ViewPort = qaProps.SearchForProperty(pIdViewPort).Value.DisplayValue; } qa.ID = o.ObjVer.ID; qa.Type = o.ObjVer.Type; qa.Title = o.Title; qa.Url = vault.ObjectOperations.GetMFilesURLForObjectOrFile(o.ObjVer.ObjID, -1, false, -1, MFilesURLType.MFilesURLTypeShow); var parts = new List <Part>(); //构件详情 foreach (ObjectVersion p in partVns) { var ptProps = vault.ObjectPropertyOperations.GetProperties(p.ObjVer); var pt = new Part { Title = p.Title }; //pt.Id = ptProps.SearchForProperty(pId).Value.DisplayValue; pt.IfcId = ptProps.SearchForProperty(pIfcId).Value.DisplayValue; var mTvalue = ptProps.SearchForProperty(pModel).Value; if (!mTvalue.IsNULL()) { var mLookup = mTvalue.GetValueAsLookup(); if (!mLookup.Deleted && !mLookup.Hidden) { pt.Model = new Model() { ID = mLookup.Item, Type = mLookup.ObjectType, Title = mLookup.DisplayValue }; } } parts.Add(pt); } qa.Parts = parts; res.Add(qa); } return(res); }
public ActionResult WorkFlow(string vaultGuid, string classAlias, string id, string viewPort) { try { var serv = _mFilesVaultService.GetServer(); var app = MFServerUtility.ConnectToServer(serv); if (String.IsNullOrEmpty(classAlias)) { classAlias = "ClassSecureNotice1"; } var guidstring = vaultGuid; if (!guidstring.StartsWith("{")) { guidstring = "{" + guidstring; } if (!guidstring.EndsWith("}")) { guidstring += "}"; } var vault = app.LogInToVault(guidstring); var workflowClassId = vault.ClassOperations.GetObjectClassIDByAlias(classAlias); var workflowClass = vault.ClassOperations.GetObjectClass(workflowClassId); var workflowObjType = workflowClass.ObjectType; int?template = GetTemplate(vault, workflowClassId); var objPart = vault.GetMetadataStructureItemIDByAlias(MFMetadataStructureItem.MFMetadataStructureItemObjectType, MfilesAliasConfig.ObjPart); var propIfcId = vault.GetMetadataStructureItemIDByAlias(MFMetadataStructureItem.MFMetadataStructureItemPropertyDef, MfilesAliasConfig.PropIfcId); var objPartType = vault.ObjectTypeOperations.GetObjectType(objPart); var objPartsDef = objPartType.DefaultPropertyDef; var parts = new List <int>(); var pp = id.Split(new[] { ',' }); foreach (var p in pp) { var partId = GetPartId(vault, objPart, propIfcId, p); if (partId != null) { parts.Add(partId.Value); } } int pIdViewPort = MfAlias.GetPropDef(vault, "PropViewPortParams"); //模型视口参数 vault.LogOutSilent(); app.Disconnect(); if (parts.Count == 0) { return(Json(new Dictionary <string, string> { { "status", "500" }, { "message", string.Format("在vault-{0}中没有找到ifcguid={1}的构件", vaultGuid, id) } }, JsonRequestBehavior.AllowGet)); } var propValues = new Dictionary <string, string>(); propValues.Add(objPartsDef.ToString(), String.Join(",", parts)); propValues.Add(pIdViewPort.ToString(), viewPort);//test var url = _mfvaultService.CreateObjectUrl(vaultGuid, workflowObjType, workflowClassId, propValues, template); return(Json("OK-" + url, JsonRequestBehavior.AllowGet)); } catch (Exception ex) { Log.Error(string.Format("{0},{1},{2}", vaultGuid, id, ex.Message), ex); return(Json(new Dictionary <string, string> { { "status", "500" }, { "message", string.Format("{0},{1},{2}", vaultGuid, id, ex.Message) } }, JsonRequestBehavior.AllowGet)); } //var retjs = new Dictionary<string, string> //{ // {"status", "500"}, // {"message", string.Format("在vault-{0}中没有找到ifcguid={1}的构件", vaultGuid, id)} //}; //return Json(retjs, JsonRequestBehavior.AllowGet); }
/// <summary> /// 获取对象的属性值 /// </summary> /// <param name="vault">库</param> /// <param name="config">返回的对象</param> /// <param name="oProperties">对象属性</param> private static void SetMailConfigItem(Vault vault, MailConfig config, PropertyValues oProperties) { if (oProperties == null || oProperties.Count == 0) { return; } foreach (PropertyValue item in oProperties) { if (item.PropertyDef == MfAlias.GetPropDef(vault, "PropMailFullname", true)) { config.UserName = item.TypedValue.DisplayValue; } else if (item.PropertyDef == MfAlias.GetPropDef(vault, "PropMailBox", true)) { config.Email = item.TypedValue.DisplayValue; } else if (item.PropertyDef == MfAlias.GetPropDef(vault, "PropPassword", true)) { //密码解密 var pwd = Convert.FromBase64String(item.TypedValue.DisplayValue); config.PassWord = Encoding.Default.GetString(pwd); } else if (item.PropertyDef == MfAlias.GetPropDef(vault, "PropMailPop", true)) { config.RecvAddr = item.TypedValue.DisplayValue; } else if (item.PropertyDef == MfAlias.GetPropDef(vault, "PropMailSmtp", true)) { config.SendAddr = item.TypedValue.DisplayValue; } else if (item.PropertyDef == MfAlias.GetPropDef(vault, "PropMailPopPort", true)) { if (String.IsNullOrEmpty(item.TypedValue.DisplayValue)) { config.RecvPort = MailConfig.PopDefPort; } else { config.RecvPort = Convert.ToInt32(item.TypedValue.DisplayValue); } } else if (item.PropertyDef == MfAlias.GetPropDef(vault, "PropMailSmtpPort", true)) { if (String.IsNullOrEmpty(item.TypedValue.DisplayValue)) { config.SendPort = MailConfig.SmtpDefPort; } else { config.SendPort = Convert.ToInt32(item.TypedValue.DisplayValue); } } else if (item.PropertyDef == MfAlias.GetPropDef(vault, "PropSSLReceive", true)) { try { config.RecvSSL = Convert.ToBoolean(item.TypedValue.Value); } catch (Exception) { config.RecvSSL = false; } } else if (item.PropertyDef == MfAlias.GetPropDef(vault, "PropSSLSend", true)) { try { config.SendSSL = Convert.ToBoolean(item.TypedValue.Value); } catch (Exception) { config.SendSSL = false; } } else if (item.PropertyDef == MfAlias.GetPropDef(vault, "PropMailContains", true)) { config.MarkUp = item.TypedValue.DisplayValue; } else if (item.PropertyDef == MfAlias.GetPropDef(vault, "PropSignature", true)) { config.Signature = item.TypedValue.DisplayValue; } } }
public static MFObject GetMfContact(this MetadataAliases aliases, Vault vault, MfContact contact) { var user = contact.User; var loginAccount = contact.Id; var od = GetMfObjDef(aliases, "ObjContacts", "ClassContacts"); var obj = new MFObject(od) { Id = contact.InternalId }; var contactClass = aliases.Objects["ObjContacts"].ClassDict["ClassContacts"]; if (loginAccount > 0) { obj.Properties.Add(contactClass.PropDict["PropAccount"], loginAccount); } if (!String.IsNullOrEmpty(contact.RoleAlias)) { var roleId = MfAlias.GetUsergroup(vault, contact.RoleAlias); obj.Properties.Add(contactClass.PropDict["PropProjectRole"], roleId); } if (user != null) //contactClass.PropDict[ { var name = String.IsNullOrEmpty(user.FullName) ? user.UserName : user.FullName; obj.Properties.Add("PropLinkmanName", name); obj.Properties.Add("PropTelPhone", user.Phone ?? ""); obj.Properties.Add("PropEmail", user.Email); if (contactClass.PropDict.ContainsKey("PropQQ")) { obj.Properties.Add("PropQQ", user.QQ ?? ""); } if (contactClass.PropDict.ContainsKey("PropUnit")) { var company = String.Empty; if (user.Company != null) { company = user.Company.Name; } obj.Properties.Add("PropUnit", company); } if (contactClass.PropDict.ContainsKey("PropDepartment")) { var department = String.Empty; if (user.Department != null) { department = user.Department.Name; } obj.Properties.Add("PropDepartment", department); } if (contactClass.PropDict.ContainsKey("PropPosition")) { obj.Properties.Add("PropPosition", user.Post ?? ""); } if (contactClass.PropDict.ContainsKey("PropRemarks")) { obj.Properties.Add("PropRemarks", user.Description); } } if (contactClass.PropDict.ContainsKey("PropUserStatus")) { obj.Properties.Add("PropUserStatus", contact.Disabled); } if (contactClass.PropDict.ContainsKey("PropIsProjCreator")) { obj.Properties.Add("PropIsProjCreator", contact.IsCreator); } if (!String.IsNullOrEmpty(contact.PartName)) { var ownerAlias = aliases.Objects["ObjContacts"].Owner; if (ownerAlias != null) { var objTypeId = MfAlias.GetObjType(vault, ownerAlias); var objType = vault.ObjectTypeOperations.GetObjectType(objTypeId); var pwnerPropertyId = objType.OwnerPropertyDef; //所属属性 obj.Properties.Add(pwnerPropertyId.ToString(), GetPartyId(aliases, vault, contact.PartName)); od.Properties.Add(pwnerPropertyId.ToString(), pwnerPropertyId.ToString()); } } return(obj); }
/// <summary> /// 对象类别 /// </summary> /// <param name="vault"></param> /// <param name="aliasOrId"></param> /// <param name="throwOnError"></param> /// <returns></returns> private static int GetObjectClass(Vault vault, string aliasOrId, bool throwOnError = true) { var ma = new MfAlias(aliasOrId); return(ma.GetObjectClass(vault, throwOnError)); }
public MFProjectParty GetParty(MFilesVault vault, string partyName, MetadataAliases aliases, int?currentUserId = null) { var mfVault = MFServerUtility.GetVault(vault); var partyObj = aliases.Objects["ObjParticipant"]; var partyClass = partyObj.ClassDict["ClassParticipant"]; var typeId = MfAlias.GetObjType(mfVault, partyObj.Alias); var classId = MfAlias.GetObjectClass(mfVault, partyClass.Alias); var scs = new SearchConditions(); MFSearchConditionUtils.AddBaseConditions(scs, typeId, classId); var namePropId = MfAlias.GetPropDef(mfVault, partyClass.PropDict["PropParticipantName"]); var nameSC = MFSearchConditionUtils.Property(MFConditionType.MFConditionTypeEqual, namePropId, MFDataType.MFDatatypeText, partyName); scs.Add(-1, nameSC); var res = mfVault.ObjectSearchOperations.SearchForObjectsByConditions(scs, MFSearchFlags.MFSearchFlagNone, false); if (res.Count != 1) { return(null); } var party = new MFProjectParty { Name = partyName }; var obj = res[1]; party.InternalId = obj.ObjVer.ID; var managerPropId = MfAlias.GetPropDef(mfVault, partyClass.PropDict["PropProjPM"]); var managerTV = mfVault.ObjectPropertyOperations.GetProperty(obj.ObjVer, managerPropId).Value; if (!managerTV.IsNULL() && !managerTV.IsUninitialized()) { party.ManagerCount = 1; var contactId = managerTV.GetLookupID(); var userId = GetContactAccount(mfVault, aliases, contactId); if (currentUserId != null && userId == currentUserId.Value) { party.IsCurrentManager = true; } } var vmPropId = MfAlias.GetPropDef(mfVault, partyClass.PropDict["PropProjVicePMs"]); var vmTV = mfVault.ObjectPropertyOperations.GetProperty(obj.ObjVer, vmPropId).Value; if (!vmTV.IsNULL() && !vmTV.IsUninitialized()) { var lkps = vmTV.GetValueAsLookups(); party.ViceManagerCount = lkps.Count; if (currentUserId != null && !party.IsCurrentManager) { for (var i = 1; i <= lkps.Count; i++) { var contactId = lkps[i].Item; var userId = GetContactAccount(mfVault, aliases, contactId); if (userId == currentUserId.Value) { party.IsCurrentViceManager = true; break; } } } } var mmPropId = MfAlias.GetPropDef(mfVault, partyClass.PropDict["PropMembers"]); var mmTV = mfVault.ObjectPropertyOperations.GetProperty(obj.ObjVer, mmPropId).Value; if (!mmTV.IsNULL() && !mmTV.IsUninitialized()) { var lkps = mmTV.GetValueAsLookups(); party.MemberCount = lkps.Count; if (currentUserId != null && !party.IsCurrentViceManager && !party.IsCurrentManager) { for (var i = 1; i <= lkps.Count; i++) { var contactId = lkps[i].Item; var userId = GetContactAccount(mfVault, aliases, contactId); if (userId == currentUserId.Value) { party.IsCurrentMember = true; break; } } } } return(party); }