public IActionResult Index() { string userName = User.Identity.Name; var messages = _chatService.GetFilteredByUserName(userName).Select(message => new ChatListingModel { Id = message.Id, Created = message.Created, Messages = message.ChatRoom.Messages as IEnumerable <ChatMessageModel> }); ChatIndexModel model = new ChatIndexModel { ChatList = messages }; return(View(model)); }
public ChatIndexModel GetIndexModel() { using (var context = usersSessionFactory.CreateContext()) { var userId = MembershipSession.GetUser().DbId; var orgIds = MembershipSession.GetUser().OrganizationIds; var model = new ChatIndexModel(); model.Groups = context.ChatGroups.Where(c => c.ChatMessages.Any() && (!c.IsPrivate || orgIds.Contains(c.OrganizationId))).OrderByDescending(m => m.ChatMessages.Max(cm => cm.Date)) .Select(g => new ChatGroupModel() { Id = g.Id, Name = g.Name, Url = g.Url, MessageCount = g.ChatMessages.Count(), Date = g.ChatMessages.Max(m => m.Date), Users = g.ChatGroupUsers.Where(u => u.UserId != userId).Select(u => new ChatUser() { Id = u.User.ObjectId, DbId = u.User.Id, Name = u.User.FirstName + " " + u.User.LastName, IsOnline = u.User.ChatClients.Any() }) }).Take(20).ToList(); model.Users = context.ChatClients.Where(c => c.User.Id != userId).Select(c => new ChatUser() { Id = c.User.ObjectId, DbId = c.User.Id, Name = c.User.FirstName + " " + c.User.LastName, IsOnline = true }).Distinct().ToList(); return(model); } }