Example #1
0
        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();
                                      });
        }
Example #6
0
        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() );
                                               }
                                           });
        }