public GroupMember(TenantId tenantId, string name, GroupMemberType type)
        {
            AssertionConcern.NotNull(tenantId, "The tenantId must be provided.");
            AssertionConcern.NotEmpty(name, "Member name is required.");
            AssertionConcern.Length(name, 1, 100, "Member name must be 100 characters or less.");

            this.TenantId = tenantId;
            this.Name = name;
            this.Type = type;
        }
예제 #2
0
        internal GroupMember(TenantId tenantId, string name, GroupMemberType type)
        {
            AssertionConcern.AssertArgumentNotNull(tenantId, "The tenantId must be provided.");
            AssertionConcern.AssertArgumentNotEmpty(name, "Member name is required.");
            AssertionConcern.AssertArgumentLength(name, 1, 100, "Member name must be 100 characters or less.");

            this.Name     = name;
            this.TenantId = tenantId;
            this.Type     = type;
        }
예제 #3
0
 public void TestGroupMemberType()
 {
     foreach (GroupMemberType groupMemberType in GroupMemberType.Values())
     {
         Assert.IsNotNull(groupMemberType.ToString());
         Assert.IsNotEmpty(groupMemberType.ToString());
     }
     Assert.AreEqual(0, (int)GroupMemberType.REGULAR);
     Assert.AreEqual("MANAGER", (string)GroupMemberType.MANAGER);
     Assert.AreEqual("MANAGER", GroupMemberType.MANAGER.GetName());
 }
예제 #4
0
 /// <summary>
 /// 初始化 <see cref="GroupMember"/> 类的新实例
 /// </summary>
 /// <param name="id">QQ号</param>
 /// <param name="nick">昵称</param>
 /// <param name="sex">性别</param>
 /// <param name="age">年龄</param>
 /// <param name="card">群名片</param>
 /// <param name="area">所在区域</param>
 /// <param name="joinTime">加入时间</param>
 /// <param name="lastSpeakTime">最后发言时间</param>
 /// <param name="level">成员等级</param>
 /// <param name="memberType">成员类型</param>
 /// <param name="exclusiveTitle">专属头衔</param>
 /// <param name="exclusiveTitleExpirationTime">专属头衔过期时间</param>
 /// <param name="isBadRecord">是否为不良群成员</param>
 /// <param name="isAllowEditorCard">是否允许修改群名片</param>
 public GroupMember(long id, string nick, Sex sex, int age, Group group, string card, string area, DateTime joinTime, DateTime lastSpeakTime, string level, GroupMemberType memberType, string exclusiveTitle, DateTime?exclusiveTitleExpirationTime, bool isBadRecord, bool isAllowEditorCard)
     : base(id, nick, sex, age)
 {
     Group          = group ?? throw new ArgumentNullException(nameof(group));
     Card           = card ?? throw new ArgumentNullException(nameof(card));
     Area           = area ?? throw new ArgumentNullException(nameof(area));
     JoinTime       = joinTime;
     LastSpeakTime  = lastSpeakTime;
     Level          = level ?? throw new ArgumentNullException(nameof(level));
     MemberType     = memberType;
     ExclusiveTitle = exclusiveTitle ?? throw new ArgumentNullException(nameof(exclusiveTitle));
     ExclusiveTitleExpirationTime = exclusiveTitleExpirationTime;
     IsBadRecord       = isBadRecord;
     IsAllowEditorCard = isAllowEditorCard;
 }
