Beispiel #1
0
        public async void SetCurrentRoom(int contactId)
        {
            var room = ChatRooms.Where(x => x.UserId == contactId).FirstOrDefault();

            if (room == null)
            {
                var userAccount = MyAccount.Contacts.Where(x => x.UserId == contactId).FirstOrDefault();
                if (userAccount != null)
                {
                    room = new ConversationRoom(ConversationType.Private, MyAccount, userAccount);
                    room.OnSendMessage += Room_OnSendMessage;
                    this.ChatRooms.Add(room);
                }
            }

            CurrentRoom = room;

            if (CurrentRoom != null && CurrentRoom.Conversations != null && CurrentRoom.Conversations.Count <= 0)
            {
                var conversationService = new ConversationService();
                var chatRoom            = await conversationService.GetConversations(MyAccount.IdUser, contactId);

                if (chatRoom != null)
                {
                    foreach (var item in chatRoom.Messages)
                    {
                        CurrentRoom.Conversations.Add(item);
                    }
                }
            }



            if (CurrentRoom != null && CurrentRoom.Conversations != null)
            {
                var unReaded = CurrentRoom.Conversations.Where(x => x.SenderId == CurrentRoom.UserId && x.Readed == false).ToList();
                if (unReaded != null && unReaded.Count() > 0)
                {
                    foreach (var item in unReaded)
                    {
                        item.Readed = true;
                    }
                    await ReadMessage(unReaded.ToList());
                }
            }

            this.Refresh();
        }
Beispiel #2
0
        public List <IChatRoom> GetChatRooms(RoomMode roomMode)
        {
            var chatRooms = ChatRooms.Where(i => i.ChatRoomMode == roomMode).ToList();

            foreach (var room in chatRooms)
            {
                var activeUsers = room.CurrentUsers.Count(i => i.IsActive);

                if (activeUsers == 0)
                {
                    DeleteChatRoom(room.ChatRoomID);
                }
            }

            chatRooms = ChatRooms.Where(i => i.ChatRoomMode == roomMode).ToList();

            return(chatRooms);
        }
Beispiel #3
0
        private async void OnRecieveMessageFrom(ChatMessage obj)
        {
            if (CurrentRoom != null && obj.SenderId == CurrentRoom.UserId)
            {
                obj.Readed = true;
                CurrentRoom.Conversations.Add(obj);
                await  ReadMessage(new List <ChatMessage> {
                    obj
                });

                Refresh();
            }
            else
            {
                var room = ChatRooms.Where(x => x.UserId == obj.SenderId).FirstOrDefault();
                if (room != null)
                {
                    room.Conversations.Add(obj);
                }
            }
        }
Beispiel #4
0
 public List <IChatRoom> GetSessionChatRooms(string sessionId, RoomMode chatRoomMode)
 {
     return(ChatRooms.Where(i => i.ChatRoomMode == chatRoomMode && i.CurrentUsers.Any(j => j.SessionID == sessionId)).ToList());
 }