예제 #1
0
        public async Task <IActionResult> AddSub(AddSubViewModel subComment)
        {
            string token  = Request.Headers["Authorization"];
            var    userID = JWTExtensions.GetDecodeTokenByProperty(token, "nameid").ToInt();

            subComment.CurrentUser = userID;
            var model = await _commentService.AddSub(subComment);

            // await _hubContext.Clients.All.SendAsync("ReceiveMessage", model.Item2, "message");
            return(Ok(model.Item3));
        }
예제 #2
0
        public async Task <Tuple <bool, string> > AddSub(AddSubViewModel subcomment)
        {
            try
            {
                var item    = _context.Comments.Find(subcomment.ParentID);
                var comment = new Comment
                {
                    ParentID = subcomment.ParentID,
                    TaskID   = subcomment.TaskID,
                    UserID   = subcomment.UserID,
                    Content  = subcomment.Content,
                    Level    = item.Level + 1
                };

                await _context.AddAsync(comment);

                await _context.SaveChangesAsync();

                await _context.AddAsync(new CommentDetail { CommentID = comment.ID, UserID = comment.UserID, Seen = true });

                await _context.SaveChangesAsync();

                var comtParent = await _context.Comments.FindAsync(subcomment.ParentID);

                //Neu tra loi chinh binh luan cua minh thi khong
                if (subcomment.CurrentUser.Equals(comtParent.UserID))
                {
                    return(Tuple.Create(true, string.Empty));
                }
                else
                {
                    var alert = await AlertReplyComment(comment.TaskID, comment.UserID, comtParent.Content);

                    alert.Item1.Add(comtParent.UserID);
                    var listUsers = alert.Item1.Where(x => x != subcomment.CurrentUser).Distinct().ToList();
                    await _notificationService.Create(new CreateNotifyParams
                    {
                        AlertType = Data.Enum.AlertType.ReplyComment,
                        Message   = alert.Item2,
                        Users     = listUsers,
                        TaskID    = comment.TaskID,
                        URL       = alert.Item3,
                        UserID    = comment.UserID
                    });

                    return(Tuple.Create(true, string.Join(",", listUsers.ToArray())));
                }
            }
            catch (Exception)
            {
                return(Tuple.Create(false, string.Empty));
            }
        }
예제 #3
0
        public async Task <Tuple <bool, string, Comment> > AddSub(AddSubViewModel subcomment)
        {
            try
            {
                var item  = _context.Comments.Find(subcomment.ParentID);
                var item2 = _context.Comments.Find(subcomment.ID);
                if (subcomment.ID > 0 && !subcomment.Content.Equals(item2.Content))
                {
                    item.Content = subcomment.Content;
                    await _context.SaveChangesAsync();

                    return(Tuple.Create(true, string.Empty, new Comment()));
                }
                var comment = new Comment
                {
                    TaskID   = subcomment.TaskID,
                    TaskCode = subcomment.TaskCode,
                    UserID   = subcomment.UserID,
                    Content  = subcomment.Content,
                };
                if (item.Level == 1)
                {
                    comment.ParentID = subcomment.ParentID;
                    comment.Level    = item.Level + 1;
                }
                if (item.Level >= 2)
                {
                    comment.Level    = 2;
                    comment.ParentID = item.ParentID;
                }
                await _context.AddAsync(comment);

                await _context.SaveChangesAsync();

                await _context.AddAsync(new CommentDetail { CommentID = comment.ID, UserID = comment.UserID, Seen = true });

                await _context.SaveChangesAsync();

                var comtParent = await _context.Comments.FindAsync(subcomment.ParentID);

                //Neu tra loi chinh binh luan cua minh thi khong
                if (subcomment.CurrentUser.Equals(comtParent.UserID))
                {
                    return(Tuple.Create(true, string.Empty, comment));
                }
                else
                {
                    var alert = await AlertReplyComment(comment.TaskID, comment.UserID, comtParent.Content, subcomment.ClientRouter);

                    alert.Item1.Add(comtParent.UserID);
                    var listUsers = alert.Item1.Where(x => x != subcomment.CurrentUser).Distinct().ToList();
                    await _notificationService.Create(new CreateNotifyParams
                    {
                        AlertType = Data.Enum.AlertType.ReplyComment,
                        Message   = alert.Item2,
                        Users     = listUsers,
                        TaskID    = comment.TaskID,
                        URL       = alert.Item3,
                        UserID    = comment.UserID
                    });

                    await _hubContext.Clients.All.SendAsync("ReceiveMessage", listUsers, "message");

                    return(Tuple.Create(true, string.Join(",", listUsers.ToArray()), comment));
                }
            }
            catch (Exception)
            {
                return(Tuple.Create(false, string.Empty, new Comment()));
            }
        }