예제 #5
0
        public bool Unserialize(JsonReader reader)
        {
            while (reader.Read())
            {
                switch (reader.TokenType)
                {
                case JsonToken.PropertyName:
                    if (reader.Value.Equals("type"))
                    {
                        type = (GroupMemberType)JsonTools.getNextInt(reader);
                    }
                    else if (reader.Value.Equals("updateDt"))
                    {
                        updateDt = JsonTools.getNextBigInt(reader);
                    }
                    else if (reader.Value.Equals("groupId"))
                    {
                        groupId = JsonTools.getNextString(reader);
                    }
                    else if (reader.Value.Equals("memberId"))
                    {
                        memberId = JsonTools.getNextString(reader);
                    }
                    else if (reader.Value.Equals("alias"))
                    {
                        alias = JsonTools.getNextString(reader);
                    }
                    else
                    {
                    }
                    break;

                case JsonToken.EndObject:
                    return(true);
                }
            }
            return(false);
        }
        /// <summary>
        /// 生成已指定条件的数据
        /// </summary>
        /// <returns>当前数据池实例</returns>
        public CQPSimulatorDataPool Generate()
        {
            #region --机器人QQ--
            if (this.RobotQQ == null)
            {
                long   qqId = RandomUtility.RandomInt64(QQ.MinValue, 100000000000);
                string nick = RandomUtility.RandomSymbol();
                Sex    sex  = RandomUtility.RandomEnum <Sex> ();
                int    age  = RandomUtility.RandomInt32(0, 131);

                this.RobotQQ = new QQ(qqId, nick, sex, age);
            }
            #endregion

            #region 好友生成
            for (int i = 0; i < this._friendCount; i++)
            {
                long qqId = RandomUtility.RandomInt64(Friend.MinValue, 100000000000);

                if (this.GroupCollection.Count(p => p.Id == qqId) >= 1)
                {
                    i--;
                }
                else
                {
                    string nick       = RandomUtility.RandomSymbol();
                    Sex    sex        = RandomUtility.RandomEnum <Sex> ();
                    int    age        = RandomUtility.RandomInt32(0, 131);
                    string postscript = RandomUtility.RandomElement(RandomUtility.RandomName(), string.Empty);

                    Friend friend = new Friend(qqId, nick, sex, age, postscript);
                    this.QQCollection.Add(friend);
                    this.FriendCollection.Add(friend);
                }
            }
            #endregion

            #region 群生成
            for (int i = 0; i < this._groupCount; i++)
            {
                long groupId = RandomUtility.RandomInt64(Group.MinValue, 10000000000);
                if (this.GroupCollection.Count(p => p.Id == groupId) >= 1)
                {
                    i--;
                }
                else
                {
                    string name               = RandomUtility.RandomGroupName();
                    int    maxMemberCount     = RandomUtility.RandomElement(200, 500, 1000, 2000);                  // 随机获取一个群人数
                    int    currentMemberCount = RandomUtility.RandomInt32(1, maxMemberCount);                       // 随机群人数, 最少1人

                    Group group = new Group(groupId, name, currentMemberCount, maxMemberCount);
                    this.GroupCollection.Add(group);

                    #region 群成员生成
                    string[] levelGroup = RandomUtility.RandomElement(this._groupLevels);                       // 获取一个成员等级名称组

                    for (int j = 0; j <= currentMemberCount; j++)
                    {
                        QQ   qq    = null;
                        bool newQQ = false;

                        if (j == currentMemberCount)
                        {
                            qq = this.RobotQQ;
                        }
                        else
                        {
                            long qqId = RandomUtility.RandomInt64(QQ.MinValue, 100000000000);
                            qq = this.QQCollection.Where(p => p.Id == qqId).FirstOrDefault();
                            if (qq == null)
                            {
                                string nick = RandomUtility.RandomSymbol();
                                Sex    sex  = RandomUtility.RandomEnum <Sex> ();
                                int    age  = RandomUtility.RandomInt32(0, 131);

                                qq    = new QQ(qqId, nick, sex, age);
                                newQQ = true;
                            }
                        }

                        string          card                   = RandomUtility.RandomSymbol();
                        string          area                   = RandomUtility.RandomArea();
                        DateTime        joinTime               = RandomUtility.RandomDateTime(_minValue, DateTime.Now);
                        DateTime        lastSpeakTime          = RandomUtility.RandomDateTime(joinTime, DateTime.Now);
                        string          level                  = RandomUtility.RandomElement(levelGroup);
                        GroupMemberType memberType             = RandomUtility.RandomEnum <GroupMemberType> ();
                        string          exculsiveTitle         = string.Empty;
                        DateTime?       exculsiveTitleDateTime = null;
                        bool            isBadRecord            = RandomUtility.RandomBoolean();
                        bool            isAllowEditorCard      = RandomUtility.RandomBoolean();

                        GroupMember member = new GroupMember(qq.Id, qq.Nick, qq.Sex, qq.Age, group, card, area, joinTime, lastSpeakTime, level, memberType, exculsiveTitle, exculsiveTitleDateTime, isBadRecord, isAllowEditorCard);
                        group.MemberCollection.Add(member);
                        if (newQQ)
                        {
                            this.QQCollection.Add(member);
                        }
                    }
                    #endregion
                }
            }
            #endregion

            #region 讨论组生成
            for (int i = 0; i < this._discussCount; i++)
            {
                long discussId = RandomUtility.RandomInt64(Discuss.MinValue, 10000000000);
                if (this.DiscussCollection.Count(p => p.Id == discussId) >= 1)
                {
                    i--;
                }
                else
                {
                    Discuss discuss = new Discuss(discussId);
                    this.DiscussCollection.Add(discuss);

                    #region 讨论组成员生成
                    int memberCount = RandomUtility.RandomInt32(10, 200);

                    for (int j = 0; j <= memberCount; j++)
                    {
                        QQ   qq    = null;
                        bool newQQ = false;

                        if (j == memberCount)
                        {
                            qq = this.RobotQQ;
                        }
                        else
                        {
                            long qqId = RandomUtility.RandomInt64(QQ.MinValue, 100000000000);
                            qq = this.QQCollection.Where(p => p.Id == qqId).FirstOrDefault();
                            if (qq == null)
                            {
                                string nick = RandomUtility.RandomSymbol();
                                Sex    sex  = RandomUtility.RandomEnum <Sex> ();
                                int    age  = RandomUtility.RandomInt32(0, 131);

                                qq    = new QQ(qqId, nick, sex, age);
                                newQQ = true;
                            }
                        }

                        DiscussMember member = new DiscussMember(qq.Id, qq.Nick, qq.Sex, qq.Age);
                        discuss.MemberCollection.Add(member);
                        if (newQQ)
                        {
                            this.QQCollection.Add(member);
                        }
                    }
                    ;
                    #endregion
                }
            }
            #endregion

            return(this);
        }
