public async Task <IActionResult> Chat(ProjectChatViewModel viewproject) { var user = await GetCurrentUserAsync(); ChatMessage chatMessage = new ChatMessage(); chatMessage.UserId = user.Id; chatMessage.Content = viewproject.ChatMessage; chatMessage.ProjectId = viewproject.ProjectId; chatMessage.DatePosted = DateTime.Now; _context.Add(chatMessage); await _context.SaveChangesAsync(); viewproject.Project = await _context.Project .Include(p => p.Creator) .Include(p => p.ChatMessages) .ThenInclude(cm => cm.User) .FirstOrDefaultAsync(m => m.ProjectId == viewproject.ProjectId); viewproject.Project.ChatMessages = viewproject.Project.ChatMessages.OrderBy(cm => cm.DatePosted).ToList(); ViewBag.ArtistName = viewproject.Project.ArtistName; ViewBag.ProjectTitle = viewproject.Project.Title; ViewBag.ImagePath = viewproject.Project.ImagePath; ViewBag.UserId = user.Id; ViewBag.IsProjectOwner = await IsProjectOwnerAsync(viewproject.Project.ProjectId); return(View(viewproject)); }
public async Task <IActionResult> Chat(int id) { var user = await GetCurrentUserAsync(); ViewBag.PageTitle = "Chat"; ProjectChatViewModel viewproject = new ProjectChatViewModel(); viewproject.ProjectId = id; viewproject.Project = await _context.Project .Include(p => p.Creator) .Include(p => p.ChatMessages) .Include(p => p.ProjectUsers) .ThenInclude(cm => cm.User) .FirstOrDefaultAsync(m => m.ProjectId == id); bool isAuth = false; foreach (ProjectUser projectUser in viewproject.Project.ProjectUsers) { if (projectUser.UserId == user.Id) { isAuth = true; } } if (isAuth == false) { return(RedirectToAction("Index")); } viewproject.Project.ChatMessages = viewproject.Project.ChatMessages.OrderBy(cm => cm.DatePosted).ToList(); if (viewproject.Project == null) { return(NotFound()); } ViewBag.ArtistName = viewproject.Project.ArtistName; ViewBag.ProjectTitle = viewproject.Project.Title; ViewBag.ImagePath = viewproject.Project.ImagePath; ViewBag.UserId = user.Id; ViewBag.IsProjectOwner = await IsProjectOwnerAsync(id); return(View(viewproject)); }