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)); }