//public HttpResponseMessage PutMessage(int id, Message message)
        //{
        //    if (ModelState.IsValid && id == message.MessageID)
        //    {
        //        db.Entry(message).State = EntityState.Modified;
        //        try
        //        {
        //            db.SaveChanges();
        //        }
        //        catch (DbUpdateConcurrencyException)
        //        {
        //            return Request.CreateResponse(HttpStatusCode.NotFound);
        //        }
        //// PUT api/Messages/5
        //        return Request.CreateResponse(HttpStatusCode.OK);
        //    }
        //    else
        //    {
        //        return Request.CreateResponse(HttpStatusCode.BadRequest);
        //    }
        //}
        // POST api/Messages/PostMessage
        public HttpResponseMessage PostMessage(Message message)
        {
            var chatId = message.ChatID;
            var chat = this.db.Chats.Find(chatId);

            var userId = message.UserID;

            if (chatId <= 0 || userId <= 0)
            {
                return this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, this.ModelState);
            }

            if (this.ModelState.IsValid)
            {
                chat.Messages.Add(message);
                this.db.Messages.Add(message);
                this.db.SaveChanges();

                HttpResponseMessage response = this.Request.CreateResponse(HttpStatusCode.Created, message);
                response.Headers.Location = new Uri(this.Url.Link("DefaultApi", new { id = message.MessageID }));
                return response;
            }
            else
            {
                return this.Request.CreateResponse(HttpStatusCode.BadRequest);
            }
        }
예제 #2
0
        // POST api/messages
        public void Post([FromBody]MessagePostModel message)
        {
            var messageEntity = new Message
            {
                Content = message.Content,
                FromUser = new User { SessionKey = message.FromUser },
                ToUser = new User { Id = int.Parse(message.ToUser) },
            };

            this.messageRepository.Add(messageEntity);

            var notification = new NotificationModel
            {
                ToUser = messageEntity.FromUser.SessionKey,
                FromUser = messageEntity.ToUser.Nickname
            };

            PubNubNotifier.PublishMessage(JsonConvert.SerializeObject(notification));
        }
예제 #3
0
        public ActionResult SubmitMessage(RoomSubmitMessageViewModel model)
        {
            if(!ModelState.IsValid)
            {
                return Json(new { Success = false, Message = "Not valid" });
            }
            var room = DocumentSession.Query<Room>().SingleOrDefault(m => m.Id == model.RoomId);
            if(room == null)
            {
                return Json(new { Success = false, Message = "Not valid room id" });
            }

            var roomUser = DocumentSession.Query<RoomUser>().SingleOrDefault(r => r.UserId == CurrentUser.Id && r.RoomId == room.Id);
            if(roomUser == null)
            {
                roomUser = new RoomUser() { Id = room.Id + "-" + CurrentUser.Id, LastActivity = DateTime.Now, RoomId = room.Id, UserId = CurrentUser.Id, UserName = CurrentUser.Name };
                DocumentSession.Store(roomUser);
            }
            else
            {
                roomUser.LastActivity = DateTime.Now;
            }

            Message message = new Message()
            {
                CreateDateTime = DateTime.Now,
                CreateUserId = CurrentUser.Id,
                RoomId = room.Id,
                Text = model.Text,
                CreateUserName = CurrentUser.Name
            };
            DocumentSession.Store(message);
            DocumentSession.SaveChanges();
            return Json(new { Success = true });
        }