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}")); } }
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); }
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); }
//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()); }
public Task <GroupMembers> GetGroupMembersAsync(ConnectorCredential credential, EmailAccount emailAccount, Group group, GroupMemberRequest request, CancellationToken cancellationToken) { return(this.connector.GetGroupMembersAsync(credential, emailAccount, group, request, cancellationToken)); }