示例#1
0
    /// <summary>
    /// Lấy thông tin người đăng nhập
    /// </summary>
    private void GetDataUser()
    {
        if (Request.Cookies["UserName_Chat"] != null && string.IsNullOrEmpty(Request.Cookies["UserName_Chat"].Value) == false)
        {
            sUserName = ConvertTool.ConvertToString(Request.Cookies["UserName_Chat"].Value);
        }
        else
        {
            sUserName = "******" + RandomNumber(100, 10000) + DateTime.Now.ToString("fff");
            HttpCookie aCookie = new HttpCookie("UserName_Chat");
            aCookie.Value = sUserName;

            // Mặc định: Hạn là 1 tiếng
            aCookie.Expires = DateTime.Now.AddMinutes(60);
            Response.Cookies.Add(aCookie);

            // Refresh dữ liệu
            Session["ListBoxChat"] = null;
            Session["ChatHistory"] = null;
        }

        Session["UserName_Chat"] = sUserName;
    }
示例#2
0
    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;
    }
示例#3
0
    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);
    }