private static Sql.Conversation GetConversationByID(ConversationId id)
 {
     using (var ctx = new EmailMonitorContext())
     {
         Sql.Conversation conversation = ctx.Conversation.Find(id.ToString());
         return(conversation);
     }
 }
        private void PostEmailReply(EmailMessage email, Sql.Conversation conv)
        {
            Logger.Debug("Post email reply: \r\n" + GetEmailThumbnail(email));

            string htmlBody = GetReplyMailBodyHtml(email);

            htmlBody = CreateMailRichMessage(htmlBody, email);

            _client.PostReply(null, "", conv.MessageID, htmlBody, null);
        }
 private static void SaveConversation(Sql.Conversation conv)
 {
     if (conv == null)
     {
         return;
     }
     Logger.Debug("Save Conversation: " + JsonConvert.SerializeObject(conv));
     using (var ctx = new EmailMonitorContext())
     {
         ctx.Conversation.Add(conv);
         ctx.SaveChanges();
     }
 }
        private void PostEmailMessage(EmailMessage email)
        {
            Logger.Debug("Post email message: \r\n" + GetEmailThumbnail(email));

            string htmlBody = GetCompleteMailBodyHtml(email);

            htmlBody = CreateMailRichMessage(htmlBody, email);

            string result = _client.PostMessage("none", null, "none", email.ConversationId, null, null, null, htmlBody, null);

            MSGorilla.WebAPI.Models.ViewModels.DisplayMessage displayMessage = JsonConvert.DeserializeObject <MSGorilla.WebAPI.Models.ViewModels.DisplayMessage>(result);

            Sql.Conversation conv = new Sql.Conversation();
            conv.ConversationID = email.ConversationId;
            conv.MessageID      = displayMessage.ID;
            conv.MessageUser    = displayMessage.User.Userid;

            SaveConversation(conv);
        }
 public void Report(EmailMessage email)
 {
     try
     {
         Sql.Conversation conversation = GetConversationByID(email.ConversationId);
         if (conversation == null)
         {
             //new conversation, post message
             PostEmailMessage(email);
         }
         else
         {
             //old conversation, post reply
             PostEmailReply(email, conversation);
         }
     }
     catch (Exception e)
     {
         Logger.Error("Fail to process email : \r\n" + GetEmailThumbnail(email));
         throw e;
     }
 }