コード例 #1
0
        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));
        }
コード例 #2
0
        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));
        }