Пример #1
0
        public async Task <ActionResult <int> > PostChatRoomList(string account, string person)
        {
            //查看群組是否存在
            var roomvalid = from room in _context.ChatRoomList
                            where (room.Account == account && room.Person == person) ||
                            (room.Account == person && room.Person == account)
                            select room;



            if (roomvalid.Any())
            {
                int i = roomvalid.FirstOrDefault().Idx;
                return(i);
            }

            var newroom = new ChatRoomList {
                Account = account, Person = person
            };

            _context.ChatRoomList.Add(newroom);
            await _context.SaveChangesAsync();

            var roomvalid2 = from room in _context.ChatRoomList
                             where (room.Account == account && room.Person == person) ||
                             (room.Account == person && room.Person == account)
                             select room;

            int ii = roomvalid2.FirstOrDefault().Idx;


            return(ii);
        }
Пример #2
0
        protected override async void OnAppearing()
        {
            ChatRoomList.BeginRefresh();
            await VM.InitialRoom();

            ChatRoomList.EndRefresh();
        }
Пример #3
0
        private void ICD_ChatRoomList(int clientID, HEADER obj)
        {
            List <RoomInfo> vec = new List <RoomInfo>();

            foreach (var item in mRooms)
            {
                if (!item.Value.IsUser(obj.msgUser))
                {
                    continue;
                }

                RoomInfo     info = new RoomInfo();
                ChatRoomInfo room = item.Value.GetRoomInfo();
                info.recordID = room.body.recordID;
                info.state    = item.Value.GetUserState(obj.msgUser);
                info.users    = room.body.users;
                vec.Add(info);
            }

            if (vec.Count > 0)
            {
                ChatRoomList msg = new ChatRoomList(1);
                msg.FillServerHeader(DEF.CMD_ChatRoomList, 0);
                msg.body = vec.ToArray();
                sendMsg(obj.msgUser, msg);
            }
        }
Пример #4
0
        /// <summary>
        /// Функция создания списка участников в комнате
        /// </summary>
        /// <param name="model"></param>
        /// <returns></returns>
        public async Task <ChatRoomList> CreateAsync(ChatRoomList model)
        {
            await _domainContext.ChatRoomLists.AddAsync(model);

            await _domainContext.SaveChangesAsync();

            return(model);
        }
Пример #5
0
 public async void ChatList_ItemTapped(object sender, ItemTappedEventArgs e)
 {
     ChatRoomList.BeginRefresh();
     if (e.Item.GetType() == typeof(IndividualChatRoom))
     {
         await App.Current.MainPage.Navigation.PushAsync(new ChatContents((IndividualChatRoom)e.Item));
     }
     else
     {
         await App.Current.MainPage.Navigation.PushAsync(new GroupChatContents((GroupChatRoom)e.Item));
     }
     ChatRoomList.EndRefresh();
 }
Пример #6
0
        public async Task <ChatMessageResult> CreateForEmptyRoomAsync(Guid profileId, MessageDto model)
        {
            var user = await _userRepository.GetWithId(profileId);

            var userTemp = await _userRepository.GetProfileForUserName(model.account);

            var allRoomLists = await _chatRoomListRepository.GetAllAsync();

            var roomList    = allRoomLists.Where(e => e.UserId == user.Id).ToList();
            var roomListTwo = allRoomLists.Where(e => e.UserId == userTemp.Id).ToList();

            //var uniqRoom = await _domainContext.ChatRooms.FirstOrDefaultAsync(e => e.Id == (roomList.Union));

            var dto     = new ChatMessageResult();
            var message = new ChatMessage();

            if (roomList.Count > 0 && roomListTwo.Count > 0)
            {
                var temp = roomList.FirstOrDefault(e => roomListTwo.FirstOrDefault(a => a.ChatRoomId == e.ChatRoomId) != null);
                //var temp = roomList.Intersect(roomListTwo).FirstOrDefault();
                if (temp != null)
                {
                    return(await CreateMessage(
                               model : model,
                               userTo : userTemp,
                               user : user
                               ));
                }
            }
            var room           = new ChatRoom(model.chatRoomId);
            var chatRoomListTo = new ChatRoomList();

            chatRoomListTo.ChatRoomId = room.Id;
            chatRoomListTo.UserId     = user.Id;
            var chatRoomListFrom = new ChatRoomList();

            chatRoomListFrom.ChatRoomId = room.Id;
            chatRoomListFrom.UserId     = userTemp.Id;

            await _chatRoomRepository.CreateAsync(room);

            await _chatRoomListRepository.CreateAsync(chatRoomListFrom);

            await _chatRoomListRepository.CreateAsync(chatRoomListTo);

            return(await CreateMessage(
                       model : model,
                       userTo : userTemp,
                       user : user
                       ));
        }
        /// <summary>
        /// Construct a new LoneSeek client.
        /// </summary>
        public LoneSeekClient()
        {
            start = new ThreadStart(RecvThread);
            queueStart = new ThreadStart(DispatchThread);
            acceptCallback = new AsyncCallback(AcceptCallback);
            roomlist = new ChatRoomList(this);

            if (!PacketFactory.Initialized)
            { // Initialize factory.
                PacketFactory.Initialize();
            }
            // Initialize dispatcher
            InitializeDispatcher();
        }
Пример #8
0
 public static ChatRoomResult ConvertToResult(
     User user,
     ChatRoomList chatRoomList,
     ChatMessage chatMessage
     )
 {
     return(new ChatRoomResult
     {
         userid = user.Id,
         account = user.Account ?? "",
         //Пока что хардкор
         image = user.Profile.Photo,
         chatRoomId = chatRoomList?.ChatRoomId ?? Guid.NewGuid(),
         lastmessage = chatMessage?.Message ?? "",
         lastmessagedate = chatMessage?.DateTime ?? null,
     });
 }
Пример #9
0
        public override Task OnDisconnected(bool stopCalled)
        {
            ChatUser thisUser = _ChatStore.GetUserByConnectionID(Context.ConnectionId);

            if (thisUser != null)
            {
                ChatRoomList roomList = _ChatStore.RemoveUserByConnectionId(Context.ConnectionId);
                foreach (ChatRoom room in roomList)
                {
                    SendGroupMessage(room.SignalRRoomID, Helper.UserLeftMessage(thisUser, room));
                }
            }
            else
            {
                Console.WriteLine("Hub OnDisconnected {0}", Context.ConnectionId);
            }
            return(base.OnDisconnected(stopCalled));
        }
Пример #10
0
        public ChatRoomList RemoveUserByConnectionId(String ConnectionId)
        {
            ChatRoomList roomList = new ChatRoomList();

            lock (syncLock)
            {
                ChatUser thisUser = null;
                foreach (ChatUser user in ChatUsers)
                {
                    if (user.Connections.IndexOf(ConnectionId) != -1)
                    {
                        thisUser = user;
                    }
                }
                if (thisUser == null)
                {
                    return(roomList);
                }
                // Remove the connectionid from the user
                thisUser.Connections.Remove(ConnectionId);

                foreach (ChatRoom room in ChatRooms)
                {
                    if (room.UserList.IndexOf(thisUser.UserId) != -1)
                    {
                        // Remove the user from the room
                        roomList.Add(room.Clone());
                        room.UserList.Remove(thisUser.UserId);
                    }
                }

                // TODO
                // Remove users with no connectionIds
                // Remove rooms with no users (except for Id 0)
            }
            return(roomList);
        }