public IHttpActionResult SendMessage(Poco.Message message) { if (string.IsNullOrWhiteSpace(message.Sender)) { return(BadRequest("The sender is not valid!")); } if (string.IsNullOrWhiteSpace(message.Content)) { return(BadRequest("The password is not valid!")); } try { using (var ctx = new ChattyDbContext()) { string email = (this.User as ClaimsPrincipal).FindFirst(ClaimTypes.Email).Value; User user = ctx.Users.Single(x => x.Email == email); user.LastActiveDate = DateTime.Now.ToUniversalTime(); Message m = new Message { Content = message.Content, Sender = message.Sender, SendDate = DateTime.Now.ToUniversalTime() }; ctx.Messages.Add(m); ctx.SaveChanges(); _nhclient.SendGcmNativeNotificationAsync( Newtonsoft.Json.JsonConvert.SerializeObject(Push.Android.Make( "New messages", "You have new unread messages!", 1, m.MessageId.ToString() )), String.Concat("!", user.Email)); _nhclient.SendAppleNativeNotificationAsync( Newtonsoft.Json.JsonConvert.SerializeObject(Push.iOS.Make( "New messages", "You have new unread messages!", 1, m.MessageId.ToString() )), String.Concat("!", user.Email)); return(Ok(Dto.Wrap(new Poco.Message { MessageId = m.MessageId, Content = m.Content, Sender = m.Sender, SendDate = m.SendDate }))); } } catch (Exception ex) { return(InternalServerError(ex)); } }
public IHttpActionResult Post(Poco.Message item) { if (item.IssueId <= 0) { return(BadRequest("Issue ID is not valid!")); } if (item.UserId <= 0) { return(BadRequest("User ID is not valid!")); } if (String.IsNullOrWhiteSpace(item.Content)) { return(BadRequest("Title is not valid!")); } try { using (var ctx = new BugghyDbContext()) { User user = ctx.Users.SingleOrDefault(x => x.UserId == item.UserId); if (user == null) { throw new InvalidOperationException("Unable to find an user with the ID specified!"); } Issue issue = ctx.Issues.SingleOrDefault(x => x.IssueId == item.IssueId); if (issue == null) { throw new InvalidOperationException("Unable to find an issue with the ID specified!"); } // Update reply date issue.ReplyDate = DateTime.Now.ToUniversalTime(); Message me = new Message { IssueId = item.IssueId, UserId = item.UserId, Sender = user.Email, Content = item.Content, PostDate = DateTime.Now.ToUniversalTime() }; ctx.Messages.Add(me); ctx.SaveChanges(); return(Ok(Dto.Wrap(new Poco.Message { MessageId = me.MessageId, IssueId = me.IssueId, UserId = me.UserId, Sender = me.Sender, Content = me.Content, PostDate = me.PostDate }))); } } catch (Exception ex) { return(InternalServerError(ex)); } }