示例#1
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);
        }
示例#2
0
        internal static void Create <T>(Vault vault, MetadataAliases aliases, T entity) where T : InternalEntity
        {
            var projObj = GetMFObject(vault, aliases, entity);

            Create(vault, projObj);
            entity.InternalId = projObj.Id;
        }
示例#3
0
        public void Create <T>(MFilesVault vault, MetadataAliases aliases, T entity) where T : InternalEntity
        {
            // Writelog("in mfs.mfos.create 11");
            var projObj = GetMFObject(vault, aliases, entity);

            // Writelog("in mfs.mfos.create 22");
            Create(vault, projObj);
            //  Writelog("in mfs.mfos.create 33");
            entity.InternalId = projObj.Id;
        }
示例#4
0
        public MfContact GetContact(MFilesVault vault, MetadataAliases aliases, string userName)
        {
            var mfVault = MFServerUtility.GetVault(vault);
            var userId  = MfUserUtils.GetUserAccount(mfVault, userName);

            if (userId == null)
            {
                return(null);
            }
            var uid = userId.Value; //userid

            return(GetContactByUserId(mfVault, aliases, uid));
        }
示例#5
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);
        }
示例#6
0
 internal static MFObject GetMFObject <T>(Vault mfVault, MetadataAliases aliases, T entity) where T : InternalEntity
 {
     if (entity is Project)
     {
         //var config = VaultConfig.GetConfigFromString(vault.Template.MetadataJson);
         var projObj = aliases.GetMfProject(entity as Project);// config.GetMfProjectObject(entity as Project);
         return(projObj);
     }
     if (entity is MfContact)
     {
         var contactObj = aliases.GetMfContact(mfVault, entity as MfContact);
         return(contactObj);
     }
     return(null);
 }
示例#7
0
        public static MFObjectDef GetMfObjDef(this MetadataAliases aliases, string typeKey, string classKey)
        {
            var od      = new MFObjectDef();
            var contact = aliases.Objects[typeKey];

            od.TypeAlias = contact.Alias;
            var contactClass = contact.ClassDict[classKey];

            od.ClassAlias = contactClass.Alias;
            foreach (var p in contactClass.PropDict)
            {
                od.Properties.Add(p);
            }
            return(od);
        }
示例#8
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);
        }
示例#9
0
        public static MFObject GetMfProject(this MetadataAliases aliases, Project proj)
        {
            var od  = GetMfObjDef(aliases, "ObjProject", "ClassProject");
            var obj = new MFObject(od)
            {
                Id = proj.InternalId
            };
            var projClass = aliases.Objects["ObjProject"].ClassDict["ClassProject"]; //projClass.PropDict[

            obj.Properties.Add("PropProjName", proj.Name);
            obj.Properties.Add("PropDescription", proj.Description);
            obj.Properties.Add("PropStartDate", proj.StartDateUtc);
            obj.Properties.Add("MFBuiltInPropertyDefDeadline", proj.EndDateUtc);
            if (projClass.PropDict.ContainsKey("PropProjNum"))
            {
                obj.Properties.Add("PropProjNum", proj.Number);
            }
            if (projClass.PropDict.ContainsKey("PropProjPhase"))
            {
                obj.Properties.Add("PropProjPhase", proj.StatusId);
            }
            if (projClass.PropDict.ContainsKey("PropProprietorUnit"))
            {
                obj.Properties.Add("PropProprietorUnit", proj.OwnerUnit);
            }
            if (projClass.PropDict.ContainsKey("PropDesignUnit"))
            {
                obj.Properties.Add("PropDesignUnit", proj.DesignUnit);
            }
            if (projClass.PropDict.ContainsKey("PropBuilderUnit"))
            {
                obj.Properties.Add("PropBuilderUnit", proj.ConstructionUnit);
            }
            if (projClass.PropDict.ContainsKey("PropSupervisorUnit"))
            {
                obj.Properties.Add("PropSupervisorUnit", proj.SupervisionUnit);
            }
            //obj.Properties.Add(projClass.PropDict["PropProjName"], proj.Name);

            return(obj);
        }
示例#10
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;
            }
        }
示例#11
0
        public MfContact GetContactByContactId(MFilesVault vault, MetadataAliases aliases, int contactId)
        {
            var mfVault = MFServerUtility.GetVault(vault);

            return(GetContactById(mfVault, aliases, contactId));
        }
示例#12
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);
        }
示例#13
0
 public MFObject GetMFObject(MFilesVault vault, MetadataAliases aliases, InternalEntity entity)
 {
     return(GetMFObject <InternalEntity>(vault, aliases, entity));
 }
示例#14
0
 protected static MFProjectParty GetMfParty(MFilesVault vault, MetadataAliases aliases, string partyName, IMFObjectService mfilesObjService, int?currentUserId = null)
 {
     return(mfilesObjService.GetParty(vault, partyName, aliases, currentUserId));
 }
示例#15
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);
        }
示例#16
0
 protected MfContact GetMfContactByUserId(MFilesVault vault, MetadataAliases aliases, int userId)
 {
     return(_mfilesObjService.GetContactByUserId(vault, aliases, userId));
 }
示例#17
0
        public void Update <T>(MFilesVault vault, MetadataAliases aliases, T entity) where T : InternalEntity
        {
            var obj = GetMFObject(vault, aliases, entity);

            Update(vault, obj);
        }
示例#18
0
 protected static void UpdateMfObj <T>(MFilesVault vault, MetadataAliases aliases, T entity, IMFObjectService mfilesObjService) where T : InternalEntity
 {
     mfilesObjService.Update(vault, aliases, entity);
 }