Пример #1
0
        public ArrayList GetAllRoomList()
        {
            ArrayList roomList = new ArrayList();

            createConnection();

            comm.CommandText = "SELECT * FROM room"; //모든 현재 생성된 방의 목록을 가져옴

            using (myReader = comm.ExecuteReader()) {
                while (myReader.Read())
                {
                    RoomDTO roomDTO = new RoomDTO();

                    roomDTO.No         = Int32.Parse(myReader["no"].ToString());
                    roomDTO.Name       = myReader["name"].ToString();
                    roomDTO.Id         = myReader["id"].ToString();
                    roomDTO.CreateTime = myReader["createtime"].ToString();
                    roomDTO.IpAddress  = myReader["ipaddress"].ToString();



                    roomList.Add(roomDTO);
                }
            }
            comm.Dispose();
            conn.Close();

            return(roomList);
        }
Пример #2
0
        private void btn_createRoom_Click(object sender, EventArgs e)
        {
            // MessageBox.Show(this.GetRealIpAddress().ToString());
            RoomDAO roomDAO = new RoomDAO();

            this.roomDTO = new RoomDTO();

            if (txtbox_roomName.Text == "")
            {
                MessageBox.Show("방 이름을 입력하셔야 합니다.", "방 이름 입력", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }


            // 폴더 생성하는 로직 추가

            roomDTO.IpAddress  = this.GetRealIpAddress().ToString(); // 현재 컴퓨터의 IP 주소를 구함
            roomDTO.Name       = this.txtbox_roomName.Text;
            roomDTO.CreateTime = DateTime.Now.ToString("yyyy-MM-dd HH-mm-ss");
            roomDTO.Id         = this.userDTO.Id;

            roomDAO.CreateRoom(roomDTO); // 방을 생성하는데 필요한 roomDTO를 보냄

            this.DialogResult = DialogResult.OK;
            this.Close();
        }
Пример #3
0
        private void roomTile_Click(object sender, EventArgs e)
        {
            // 해당 타일을 클릭하는 경우, 즉 학생이 접속하는 경우에 해당
            Button joinRoom_tile = (MetroTile)sender;
            int    joinRoomNo    = Int32.Parse(joinRoom_tile.Name.Split('_')[1]); // 클릭한 타일의 Name 값에 방 번호가 저장되어 있음

            if (this.userDTO.Accessno == 1)                                       // 교수는 다른 방에 들어가지 못하도록 우선적으로 막음.
            {
                MessageBox.Show("학생만 다른 방에 들어갈 수 있습니다.", "방 들어가기", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }


            DialogResult stuFormResult;
            RoomDAO      roomDAO     = new RoomDAO();
            RoomDTO      joinRoomDTO = new RoomDTO();

            joinRoomDTO = roomDAO.GetJoinRoomDTO(joinRoomNo);

            if (!joinRoomDTO.Name.Equals(""))
            {
                using (StudentDownloadForm studentDownloadForm = new StudentDownloadForm(userDTO, joinRoomDTO))
                {
                    stuFormResult = studentDownloadForm.ShowDialog();
                }
                // 학생이 방에 들어가는 로직을 만들어야 함.
                // 여기는 학생이 로그인 시 userDTO를 같이 넘겨줘야함
            }
            else
            {
                MessageBox.Show("해당 방은 없는 방입니다. 방 목록을 새로고침 합니다.", "알림", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                ShowAllRoomList();
            }
        }
Пример #4
0
        public void RemoveRoom(RoomDTO roomDTO)
        {
            createConnection();

            comm.CommandText = "DELETE FROM room WHERE id=@id";

            comm.Parameters.AddWithValue("@id", roomDTO.Id);

            comm.ExecuteNonQuery();


            comm.Dispose();
            conn.Close();
        }
Пример #5
0
        private void btn_createRoom_Click(object sender, EventArgs e)
        {
            // 방을 생성하는 경우는 교수자만 생성이 가능하므로 해당 로직은 교수자 방 생성 로직


            CreateRoom createRoomForm = new CreateRoom(this.userDTO);
            var        result         = createRoomForm.ShowDialog();


            if (result == DialogResult.OK)
            {
                MetroTile tile = new MetroTile();

                RoomDTO roomDTO = createRoomForm.GetRoomDTO();

                tile.Width  = 141;
                tile.Height = 86;

                tile.Name = $"roomTile_{roomDTO.No}_{roomDTO.Name}";

                tile.Text      = roomDTO.Name;
                tile.TextAlign = ContentAlignment.TopLeft;

                tile.Click += new EventHandler(this.roomTile_Click); // 방 생성시 학생이 입장이 가능하도록 이벤트 핸들러 설정
                this.roomListPanel.Controls.Add(tile);

                // MessageBox.Show("방이 생성되었습니다.", "방 생성 완료", MessageBoxButtons.OK, MessageBoxIcon.Information);

                using (ProfessorUploadForm professorUploadForm = new ProfessorUploadForm())
                {
                    var professorFormResult = professorUploadForm.ShowDialog();
                    // 사용이 끝나고 나면 해당 방이 없어지는 구조

                    if (professorFormResult == DialogResult.OK)
                    {
                        this.roomListPanel.Controls.Remove(tile); // 내가 만든 것만 컨트롤을 지워버림

                        RoomDAO roomDAO = new RoomDAO();
                        roomDAO.RemoveRoom(roomDTO); // 데이터베이스 상에서도 지워버림
                    }
                }
            }
        }
Пример #6
0
        public void CreateRoom(RoomDTO roomDTO)
        {
            createConnection();

            comm.CommandText = "SELECT MAX(no) FROM room";

            int maxRoomno = 0;

            using (myReader = comm.ExecuteReader())
            {
                while (myReader.Read())
                {
                    maxRoomno = (myReader.IsDBNull(0)) ? 1 : Int32.Parse(myReader["MAX(no)"].ToString());
                }
            } // 방 번호 할당


            roomDTO.No = maxRoomno + 1;

            comm.CommandText = "INSERT INTO room VALUES(@no, @name, @id, @createtime, @ipaddress)";

            comm.Parameters.AddWithValue("@no", roomDTO.No);
            comm.Parameters.AddWithValue("@name", roomDTO.Name);
            comm.Parameters.AddWithValue("@id", roomDTO.Id);
            comm.Parameters.AddWithValue("@createtime", roomDTO.CreateTime);
            comm.Parameters.AddWithValue("@ipaddress", roomDTO.IpAddress);

            int result = this.comm.ExecuteNonQuery();

            if (result > -1)
            {
                MessageBox.Show("방이 정상적으로 생성이 되었습니다.", "방 생성 완료", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                MessageBox.Show("error : 방이 생성되지 않았습니다.", "방 생성 실패", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }


            comm.Dispose();
            conn.Close();
        }
Пример #7
0
        public RoomDTO GetJoinRoomDTO(int roomNo)
        {
            createConnection();

            comm.CommandText = "SELECT * FROM room WHERE no = @no";
            comm.Parameters.AddWithValue("@no", roomNo);


            using (myReader = comm.ExecuteReader())
            {
                RoomDTO roomDTO = new RoomDTO();

                if (myReader.Read())
                {
                    roomDTO.No         = Int32.Parse(myReader["no"].ToString());
                    roomDTO.Id         = myReader["id"].ToString();
                    roomDTO.Name       = myReader["name"].ToString();
                    roomDTO.CreateTime = myReader["createtime"].ToString();
                    roomDTO.IpAddress  = myReader["ipaddress"].ToString();
                }

                return(roomDTO);
            }
        }
Пример #8
0
 public StudentDownloadForm(UserDTO userDTO, RoomDTO joinRoomDTO)
 {
     InitializeComponent();
     this.userDTO     = userDTO; // 학생 정보를 가지고 옴
     this.joinRoomDTO = joinRoomDTO;
 }