private void GetQuizzmateMsgs(int userId, List <QuizzConnectMsgThread> addList)
        {
            var list = _uow.QuizzmateMsgThreadMembers.GetAll()
                       .Where(qm => qm.UserId == userId && qm.QuizzmateMsgThread.IsDeleted == false)
                       .Include(qm => qm.QuizzmateMsgThread.MsgThreadMembers.Select(mtm => mtm.User.Profile))
                       .OrderByDescending(qm => qm.UpdatedDate)
                       .ToList();

            var tmpList = new List <QuizzConnectMsgThread>();

            foreach (var item in list)
            {
                QuizzConnectMsgThread lastMsg = null;
                try
                {
                    lastMsg = _uow.QuizzmateMsgThreads.GetAll()
                              .Where(qm => qm.Id == item.QuizzmateMsgThreadId)
                              .Select(qm => qm.Messages.OrderByDescending(m => m.PostedDate).FirstOrDefault())
                              .ProjectTo <QuizzConnectMsgThread>()
                              .FirstOrDefault();

                    lastMsg.QuizzMessageType     = QuizzMessageTypeEnum.Quizzmate;
                    lastMsg.NewCount             = item.NewCount;
                    lastMsg.QuizzmateMsgThreadId = item.QuizzmateMsgThreadId;
                }
                catch (Exception)
                {
                    var threadMsgGroup = _uow.QuizzmateMsgThreads.GetAll()
                                         .Where(qm => qm.Id == item.QuizzmateMsgThreadId)
                                         .FirstOrDefault();
                    lastMsg = new QuizzConnectMsgThread
                    {
                        IsEmpty = true,
                        QuizzmateMsgThreadId = threadMsgGroup.Id,
                    };
                }

                if (item.QuizzmateMsgThread.IsGroupMsg)
                {
                    lastMsg.GroupName = item.QuizzmateMsgThread.GroupMessageName;
                }
                else
                {
                    if (userId != _currentUser.Id)
                    {
                        var dependent = item.QuizzmateMsgThread.MsgThreadMembers
                                        .Where(m => m.UserId == userId)
                                        .FirstOrDefault();
                        var depName   = dependent.User.Profile.FirstName;
                        var quizzmate = item.QuizzmateMsgThread.MsgThreadMembers
                                        .Where(m => m.UserId != userId)
                                        .FirstOrDefault();
                        var quizzmateName = quizzmate.User.Profile.FirstName + " " + quizzmate.User.Profile.LastName;
                        if (quizzmate.UserId == _currentUser.Id)
                        {
                            quizzmateName = "you";
                        }
                        else
                        {
                            lastMsg.NewCount = 0;
                        }

                        lastMsg.GroupName = "Between " + depName + " and " + quizzmateName;
                    }
                    else
                    {
                        var quizzmate = item.QuizzmateMsgThread.MsgThreadMembers
                                        .Where(m => m.UserId != userId)
                                        .FirstOrDefault();
                        var quizzmateName = quizzmate.User.Profile.FirstName + " " + quizzmate.User.Profile.LastName;
                        lastMsg.GroupName = "Between You and " + quizzmateName;
                    }
                }

                tmpList.Add(lastMsg);
            }

            tmpList = tmpList.OrderByDescending(tm => tm.LastMsgPostedDate).ToList();
            foreach (var item in tmpList)
            {
                addList.Add(item);
            }
        }
 public void UpdateModel(QuizzConnectMsgThread model)
 {
     model.LastMsgPostedDate = model.LastMsgPostedDate.ToLocalTime();
 }