public async void OpenChat(ChatDisplayModel cdm) { var chat = Chats.Where(x => x.Id == cdm.Id).First(); if (chat.Views != null && chat.Views.Count != 0) { var list = chat.Views.Where(x => x.UserId == User.Id); if (list.Count() != 0) { var view = new Models.View { UserId = User.Id }; await _api.AddViewToChat(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 Chat_ItemTapped(object sender, ItemTappedEventArgs e) { ChatDisplayModel selected = e.Item as ChatDisplayModel; vm.OpenChat(selected); }