Exemplo n.º 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);
        }
Exemplo n.º 2
0
        private static ObjID SearchObjectByClass(Vault vault, int objType, int objClass)
        {
            var scs = new SearchConditions();

            MFSearchConditionUtils.AddBaseConditions(scs, objType, objClass);

            var res = vault.ObjectSearchOperations.SearchForObjectsByConditions(scs, MFSearchFlags.MFSearchFlagNone,
                                                                                false);

            return(res[1].ObjVer.ObjID);
        }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
        private static ObjID SearchObjectByObjId(Vault vault, int objType, int objId)
        {
            var scs    = new SearchConditions();
            var typeSc = MFSearchConditionUtils.ObjType(objType);

            scs.Add(-1, typeSc);
            var idSc = MFSearchConditionUtils.ObjId(objId);

            scs.Add(-1, idSc);
            var res = vault.ObjectSearchOperations.SearchForObjectsByConditions(scs, MFSearchFlags.MFSearchFlagNone,
                                                                                false);

            return(res[1].ObjVer.ObjID);
        }
Exemplo n.º 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);
        }
Exemplo n.º 6
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());
        }
Exemplo n.º 7
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);
        }
Exemplo n.º 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);
        }
Exemplo n.º 9
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);
        }
Exemplo n.º 10
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);
        }