Beispiel #1
0
        public Task SendMessage(string discussId, string message)
        {
            // Trống thì bỏ qua
            if (string.IsNullOrEmpty(message))
            {
                return(Clients.All.SendAsync("Drop"));
            }

            MessageObject mo = JsonConvert.DeserializeObject <MessageObject>(message);

            // Bỏ qua khi không biết ai gửi
            if (mo.SenderId.ToInt() <= 0)
            {
                return(Clients.All.SendAsync("Drop"));
            }

            // Bỏ qua khi không biết cuộc thảo luận nào
            if (discussId.ToInt() <= 0)
            {
                return(Clients.All.SendAsync("Drop"));
            }

            // Nếu người dùng không thuộc nhóm cũng bỏ qua
            if (!_DiscussionManager.IsIn(discussId.ToLong(), mo.SenderId.ToLong()))
            {
                return(Clients.All.SendAsync("Drop"));
            }

            // Lấy mã Du
            DiscussionUser du = _DiscussionUserManager.GetBy(discussId.ToInt(), mo.SenderId.ToInt());

            // Lưu tín nhắn
            DiscussionUserMessage dum = new DiscussionUserMessage
            {
                SenderId = du.Id,
                Message  = mo.Message
            };

            _DiscussionUserMessageManager.Add(dum);

            // Tạo đối tượng tin nhắn
            var messageObj = new MessageObject
            {
                Message  = dum.Message,
                SenderId = dum.DiscussionUser.UserId,
                Time     = dum.CreatedTime?.ToLocalTime().ToString("hh:mm:ss dd/MM/yyyy")
            };

            // Chuyển đối tượng thành JSON
            var msgJson = JsonConvert.SerializeObject(messageObj);

            return(Clients.All.SendAsync("ReceiveMessage", discussId, msgJson));
        }
        public IActionResult CreateDiscuss(int friendId)
        {
            // Nếu không có mã định danh
            if (friendId <= 0)
            {
                this.NotifyError("Cannot identify who you want to discuss");
                return(RedirectToAction(nameof(Index)));
            }

            // Lấy dữ liệu người dùng xem có hay không, nếu không
            if (!_UserManager.IsExists(friendId))
            {
                this.NotifyError("Cannot identify who you want to discuss");
                return(RedirectToAction(nameof(Index)));
            }

            // Kiểm tra xem nhóm đã có hay chưa
            Discussion discussion = _DiscussionManager.GetExistP2PDiscuss(User.Id(), friendId);

            // Nếu đã có, chuyển về cuộc hội thoại
            if (discussion != null && discussion.Id > 0)
            {
                this.NotifySuccess("Entered the discussion");
                RedirectToAction(nameof(Messages), discussion.Id);
            }

            // Nếu nhóm chưa có, tạo nhóm
            discussion = new Discussion
            {
                CreatorId = User.Id()
            };

            // Lưu nhóm
            _DiscussionManager.Add(discussion);

            // Tạo thành viên
            DiscussionUser discussionUser = new DiscussionUser
            {
                UserId       = friendId,
                DiscussionId = discussion.Id
            };

            // Lưu thành viên
            _DiscussionUserManager.Add(discussionUser);

            this.NotifySuccess("Entered the discussion");
            // Chuyển đến màn hình hội thoại
            return(RedirectToAction(nameof(Messages), discussion.Id));
        }