Пример #1
0
				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;
				}
Пример #2
0
        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));
        }
Пример #3
0
        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));
            }
        }
Пример #4
0
        void GroupChat_ItemTapped(object sender, ItemTappedEventArgs e)
        {
            GroupChatDisplayModel selected = e.Item as GroupChatDisplayModel;

            vm.OpenChat(selected);
        }