Example #1
0
        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);
        }
Example #2
0
        /// <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;
                }
            }
        }
Example #3
0
        public ICollection <string> GetUsersInGroupByAlias(MFilesVault vault, string groupAlias)
        {
            var ovault  = MFServerUtility.GetVault(vault);
            var groupId = MfAlias.GetUsergroup(ovault, groupAlias);

            return(GetUsersInGroup(ovault, groupId));
        }
Example #4
0
        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);
        }
Example #5
0
        private bool IsValid(Vault vault)
        {
            if (vault == null)
            {
                return(false);
            }
            var typeId = MfAlias.GetObjType(vault, "ObjBudgetHours", false);

            return(typeId != -1);
        }
Example #6
0
        //获取总工时
        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);
        }
Example #7
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);
        }
Example #8
0
        /// <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);
        }
Example #9
0
        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);
        }
Example #10
0
        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
            });
        }
Example #11
0
        //获取项目成员
        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());
        }
Example #12
0
        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));
            }
        }
Example #13
0
        /// <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);
            }
        }
Example #14
0
        /// <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);
        }
Example #15
0
        //获取工时日志
        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);
        }
Example #16
0
        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);
        }
Example #17
0
        /// <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;
                }
            }
        }
Example #18
0
        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;
                }
            }
        }
Example #19
0
        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;
            }
        }
Example #20
0
        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);
        }
Example #21
0
        //获取项目起止日期
        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);
        }
Example #22
0
        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);
        }
Example #23
0
        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);
        }
Example #24
0
 /// <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;
         }
     }
 }
Example #25
0
        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);
        }
Example #26
0
        /// <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));
        }
Example #27
0
        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);
        }