Exemple #1
0
        private void createInquiry(Entities.MailMessage convertedMessage)
        {
            if (convertedMessage.Sender.Role == PersonRole.Client &&
                !repository.Query <Inquiry>(x => x.Source)
                .Select(x => x.Source)
                .Any(convertedMessage.SameMessagePredicate))
            {
                var receiver    = convertedMessage.Receivers.First();
                var ownerPerson = repository.Query <User>(x => x.Teams, x => x.RelatedPerson).FirstOrDefault(x => x.RelatedPerson.Id == receiver.Id);
                if (ownerPerson != null)
                {
                    var inquiry = repository.Query <Inquiry>(x => x.Client, x => x.Owner)
                                  .FirstOrDefault(
                        x =>
                        x.Client.Id == convertedMessage.Sender.Id && x.Owner.Id == ownerPerson.CurrentTeam.Id &&
                        !x.Archived);
                    if (inquiry == null)
                    {
                        var newInquiry = inquiryFactory.CreateInquiry(convertedMessage);

                        newInquiry.Owner = ownerPerson.CurrentTeam;
                        repository.Save(newInquiry);
                    }
                    else
                    {
                        inquiry.ReferenceDate = null;
                        repository.Save(inquiry);
                    }
                }
            }
        }
        /// <summary>
        /// Converts Input.MailMessage to Entities.MailMessage.
        /// If sender or receivers isn't exist then they will be added to repository
        /// If email forwarded then sender will be taken from body <see cref="MailMessageParserThunderbird"/>
        /// </summary>
        /// <param name="mailMessage">Input.MailMessage type of message</param>
        /// <returns>Entities.MailMessage type of message</returns>
        public Entities.MailMessage Convert(MailMessage mailMessage)
        {
            // If mail message is forwarded then Receiver will be person who forward mail and Sender taken from body
            if (isForwardedMailMessage(mailMessage))
            {
                var parser = mailMessageParserFactory.GetMailMessageParser(mailMessage.UserAgent);
                mailMessage.Subject = parser.GetSubject(mailMessage.Subject);
                mailMessage.Receivers = new List<MailAddress>{mailMessage.Sender};
                mailMessage.Sender = parser.GetSender(mailMessage);
                mailMessage.Body = parser.GetBody(mailMessage);
            }

            var returnMessage = new Entities.MailMessage
            {
                Body = mailMessage.Body,
                Date = mailMessage.Date,
                Subject = mailMessage.Subject,
                Receivers = new List<Person>()
            };

            //find a Sender in Repository
            var sender = repository.Query<Person>().FirstOrDefault(x => x.Email == mailMessage.Sender.Address);

            returnMessage.Sender = sender ?? AddNewPersonToRepository(mailMessage.Sender, mailMessage.Date);

            //find Receivers in repository
            foreach (var receiver in mailMessage.Receivers)
            {
                var currentReceiver = repository.Query<Person>().FirstOrDefault(x => x.Email == receiver.Address);

                returnMessage.Receivers.Add(currentReceiver ?? AddNewPersonToRepository(receiver, mailMessage.Date));
            }

            return returnMessage;
        }
Exemple #3
0
 /// <summary>
 /// Creates Inquiry from MailMessage and save it to repository.
 /// </summary>
 /// <param name="message">Source MailMessage for Inquiry</param>
 public Inquiry CreateInquiry(Entities.MailMessage message)
 {
     return(new Inquiry
     {
         Client = message.Sender,
         Description = message.Body,
         Source = message,
         Subject = message.Subject,
         ReferenceDate = null,
     });
 }
Exemple #4
0
        /// <summary>
        /// Converts Input.MailMessage to Entities.MailMessage.
        /// If sender or receivers isn't exist then they will be added to repository
        /// If email forwarded then sender will be taken from body <see cref="MailMessageParserThunderbird"/>
        /// </summary>
        /// <param name="mailMessage">Input.MailMessage type of message</param>
        /// <returns>Entities.MailMessage type of message</returns>
        public Entities.MailMessage Convert(MailMessage mailMessage)
        {
            // If mail message is forwarded then Receiver will be person who forward mail and Sender taken from body
            if (isForwardedMailMessage(mailMessage))
            {
                var parser = mailMessageParserFactory.GetMailMessageParser(mailMessage.UserAgent);
                mailMessage.Subject   = parser.GetSubject(mailMessage.Subject);
                mailMessage.Receivers = new List <MailAddress> {
                    mailMessage.Sender
                };
                mailMessage.Sender = parser.GetSender(mailMessage);
                mailMessage.Body   = parser.GetBody(mailMessage);
            }

            var returnMessage = new Entities.MailMessage
            {
                Body      = mailMessage.Body,
                Date      = mailMessage.Date,
                Subject   = mailMessage.Subject,
                Receivers = new List <Person>()
            };

            //find a Sender in Repository
            var sender = repository.Query <Person>().FirstOrDefault(x => x.Email == mailMessage.Sender.Address);

            returnMessage.Sender = sender ?? AddNewPersonToRepository(mailMessage.Sender, mailMessage.Date);

            //find Receivers in repository
            foreach (var receiver in mailMessage.Receivers)
            {
                var currentReceiver = repository.Query <Person>().FirstOrDefault(x => x.Email == receiver.Address);

                returnMessage.Receivers.Add(currentReceiver ?? AddNewPersonToRepository(receiver, mailMessage.Date));
            }

            return(returnMessage);
        }
        /// <summary>
        /// Converts Input.MailMessage to Entities.MailMessage.
        /// If sender or receivers isn't exist then they will be added to repository
        /// </summary>
        /// <param name="mailMessage">Input.MailMessage type of message</param>
        /// <returns>Entities.MailMessage type of message</returns>
        public Entities.MailMessage Convert(MailMessage mailMessage)
        {
            var returnMessage = new Entities.MailMessage
                                    {
                                        Body = mailMessage.Body,
                                        Date = mailMessage.Date,
                                        Subject = mailMessage.Subject,
                                        Receivers=new List<Person>()
                                    };
            //find a Sender in Repository
            var sender = repository.Query<Person>().FirstOrDefault(x => x.Email == mailMessage.Sender.Address);
            if (sender!=null)
            {
                returnMessage.Sender = sender;
            }
            else //if cant find sender in repository then create him.
            {
                returnMessage.Sender = addNewPersonToRepository(mailMessage.Sender, mailMessage.Date);
            }

            //find Receivers in repository
            foreach (var receiver in mailMessage.Receivers)
            {
                var currentReceiver = repository.Query<Person>().FirstOrDefault(x => x.Email == receiver.Address);
                if (currentReceiver!=null)
                {
                    returnMessage.Receivers.Add(currentReceiver);
                }
                else //if cant find receiver in repository then create him.
                {
                    returnMessage.Receivers.Add(addNewPersonToRepository(receiver, mailMessage.Date));
                }
            }

            return returnMessage;
        }