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); }
protected override async void OnAppearing() { ChatRoomList.BeginRefresh(); await VM.InitialRoom(); ChatRoomList.EndRefresh(); }
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); } }
/// <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); }
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(); }
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(); }
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, }); }
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)); }
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); }