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