public ActionResult ChatHistory(ChatHistoryModel model)
        {
            model = model ?? new ChatHistoryModel();

            // do not show zkcore history for non-cores
            if (model.Channel == "zkcore" && Global.Account.DevLevel < DevLevel.RetiredCoreDeveloper)
            {
                return(View("LobbyChatHistory", model));
            }

            // do not show undelivered offline PMs to anyone
            if (model.Place == SayPlace.User)
            {
                return(View("LobbyChatHistory", model));
            }

            var db  = new ZkDataContext();
            var ret = db.LobbyChatHistories.Where(x => x.SayPlace == model.Place).AsQueryable();

            if (!string.IsNullOrEmpty(model.Channel))
            {
                ret = ret.Where(x => x.Target == model.Channel);
            }
            if (!string.IsNullOrEmpty(model.User))
            {
                ret = ret.Where(x => x.User == model.User);
            }
            if (model.TimeFrom.HasValue)
            {
                ret = ret.Where(x => x.Time >= model.TimeFrom);
            }
            if (model.TimeTo.HasValue)
            {
                ret = ret.Where(x => x.Time <= model.TimeTo);
            }
            if (!string.IsNullOrEmpty(model.Text))
            {
                ret = ret.Where(x => x.Text.Contains(model.Text));
            }

            model.Data = ret.OrderByDescending(x => x.Time);

            return(View("LobbyChatHistory", model));
        }
        //Get History of all chat
        public List <ChatHistoryModel> GetChatHistory(int userId)
        {
            try
            {
                string connectionString = configuration.GetConnectionString("DefaultConnectionString");

                SqlConnection con = new SqlConnection(connectionString);
                con.Open();
                SqlCommand cmd = new SqlCommand("GetAllChatHistory_ToUser", con);
                cmd.CommandType = CommandType.StoredProcedure;
                SqlParameter p1 = new SqlParameter("userid", userId);
                cmd.Parameters.Add(p1);

                SqlDataReader rd = cmd.ExecuteReader();


                if (rd.Read())
                {
                    //add chat history by list
                    while (rd.Read())
                    {
                        var data = new ChatHistoryModel()
                        {
                            user       = rd.GetString(0),
                            sendTo     = rd.GetString(1),
                            message    = rd.GetString(2),
                            date       = rd.GetString(3),
                            receiverId = rd.GetInt32(4)
                        };
                        chatHistoryList.Add(data);
                    }
                }
                else
                {
                    //return false;
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
            return(chatHistoryList);
        }
        public ActionResult ChatHistory(ChatHistoryModel model) {
            model = model ?? new ChatHistoryModel();

            var db = new ZkDataContext();
            var ret = db.LobbyChatHistories.Where(x=>x.SayPlace == model.Place).AsQueryable();
            if (!string.IsNullOrEmpty(model.Channel)) ret = ret.Where(x => x.Target == model.Channel);
            if (!string.IsNullOrEmpty(model.User)) ret = ret.Where(x => x.User == model.User);
            if (model.TimeFrom.HasValue) ret = ret.Where(x => x.Time >= model.TimeFrom);
            if (model.TimeTo.HasValue) ret = ret.Where(x => x.Time >= model.TimeTo);
            if (!string.IsNullOrEmpty(model.Text)) ret = ret.Where(x => x.Text.Contains(model.Text));
            
            model.Data = ret.OrderByDescending(x => x.Time);

            return View("LobbyChatHistory", model);
        }