예제 #7
0
 internal GroupMember(TenantId tenantId, string name, GroupMemberType type)
 {
     this.Name = name;
     this.TenantId = tenantId;
     this.Type = type;
 }
예제 #8
0
        public GroupMembershipDto GetMembers(ServerDto serverDto, string tenant, GroupDto groupDto, GroupMemberType type, Token token)
        {
            var principalName = Uri.EscapeDataString(groupDto.GroupName + "@" + groupDto.GroupDomain);

            tenant = Uri.EscapeDataString(tenant);
            var url = string.Format(ServiceConfigManager.GetAllMembersOfGroupPostEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenant, principalName, type);

            ServicePointManager.ServerCertificateValidationCallback = delegate { return(true); };
            var requestConfig = new RequestSettings
            {
                Method = HttpMethod.Post,
            };
            var headers  = ServiceHelper.AddHeaders(ServiceConfigManager.JsonContentType);
            var postData = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower();
            var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, postData);

            return(JsonConvert.Deserialize <GroupMembershipDto>(response));
        }
 public GroupMemberTypeConverter( GroupMemberType groupMemberType )
 {
     this.groupMemberType = groupMemberType;
 }
예제 #10
0
 public GroupMemberBuilder AsMemberType( GroupMemberType groupMemberType ) {
     this.groupMemberType = groupMemberType;
     return this;
 }
예제 #11
0
 internal GroupMember(TenantId tenantId, string name, GroupMemberType type)
 {
     this.Name     = name;
     this.TenantId = tenantId;
     this.Type     = type;
 }
예제 #12
0
		public GroupMembershipDto GetMembers(ServerDto serverDto, string tenant, GroupDto groupDto, GroupMemberType type, Token token)
		{
			var principalName = Uri.EscapeDataString(groupDto.GroupName + "@" + groupDto.GroupDomain);
			tenant = Uri.EscapeDataString(tenant);
			var url = string.Format(ServiceConfigManager.GetAllMembersOfGroupPostEndPoint, serverDto.Protocol, serverDto.ServerName, serverDto.Port, tenant, principalName, type);
			ServicePointManager.ServerCertificateValidationCallback = delegate { return true; };
			var requestConfig = new RequestSettings
			{
				Method = HttpMethod.Post,
			};
			var headers = ServiceHelper.AddHeaders(ServiceConfigManager.JsonContentType);
			var postData = "access_token=" + token.AccessToken + "&token_type=" + token.TokenType.ToString().ToLower();
			var response = _webRequestManager.GetResponse(url, requestConfig, headers, null, postData);
			return JsonConvert.Deserialize<GroupMembershipDto>(response);
		}