public IEnumerable <UserMailbox> GetUnseenMembers(GroupMailboxLocator group, IEnumerable <UserMailboxLocator> users) { IEnumerable <UserMailbox> result; using (IAssociationStore associationStore = this.storeProviderBuilder.Create(group, this.PerformanceTracker)) { UnseenDataUserAssociationAdaptor adaptor = new UnseenDataUserAssociationAdaptor(associationStore, this.adSession, group); GetMembershipAssociations getMembershipAssociations = new GetMembershipAssociations(adaptor); IEnumerable <MailboxAssociation> enumerable = getMembershipAssociations.Execute(null); Dictionary <string, MailboxAssociation> dictionary = new Dictionary <string, MailboxAssociation>(enumerable.Count <MailboxAssociation>()); foreach (MailboxAssociation mailboxAssociation in enumerable) { if (string.IsNullOrEmpty(mailboxAssociation.User.ExternalId)) { GroupMailboxAccessLayer.LogWarning(this.Logger, "GetUnseenMembers", string.Format("External Id is null or empty. LegacyDn - {0}", mailboxAssociation.User.LegacyDn)); } else if (dictionary.ContainsKey(mailboxAssociation.User.ExternalId)) { GroupMailboxAccessLayer.LogWarning(this.Logger, "GetUnseenMembers", string.Format("Duplicate External Id. ExternalId - {0}. LegacyDn - {1}", mailboxAssociation.User.ExternalId, mailboxAssociation.User.LegacyDn)); } else { dictionary.Add(mailboxAssociation.User.ExternalId, mailboxAssociation); } } List <UserMailbox> list = new List <UserMailbox>(); foreach (UserMailboxLocator userMailboxLocator in users) { MailboxAssociation association = null; if (!dictionary.TryGetValue(userMailboxLocator.ExternalId, out association)) { association = this.CreateMailboxAssociationWithDefaultValues(userMailboxLocator, group); } UserMailboxBuilder userMailboxBuilder = new UserMailboxBuilder(userMailboxLocator, null); list.Add(userMailboxBuilder.BuildFromAssociation(association).Mailbox); } result = list; } return(result); }
public static void Execute(string operationDescription, IRecipientSession adSession, Guid logCorrelationMailboxGuid, OrganizationId organizationId, string clientInfoString, Action <GroupMailboxAccessLayer> action) { GroupMailboxAccessLayer.InternalExecute(operationDescription, adSession, null, logCorrelationMailboxGuid, organizationId, clientInfoString, action); }
public static void Execute(string operationDescription, IRecipientSession adSession, MailboxSession localStoreSession, Action <GroupMailboxAccessLayer> action) { ArgumentValidator.ThrowIfNull("localStoreSession", localStoreSession); GroupMailboxAccessLayer.InternalExecute(operationDescription, adSession, localStoreSession, localStoreSession.MailboxGuid, localStoreSession.OrganizationId, localStoreSession.ClientInfoString, action); }