private void leaveChatRoom(UserLogicModel user) { //ExtensionMethods.debugger(); var room = getRoomFromUser(user); if (room == null) throw new Exception("idk"); foreach (var userLogicModel in room.Users) { if (userLogicModel.Hash == user.Hash) { room.Users.Remove(userLogicModel); break; } } myDataManager.ChatData.RemoveUser(room, user, (a) => { myServerManager.UnregisterChatServer(user); var roomToSend = new ChatRoomDataModel(room.RoomName, room.Users, null); if (room.Users.Count == 0) { myDataManager.ChatData.RemoveRoom(room, () => { }); return; } foreach (var userLogicModel in room.Users) { myServerManager.SendChatInfo(userLogicModel, roomToSend.ToModel()); } }); }
public void CreateChatChannel(string roomName, UserLogicModel user, Action<ChatRoomDataModel> complete) { manager.client.Collection("ChatRoom", (err, collection) => { ChatRoomDataModel chatRoomDataModel = new ChatRoomDataModel(roomName, new List<UserLogicModel>() {user}, new List<ChatMessageRoomModel>()); collection.Insert(chatRoomDataModel); complete(chatRoomDataModel); }); }
public void AddUser(ChatRoomDataModel roomData, UserLogicModel user, Action<ChatRoomDataModel> complete) { manager.client.Collection("ChatRoom", (err, collection) => { JsDictionary<string, object> query = new JsDictionary<string, object>(); query["$push"] = new {users = user}; collection.Update(new { _id = MongoDocument.GetID(roomData.ID) }, query, (err2) => { if (err2 != null) ServerLogger.LogError("Data Error: " + err2, user); roomData.Users.Add(user); complete(roomData); }); }); }
public void AddChatLine(UserLogicModel user, ChatRoomDataModel roomData, string message, Action<ChatMessageRoomModel> complete) { manager.client.Collection("ChatRoom", (err, collection) => { ChatMessageRoomModel messageModel = new ChatMessageRoomModel(user, message, DateTime.Now); JsDictionary<string, object> query = new JsDictionary<string, object>(); query["$push"] = new {messages = messageModel}; collection.Update(new { _id = MongoDocument.GetID(roomData.ID )}, query, (err2) => { if (err2 != null) ServerLogger.LogError("Data Error: " + err2,message); roomData.Messages.Add(messageModel); complete(messageModel); }); }); }
public void RemoveRoom(ChatRoomDataModel roomData, Action complete) { manager.client.Collection("ChatRoom", (err, collection) => { collection.Remove(new { _id = MongoDocument.GetID(roomData.ID) } ); complete(); }); }
private void OnJoinChatChannel(UserLogicModel user, JoinChatRoomRequest data) { var cur = getRoomFromUser(user); if (cur != null) leaveChatRoom(user); ChatRoomDataModel currentRoomData = null; foreach (var chatRoomModel in runningRooms) { if (chatRoomModel.RoomName == data.Room.ChatChannel) currentRoomData = chatRoomModel; } if (currentRoomData == null) throw new Exception("idk"); myDataManager.ChatData.AddUser(currentRoomData, user, room => { myServerManager.RegisterChatServer(user); var roomToSend = new ChatRoomDataModel(room.RoomName, room.Users, room.Messages); roomToSend.Messages = room.Messages.Extract(room.Messages.Count - 5); myServerManager.SendChatInfo(user, roomToSend.ToModel()); roomToSend = new ChatRoomDataModel(room.RoomName, room.Users, null); foreach (var userLogicModel in currentRoomData.Users) { myServerManager.SendChatInfo(userLogicModel, roomToSend.ToModel() ); } }); }