示例#1
0
        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));
            }
        }
示例#2
0
        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));
            }
        }