public GroupChatDisplayModel GroupChatDisplayModelByGroupId (int groupid) { var group = _groupDal.GetGroupById (groupid); var messages = _groupMessagesDal.MessagesByGroupId (groupid); var result = new GroupChatDisplayModel (); result.GroupName = group.GroupName; result.GroupId = group.GroupId; result.MessagesList = messages; return result; }
public async void OpenChat(GroupChatDisplayModel gcdm) { var chat = GroupChats.Where(x => x.Id == gcdm.Id).First(); if (chat.Views != null) { var list = chat.Views.Where(x => x.UserId == User.Id); if (list.Count() != 0) { var view = new Models.View { UserId = User.Id }; await _api.AddViewToGroupChat(view, chat.Id); } } Application.Current.MainPage = new MainPage(new ChatPage(chat)); }
async void OnLoad() { ChatDisplayModels = new ObservableRangeCollection <ChatDisplayModel>(); Chats = new ObservableRangeCollection <Chat>(); GroupChats = new ObservableRangeCollection <GroupChat>(); GroupChatDisplayModels = new ObservableRangeCollection <GroupChatDisplayModel>(); User = await _api.GetLoggedInUser(); AllUsers = await _api.GetAllUsers(); if (User.Chats.Count != 0) { Chats.AddRange(User.Chats); } if (User.GroupChats.Count != 0) { //GroupChats.AddRange(User.GroupChats); } if (GroupChats.Count != 0) { foreach (var gc in GroupChats) { bool IsMessagesNotViewed = true; var gcdm = new GroupChatDisplayModel(); gcdm.Id = gc.Id; if (gc.GroupName != null && gc.GroupName != "" && gc.GroupChatPic != null) { gcdm.ChatName = gc.GroupName; gcdm.ChatPic = gc.GroupChatPic; } else { var assembly = Assembly.GetExecutingAssembly(); var pic = EmbeddedResourceToByteArray.GetEmbeddedResourceBytes(assembly, "group.png"); gcdm.ChatName = "GruppChatt"; gcdm.ChatPic = pic; } if (gc.Messages.Count() != 0 && gc.Messages != null) { gcdm.LatestMessage = gc.Messages.Last().Text; gcdm.LatestMessageDate = gc.Messages.Last().MessageDateTime; if (gc.Messages.Last().SenderId != User.Id) { IsMessagesNotViewed = false; } else { if (gc.Views.Count != 0 && gc.Views != null) { var list = gc.Views.Where(x => x.UserId == User.Id); if (list.Count() != 0) { IsMessagesNotViewed = false; } } } } else { gcdm.LatestMessage = "Inga meddelanden skickade"; IsMessagesNotViewed = false; } gcdm.IsLatestMessageNotViewed = IsMessagesNotViewed; GroupChatDisplayModels.Add(gcdm); } GroupChatDisplayModels = new ObservableRangeCollection <GroupChatDisplayModel>(GroupChatDisplayModels.OrderByDescending(x => x.LatestMessageDate)); } if (Chats.Count != 0) { foreach (var c in Chats) { var otherUser = c.Users.Where(x => x.Id != User.Id).First(); bool IsMessagesNotViewed = true; var chatView = new ChatDisplayModel { Id = c.Id, DisplayName = otherUser.FirstName + " " + otherUser.LastName, ChatPic = otherUser.ProfilePicture }; if (c.Messages.Count == 0) { chatView.LatestMessage = "Inga meddelanden skickade"; IsMessagesNotViewed = false; } else { if (c.Messages.Last().SenderId == User.Id) { IsMessagesNotViewed = false; } else if (c.Views.Count != 0 && c.Views != null) { var list = c.Views.Where(x => x.UserId == User.Id); if (list.Count() != 0) { IsMessagesNotViewed = false; } } string latestMessageSender; var latestMessageSenderId = c.Messages.Last().SenderId; if (latestMessageSenderId == User.Id) { latestMessageSender = "Du: "; } else { latestMessageSender = otherUser.FirstName + ": "; } chatView.LatestMessage = latestMessageSender + c.Messages.Last().Text; chatView.LatestMessageDate = c.Messages.Last().MessageDateTime; chatView.IsLatestMessageNotViewed = IsMessagesNotViewed; } ChatDisplayModels.Add(chatView); } ChatDisplayModels = new ObservableRangeCollection <ChatDisplayModel>(ChatDisplayModels.OrderByDescending(x => x.LatestMessageDate)); } }
void GroupChat_ItemTapped(object sender, ItemTappedEventArgs e) { GroupChatDisplayModel selected = e.Item as GroupChatDisplayModel; vm.OpenChat(selected); }