public IActionResult GetMessageThread(string id) { Guid guid = Guid.Parse(id); var messageThread = _messageThreadRepository.GetMessageThreadByID(guid); return(new OkObjectResult(messageThread)); }
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)); }
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()); }