private void updateChatHistory(BoxChatItem objBoxChatItem) { List <BoxChatItem> lstBoxChatItem = null; if (Session["ChatHistory"] == null) { lstBoxChatItem = new List <BoxChatItem>(); } else { try { lstBoxChatItem = (List <BoxChatItem>)Session["ChatHistory"]; } catch { lstBoxChatItem = new List <BoxChatItem>(); } } lstBoxChatItem.Add(objBoxChatItem); // Lưu lại Session["ChatHistory"] = lstBoxChatItem; }
private void chatHeartbeat() { sUserFrom = ConvertTool.ConvertToString(Request.Cookies["UserName_Chat"].Value); var History = ModChat_HistoryService.Instance.CreateQuery().Where(o => o.To_UserName == sUserFrom && o.Activity == false) .OrderBy("From_UserName,CreateDate").ToList(); if (History == null || History.Count <= 0) { objDataOutput.ListChatItem = new List <BoxChatItem>(); return; } #region Kiểm tra xem, người gửi gần nhất có phải là người gửi tiếp theo không sUserTo = History.FirstOrDefault().From_UserName; var objHistoryCheck_List = ModChat_HistoryService.Instance.CreateQuery().Where(o => ((o.From_UserName == sUserFrom && o.To_UserName == (sUserTo)) || (o.From_UserName == (sUserTo) && o.To_UserName == (sUserFrom))) && o.Activity == true) .OrderByDesc(o => o.CreateDate).ToList(); var objHistoryCheck = new ModChat_HistoryEntity(); if (objHistoryCheck_List == null || objHistoryCheck_List.Count <= 0) { objHistoryCheck = null; } else { objHistoryCheck = objHistoryCheck_List[0]; } #endregion // Duyệt, tạo list BoxChatItem itemBox = null; List <BoxChatItem> lstListHistory = new List <BoxChatItem>(); string sFromUserName_Check = string.Empty; sUserName = ConvertTool.ConvertToString(Request.Cookies["UserName_Chat"].Value); foreach (var item in History) { itemBox = new BoxChatItem(); itemBox.f = item.From_UserName; // Kiểm tra lần đầu dựa vào dữ liệu tìm thấy trong db if (lstListHistory.Count <= 0) { if (objHistoryCheck == null || objHistoryCheck.From_UserName.Equals(item.From_UserName) == false) { itemBox.s = 1; // Mặc định hiển thị UserName } else { itemBox.s = 2; // Không hiển thị UserName (Messager hiển thị thành một khối) objDataOutput.UserChatContiue = true; } } // Kiểm tra những lần sau, dựa vào dữ liệu mới gần nhất else { if (string.IsNullOrEmpty(sFromUserName_Check) || sFromUserName_Check.Equals(item.From_UserName) == false) { itemBox.s = 1; } else { itemBox.s = 2; } } itemBox.m = item.Message; itemBox.datetime = "Tin nhắn gửi vào lúc " + item.CreateDate.ToString("HH:mm - dd/MM/yyyy"); lstListHistory.Add(itemBox); // Lưu lại lịch sử vào Session BoxChatItem NewItem = new BoxChatItem(); NewItem = itemBox; NewItem.boxTitle = item.From_UserName; updateChatHistory(NewItem); sFromUserName_Check = item.From_UserName; // Cập nhật lại trạng thái messager item.Activity = true; // Cập nhật lại trong db ModChat_HistoryService.Instance.Save(item); } // Gán lại danh sách objDataOutput.ListChatItem = lstListHistory; }
private void sendChat() { // Lấy thông tin đăng nhập GetDataUser(); sMessager = FormatText(ConvertTool.ConvertToString(Request["message"])); sUserFrom = ConvertTool.ConvertToString(Request.Cookies["UserName_Chat"].Value); sUserTo = ConvertTool.ConvertToString(Request["to"]); #region Kiểm tra xem, người gửi gần nhất có phải là người gửi tiếp theo không var objHistoryCheck_List = ModChat_HistoryService.Instance.CreateQuery().Where(o => (o.From_UserName == (sUserFrom) && o.To_UserName == (sUserTo)) || (o.From_UserName == (sUserTo) && o.To_UserName == (sUserFrom)) ) .OrderByDesc(o => o.CreateDate).ToList(); var objHistoryCheck = new ModChat_HistoryEntity(); if (objHistoryCheck_List == null || objHistoryCheck_List.Count <= 0) { objHistoryCheck = null; } else { objHistoryCheck = objHistoryCheck_List[0]; } #endregion ModChat_HistoryEntity objHistory = new ModChat_HistoryEntity(); objHistory.From_UserName = sUserFrom; objHistory.To_UserName = sUserTo; objHistory.Message = sMessager; objHistory.IP = Context.Request.ServerVariables["REMOTE_ADDR"]; objHistory.Activity = false; objHistory.CreateDate = DateTime.Now; ModChat_HistoryService.Instance.Save(objHistory); // Lưu vào lịch sử BoxChatItem objBoxChatItem = new BoxChatItem(); objBoxChatItem.boxTitle = objHistory.To_UserName; objBoxChatItem.f = sIsMe; //objHistory.From_UserName; if (objHistoryCheck == null || objHistoryCheck.From_UserName.Equals(objHistory.From_UserName) == false) { objBoxChatItem.s = 1; // Mặc định hiển thị UserName } else { objBoxChatItem.s = 2; // Không hiển thị UserName (Messager hiển thị thành một khối) objDataOutput.UserChatContiue = true; } objBoxChatItem.m = objHistory.Message; objBoxChatItem.datetime = "Tin nhắn gửi vào lúc " + objHistory.CreateDate.ToString("HH:mm - dd/MM/yyyy"); // Ngày gửi tin nhắn objDataOutput.datetime = objBoxChatItem.datetime; objDataOutput.MessSuccess = sMessager; // Lưu lại lịch sử updateChatHistory(objBoxChatItem); }