示例#1
0
        public IHttpActionResult PostMessage([FromBody] MessageCreateBindingModel model)
        {
            if (model == null)
            {
                return(this.BadRequest());
            }

            if (!this.ModelState.IsValid)
            {
                return(this.BadRequest(this.ModelState));
            }

            var currentUser = this.Data.Users.Find(this.User.Identity.GetUserId());

            if (currentUser.Id == model.ReceiverId)
            {
                return(this.BadRequest("Enter a valid, different from yours, receiver-username."));
            }

            var receiverUser = this.Data.Users.Find(model.ReceiverId);

            if (receiverUser == null)
            {
                return(this.BadRequest("Invalid recipient Id."));
            }

            var message = new Message()
            {
                SenderId     = currentUser.Id,
                ReceiverId   = receiverUser.Id,
                Content      = model.Content,
                SentDateTime = DateTime.Now
            };

            this.Data.Messages.Add(message);

            this.Data.SaveChanges();

            var resultItem = MessageViewModel.Create(message);

            return(this.Ok(resultItem));
        }
示例#2
0
        public IHttpActionResult GetMessages([FromUri] string partnerId, [FromUri] int CurrentPage = MainConstants.DefaultPage,
                                             [FromUri] int PageSize = MainConstants.PageSize)
        {
            var user = this.Data.Users.Find(this.User.Identity.GetUserId());

            if (partnerId == user.Id)
            {
                return(this.BadRequest("You cannot chat with youself."));
            }

            var messages = this.Data.Messages.All().Where(m => (m.SenderId == user.Id && m.ReceiverId == partnerId) ||
                                                          (m.SenderId == partnerId && m.ReceiverId == user.Id) && m.Deleted == false)
                           .OrderBy(m => m.SentDateTime)
                           .Skip(CurrentPage * PageSize)
                           .Take(PageSize)
                           .ToList()
                           .Select(m => MessageViewModel.Create(m));

            return(this.Ok(messages));
        }
示例#3
0
        public ActionResult GetMessage(string messageIds)
        {
            var user = _repository.ApplicationUserRepository.GetUserById(User.Identity.GetUserId());

            if (user == null)
            {
                return(HttpNotFound());
            }

            var ids = messageIds.Split('#');

            var model = new List <MessageViewModel>();

            foreach (var id in ids)
            {
                try
                {
                    var message = _repository.MessengerRepository.GetMessage(user.Id, Convert.ToInt32(id));

                    if (message == null)
                    {
                        continue;
                    }

                    model.Add(MessageViewModel.Create(user.Id, message));
                }
                catch
                {
                    // ignored
                }
            }

            if (model.Any())
            {
                return(PartialView("~/Views/Messenger/Message.cshtml", model));
            }

            return(HttpNotFound());
        }