예제 #1
0
        public async Task <Model.Group> GetGroupAsync(string account, string groupName, string continuationToken, int count, string trackingId)
        {
            // Get Group
            var group = await this.store.GetGroupAsync(account, groupName);

            Validator.IsTrue <ResourceNotFoundException>(group != null, nameof(group), "Group '{0}' does not exist.", groupName);

            try
            {
                // Get Credential Contract
                var credential = await this.credentialManager.GetConnectorCredentialContractAsync(account);

                // Get EmailAccount
                var emailAccount = await this.store.GetEmailAccountAsync(account);

                // Request to Connector
                var connector = GetEmailEngineAgent(credential, account);
                var request   = new GroupMemberRequest
                {
                    ContinuationToken = continuationToken,
                    Count             = count
                };
                var result = await connector.GetGroupMembersAsync(credential, emailAccount, group.ToContract(), request, CancellationToken.None);

                group.Emails   = result.Emails;
                group.NextLink = result.ContinuationToken;
                return(group);
            }
            catch (Exception ex)
            {
                EmailProviderEventSource.Current.ErrorException(trackingId, this, nameof(this.GetGroupAsync), OperationStates.Failed, $"Failed to get email group for account: {account}", ex);
                throw new ApplicationException(string.Format($"Failed to get email group for account: {account}"));
            }
        }
예제 #2
0
        public bool ValidateRequestToken(string groupId, string email, string code)
        {
            if (code == null)
            {
                return(false);
            }

            GroupMemberRequest requestInfo = _context.GroupMemberRequest.SingleOrDefault(g => g.Code == code);

            //Check if code is exist, and the requested user is current login, and request group is equal the access one
            if (requestInfo == null || requestInfo.ToEmail != email || requestInfo.GroupId != groupId)
            {
                return(false);
            }

            try
            {
                //remove the request, to ensure that will not used again.
                _context.Entry(requestInfo).State = EntityState.Deleted;
                _context.SaveChanges();
            }
            catch
            {
                return(false);
            }

            return(true);
        }
예제 #3
0
        public List <GroupMemberRequest> GenerateEmailConfirmationRequest(string groupId, string fromUserId, List <string> emailList)
        {
            List <GroupMemberRequest> requestList = new List <GroupMemberRequest>();

            foreach (string email in emailList)
            {
                string gId = Guid.NewGuid().ToString();

                GroupMemberRequest newRequest = new GroupMemberRequest()
                {
                    FromId      = fromUserId,
                    GroupId     = groupId,
                    RequestDate = DateTime.Now,
                    ToEmail     = email,
                    Code        = Code.Hash($"{gId}-{groupId}-{fromUserId}-{email}"),
                    Id          = gId
                };


                requestList.Add(newRequest);
            }


            _context.GroupMemberRequest.AddRange(requestList);
            _context.SaveChanges();


            return(requestList);
        }
예제 #4
0
파일: Class1.cs 프로젝트: liuwei0925/myPrj
        //9.2.8	删除群组成员
        public string DeleteGroupMember(QChat_GroupMember qchat)
        {
            QchatQEDService qqs = new QchatQEDService();

            qqs = getQchatQEDService(qchat.username, qchat.password, qchat.deviceID, qchat.urlIp);

            //删除群组成员
            GroupMemberRequest gmr = new GroupMemberRequest();

            gmr.memberSize = qchat.memberSize; // 2;
            gmr.groupCode  = qchat.groupCode;  // "zppaam678685";
            GroupMemberInfo[] groupMemberCollection = new GroupMemberInfo[1];
            GroupMemberInfo   groupmember1          = new GroupMemberInfo();

            groupmember1.number = qchat.number_mem; // "15314604085";
            groupmember1.type   = qchat.type_mem;   // 1;
            groupmember1.name   = qchat.name_mem;   // "testname";
            groupmember1.level  = qchat.lebel;      // 4;

            groupMemberCollection[0] = groupmember1;
            gmr.gMemInfo             = groupMemberCollection;
            QedRequest qedr = new QedRequest();

            qedr.groupMemRequest = gmr;

            StringBuilder sb       = new StringBuilder();
            QedResponse   response = qqs.deleteGroupMember(qedr);

            GroupMemberResponse gresponse = response.groupMemResponse;

            if (gresponse != null && gresponse.response != null)
            {
                sb.AppendLine("Count: " + gresponse.count);
                for (int i = 0; i < gresponse.count; i++)
                {
                    sb.AppendLine("description:" + gresponse.response[i].description);
                    sb.AppendLine("reserve:" + gresponse.response[i].reserve);
                    sb.AppendLine("returnCode: " + gresponse.response[i].returnCode);
                }
            }
            else
            {
                sb.AppendLine("返回信息为null");
            }
            Console.WriteLine(sb);

            //Console.ReadKey();
            return(sb.ToString());
        }
예제 #5
0
 public Task <GroupMembers> GetGroupMembersAsync(ConnectorCredential credential, EmailAccount emailAccount, Group group, GroupMemberRequest request, CancellationToken cancellationToken)
 {
     return(this.connector.GetGroupMembersAsync(credential, emailAccount, group, request, cancellationToken));
 }