public HttpResponseMessage ReceiveMessage()
        {
            return this.ExecuteOperationAndHandleExceptions(() =>
            {
                HttpResponseMessage result = null;
                var httpRequest = HttpContext.Current.Request;

                var data = new MessagesRepository(
                    ConfigurationManager.AppSettings["MongoConnectionString"],
                    ConfigurationManager.AppSettings["Database"]);

                var recipient = httpRequest.Unvalidated.Form["recipient"].Split('@');
                var recipientName = recipient[0].Trim();

                DbMessageModel model = new DbMessageModel()
                {

                    BodyHtml = httpRequest.Unvalidated.Form["body-html"],
                    BodyPlain = httpRequest.Unvalidated.Form["body-plain"],
                    Date = DateTime.Now,
                    Sender = httpRequest.Unvalidated.Form["from"],
                    Recipient = httpRequest.Unvalidated.Form["recipient"],
                    Subject = httpRequest.Unvalidated.Form["subject"],
                    Username = recipientName
                };

                data.Add(model);

                var responseModel = new MessageResponceModel
                {
                    Id = model.Id,
                    BodyHtml = model.BodyHtml,
                    BodyPlain = model.BodyPlain,
                    Date = model.Date,
                    Recipient = model.Recipient,
                    Sender = model.Sender,
                    Subject = model.Subject
                };

                var response = this.Request.CreateResponse(HttpStatusCode.Created, responseModel);
                return response;
            });
        }
 public void SaveMessage(DbMessageModel dbMessage)
 {
     this.sentMessages.Insert(dbMessage);
 }
 public void Add(DbMessageModel message)
 {
     this.receivedMessages.Insert(message);
 }
        public HttpResponseMessage SendMessage(MessageResponceModel message,
            [ValueProvider(typeof(HeaderValueProviderFactory<string>))]
            string accessToken)
        {
                var data = new MessagesRepository(
                        ConfigurationManager.AppSettings["MongoConnectionString"],
                        ConfigurationManager.AppSettings["Database"]);
                var user = this.GetUserByAccessToken(accessToken, data.Db);

                if (user == null)
                {
                    return this.Request.CreateResponse(HttpStatusCode.Unauthorized);
                }

                message.Sender = user.Username + "@" + MailDomain;
                ValidateMessage(message);
                SendMessageToMailgun(message);
                DbMessageModel dbMessage = new DbMessageModel()
                {
                    BodyHtml = message.BodyHtml,
                    BodyPlain = message.BodyPlain,
                    Date = message.Date,
                    Recipient = message.Recipient,
                    Sender = message.Sender,
                    Subject = message.Subject,
                    Username = user.Username
                };

                data.SaveMessage(dbMessage);
                var response = this.Request.CreateResponse(HttpStatusCode.Created, message);
                return response;
        }