예제 #1
0
 // constructor
 public CreateRoomModel()
 {
     listRoomModel = ListRoomModel.GetInstance();
     userInfo      = UserInfo.GetInstance();
     socket        = SocketAPI.GetInstance().GetSocket();
     isCreated     = false;
 }
예제 #2
0
 // constructor
 public ListRoomViewModel()
 {
     socket              = SocketAPI.GetInstance().GetSocket();
     currentRoom         = new RoomModel();
     listRoomModel       = ListRoomModel.GetInstance();
     ItemSelectedCommand = new DelegateCommand <RoomModel>(HandleSelectedItem);
     AddMemberCommand    = new DelegateCommand(AddMember);
     HandleSocket();
 }
예제 #3
0
        // constructor
        public LoginModel()
        {
            isAuthenticated = false;
            InputEmail      = "";
            InputPassword   = "";
            listRoomModel   = ListRoomModel.GetInstance();
            socket          = SocketAPI.GetInstance().GetSocket();

            socket.On(Socket.EVENT_CONNECT, () => { Debug.Log("Client connected to server"); })
            .On(Socket.EVENT_DISCONNECT, () => { Debug.Log("Client disconnected to server"); });

            socket.Connect();
        }
        // method
        private void HandleSelectedItem(RoomModel obj)
        {
            currentRoom = obj;

            //emit to server to get message
            socket.Emit("room_change", obj.ID);

            int index = ListRoomModel.GetInstance().GetIndexByValue("ID", obj.ID);

            ListRoomModel.GetInstance().List[index].DisplayNewMessage = "Hidden";
            ListRoomModel.GetInstance().List[index].NotifyChanged("DisplayNewMessage");
            ListRoomModel.GetInstance().NotifyChanged("List");

            //clear data in list message
            ListMessageModel.GetInstance().Clear();
            // clear list task
            ListTaskModel.GetInstance().Clear();
        }
예제 #5
0
        //
        public void Insert(ListRoomModel model)
        {
            QuanLyPhongTroDBContext db = new QuanLyPhongTroDBContext();
            Room r = new Room();

            r.idRoom   = GetNextID();
            r.nameroom = model.tenPhong;
            r.price    = model.gia;
            r.address  = model.diaChi;
            r.location = model.viTri;
            if (model.hinhAnh != null)
            {
                r.image = model.hinhAnh;
            }
            r.status = "empty";
            r.phone  = model.soDienThoai;
            db.Rooms.Add(r);
            db.SaveChanges();
        }
        private void HandleSocket()
        {
            //socket.On("room_change", (roomId) =>
            //{
            //    currentRoom = ListRoomModel.GetInstance().GetRoomById(roomId.ToString());
            //    RoomName = currentRoom.Name;
            //    Debug.LogOutput("Selected room: " + "room id: " + currentRoom.ID + " room name: " + RoomName);
            //});

            socket.On("init_message", (args) =>
            {
                // handle data
                JObject content = (JObject)args;

                string id         = content.GetValue("id").ToString();
                string messageid  = content.GetValue("message_id").ToString();
                string sender     = content.GetValue("sender").ToString();
                string message    = content.GetValue("message").ToString();
                string imgstring  = content.GetValue("imgstring").ToString();
                string filename   = content.GetValue("filename").ToString();
                string filestring = content.GetValue("filestring").ToString();
                long timestamp    = Convert.ToInt64(content.GetValue("timestamp"));

                Application.Current.Dispatcher.Invoke((Action) delegate
                {
                    //if user is in the room that occur event, display message
                    if (currentRoom.ID.Equals(id))
                    {
                        MessageModel msg = new MessageModel(id, messageid, message, sender, imgstring, filestring, filename,
                                                            timestamp);
                        listMessageModel.AddWithCheck(msg, "MessageID");

                        Debug.LogOutput("Room: " + currentRoom.Name + " Message >> " + msg.Message);
                    }
                });
            });

            socket.On("new_message", (arg) =>
            {
                Application.Current.Dispatcher.Invoke((Action) delegate
                {
                    // handle data
                    JObject content = (JObject)arg;

                    string id = content.GetValue("id").ToString();

                    if (currentRoom.ID.Equals(id))
                    {
                        return;
                    }

                    // find room has the id
                    int index = ListRoomModel.GetInstance().GetIndexByValue("ID", id);
                    ListRoomModel.GetInstance().List[index].DisplayNewMessage = "Visible";
                    ListRoomModel.GetInstance().List[index].NotifyChanged("DisplayNewMessage");
                    ListRoomModel.GetInstance().NotifyChanged("List");

                    SystemSounds.Beep.Play();
                });
            });

            socket.On("is_typing", (arg) =>
            {
                JObject data  = (JObject)arg;
                string sender = data.GetValue("sender").ToString();
                string roomId = data.GetValue("room_id").ToString();

                //if user is not in the room that occur event, then return
                if (!currentRoom.ID.Equals(roomId))
                {
                    return;
                }

                //check and add to senderstyping
                foreach (string sd in sendersTyping)
                {
                    if (sd.Equals(sender))
                    {
                        return;
                    }
                }
                sendersTyping.Add(sender);
                NotifyChanged("TypingMessage");
            });

            socket.On("done_typing", (arg) =>
            {
                JObject data  = (JObject)arg;
                string sender = data.GetValue("sender").ToString();
                string roomId = data.GetValue("room_id").ToString();

                //if user is not in the room that occur event, then return
                if (!currentRoom.ID.Equals(roomId))
                {
                    return;
                }

                sendersTyping.Remove(sender);
                NotifyChanged("TypingMessage");
            });
        }