public IActionResult GetMessageThread(string id)
        {
            Guid guid          = Guid.Parse(id);
            var  messageThread = _messageThreadRepository.GetMessageThreadByID(guid);

            return(new OkObjectResult(messageThread));
        }
Beispiel #2
0
        public async Task <IActionResult> Create([Bind("ThreadId, Body, Subject")] Message message)
        {
            var user = await _userManager.GetUserAsync(HttpContext.User);

            if (user == null)
            {
                return(Redirect("/Account/Login"));
            }
            string messageThreadId = HttpContext.Request.Cookies["threadId"];

            Guid          messageThreadIdGuid = Guid.Parse(messageThreadId);
            MessageThread messageThread       = _messageThreadRepo.GetMessageThreadByID(messageThreadIdGuid);

            messageThread.LastUpdateDate = DateTime.Now;
            message.messageThread        = messageThread;

            if (ModelState.IsValid)
            {
                message.id       = Guid.NewGuid();
                message.SendDate = DateTime.Now;
                _messageRepo.AddMessage(message);

                // This notification redirect URL should put the user to the discussion
                string       redirectURL  = "/MessageThreads/Details/" + message.messageThread.id.ToString();
                Notification notification = new Notification(message.Subject, message.Body, redirectURL);
                string       notificationEmail;
                if (message.messageThread.RecieverEmail == User.Identity.Name)
                {
                    notificationEmail = message.messageThread.SenderEmail;
                    message.messageThread.SenderUnreadMessageCount += 1;
                    message.SenderUnread = true;
                    _messageRepo.Save();

                    Clients.Group(message.messageThread.SenderEmail).UpdateOverallNotificationCount();
                }
                else
                {
                    notificationEmail = message.messageThread.RecieverEmail;
                    message.messageThread.RecieverUnreadMessageCount += 1;
                    message.RecieverUnread = true;
                    _messageRepo.Save();

                    Clients.Group(message.messageThread.RecieverEmail).UpdateOverallNotificationCount();
                }

                Clients.Group(notificationEmail).AddNotificationToQueue(notification);
                return(RedirectToAction("Details", "MessageThreads", new { id = messageThreadId }));
            }

            return(View(message));
        }
Beispiel #3
0
        public IActionResult Post([FromBody] MessageDTO messageDTO)
        {
            Message message = new Message(messageDTO.subject, messageDTO.body, false, false);
            Guid    guid    = Guid.Parse(messageDTO.messageThreadId);

            try
            {
                message.messageThread = _messageThreadRepository.GetMessageThreadByID(guid);
                message.messageThread.LastUpdateDate = DateTime.Now;
            }
            catch (KeyNotFoundException)
            {
                return(new BadRequestResult());
            }
            _messageRepository.AddMessage(message);
            _messageRepository.Save();
            return(new OkResult());
        }