private static Participant Simplify(IUserMailbox participant)
 {
     return(new Participant()
     {
         Name = participant.Owner.GetShortName(),
         Email = participant.EmailLogin,
         User = participant.Owner.Id
     });
 }
Example #2
0
        private static void FillParticipants(IUserMailbox userMailbox, IMessagePart emailMessage, IEmailMessage message)
        {
            var participants = EmailMessageParticipants(userMailbox, emailMessage, message);

            var toParticipants =
                participants
                .Where(c =>
                       emailMessage.To.Any(e => e.Email == c.EmailString)).ToList();

            message.To.AddAll(toParticipants);

            var fromParticipants =
                participants
                .Where(c =>
                       emailMessage.From.Any(e => e.Email == c.EmailString)).ToList();

            message.From.AddAll(fromParticipants);
        }
Example #3
0
        private static List <IEmailMessageParticipant> EmailMessageParticipants(IUserMailbox userMailbox, IMessagePart emailMessage, IEmailMessage message)
        {
            var contactSummaries = emailMessage.From.ToList();

            contactSummaries.AddRange(emailMessage.To);
            var emailList = contactSummaries.Select(c => c.Email).ToList();

            var emailMessageParticipantManager = EmailMessageParticipantManager.Instance;
            var participants = emailMessageParticipantManager.GetParticipants(emailList).ToList();

            var notExistingParticipants =
                contactSummaries
                .Where(c =>
                       participants.All(e => e.EmailString != c.Email)).ToList();

            if (notExistingParticipants.Any())
            {
                var securityService = Locator.GetServiceNotNull <ISecurityService>();
                securityService.RunByUser(userMailbox.Owner, () =>
                {
                    var newParticipants = emailMessageParticipantManager.CreateParticipants(notExistingParticipants);
                    participants.AddRange(newParticipants);
                });
            }
            var existContactParticipants = participants
                                           .Where(c => c.TypeUid == InterfaceActivator.UID <IEmailMessageParticipantContact>())
                                           .Select(c => c.CastAsRealType() is IEmailMessageParticipantContact participantContact
                    ? participantContact
                    : null)
                                           .Where(c => c != null).ToList();

            var contacts =
                existContactParticipants.Select(c => c.Contact)
                .Where(c => c != null).ToList();
            var contractors =
                contacts.Select(c => c.Contractor)
                .Where(c => c != null).ToList();

            message.Contacts.AddAll(contacts);
            message.Contractors.AddAll(contractors);

            return(participants);
        }