示例#1
0
        public string mknum(string jobYear, string departmer, string position)
        {



            //부서 순서대로 0,1,2,3   직책 순서대로 0,1,2,3

            string mem_num = null;//사원번호 넣을 변수
            Random rand_num = new Random();
            int tmpRand;

            mem_num += jobYear;//사원번호

           
            switch (departmer)
            {
                case "영업팀":
                    mem_num += "0";
                    break;
                case "개발팀":
                    mem_num += "1";
                    break;
                case "본부팀":
                    mem_num += "2";
                    break;
                case "설비팀":
                    mem_num += "3";
                    break;
            }

            switch (position)
            {
                case "사원":
                    mem_num += "0";
                    break;
                case "선임":
                    mem_num += "1";
                    break;
                case "책임":
                    mem_num += "2";
                    break;
                case "사장":
                    mem_num += "3";
                    break;
            }

            //mem_num += departmer;//부서
            //mem_num += position;//직책  --> 이까지하면 ex)201712 정도가됨. 뒷 3자리는 이후생성.

            while (true)
            {
                string temp = mem_num;

                tmpRand = rand_num.Next(0, 999);//렌덤값 3자리 생성

                temp += tmpRand;

                mapperDB testDB = new mapperDB(); //DB연결을 위해 DB클레스 변수 선언.

                if (testDB.selectNumber(temp))//생성된 사원번호가 이미 존재한다.
                {
                    continue;//재생성을위해 진행
                }
                else//존재하지 않는다.
                {
                    mem_num = temp;
                    break;
                }
            }

            return mem_num;//생성된 사원번호 반환.
        }
示例#2
0
        public void chat()      //각종 기능들 코딩할 공간.--------------------------------------------------------------------------------
        {
            bool joinQ = false; //회원가입시 플레그

            MessageDB msDB = new MessageDB();


            string firstQ;    //최초신호받을 변수
            //MessageDB msDB=new MessageDB();
            string streamStr; //실시간 메시지 받을 변수


            //클라이언트의 데이터를 읽고, 쓰기 위한 스트림을 만든다.
            stream = new NetworkStream(socket);
            Encoding encode = Encoding.GetEncoding("utf-8");

            reader = new StreamReader(stream, encode);
            writer = new StreamWriter(stream, encode)
            {
                AutoFlush = true
            };


            try
            {
                while (true)
                {
                    //최초 신호 받아오기.
                    firstQ = reader.ReadLine();

                    if (firstQ == "회원가입")                               //회원가입을 한다는 신호가 왔을 경우
                    {
                        makeMember_num mknum    = new makeMember_num(); //사원번호를 만들기위한 클레스 변수 선언.
                        mapperDB       joinDB   = new mapperDB();       //회원가입 정보를 DB에 넣기위한 클레스 변수 선언.
                        memDB          insertDB = new memDB();
                        //이름 비밀번호 직책 부서 입사년도 사원번호 세션 부재메시지 구독자

                        while (true)
                        {
                            streamStr = reader.ReadLine();


                            string[] split = streamStr.Split(new String[] { "/" }, StringSplitOptions.None);// '/'를 기준으로 문자열을 나눠 배열에 저장함.

                            if (split[0] == "")
                            {
                                writer.WriteLine("이름오류");
                                //처리
                                continue;
                            }
                            else
                            {
                                insertDB.mem_name = split[0];

                                if (split[1] == "")
                                {
                                    writer.WriteLine("비밀번호를 넣어주세요");
                                    continue;
                                }
                                else
                                {
                                    insertDB.mem_password = split[1];

                                    if (split[2] == "")
                                    {
                                        writer.WriteLine("직책을 넣어주세요");
                                        //처리
                                        continue;
                                    }
                                    else
                                    {
                                        insertDB.mem_position = split[2];

                                        if (split[3] == "")
                                        {
                                            writer.WriteLine("부서을 넣어주세요");
                                            //처리
                                            continue;
                                        }
                                        else
                                        {
                                            insertDB.mem_department = split[3];

                                            if (split[4] == "")
                                            {
                                                writer.WriteLine("입사년도");
                                                //처리
                                                continue;
                                            }
                                            else
                                            {
                                                insertDB.mem_jobyear = int.Parse(split[4]);
                                                insertDB.mem_number  = mknum.mknum(insertDB.mem_jobyear.ToString(), insertDB.mem_department.ToString(), insertDB.mem_position.ToString()); //사원번호 생성과 동시에 전달.

                                                try                                                                                                                                        //회원가입 성공
                                                {
                                                    joinDB.insertJoin(insertDB);                                                                                                           //회원가입 시도.
                                                    writer.WriteLine("성공");
                                                    writer.WriteLine(insertDB.mem_number);
                                                    MyVariables.join_member = insertDB.mem_name + "(" + insertDB.mem_number + ")";
                                                }
                                                catch//회원가입 실패
                                                {
                                                    writer.WriteLine("회원가입 실패 코드오류");
                                                }

                                                stream.Close();
                                            }
                                        }
                                    }
                                }
                            }
                            break;
                        }


                        //stream.Close();
                        socket_close("socket");//실험
                        joinQ = true;
                    }
                    else if (firstQ == "로그인")
                    {                                       //로그인 한다는 신호가 왔을 경우
                        memDB    selectDB = new memDB();
                        mapperDB login    = new mapperDB(); // 로그인 정보를 DB에서 가져오기 위한 클레스 변수 선언.

                        //로그인 할 정보를 받아옴
                        streamStr = reader.ReadLine();

                        // '/'이거 기준으로 스플릿. selectDB.사원번호 / 비번 <= 가져온거 집어넣기
                        string[] split = streamStr.Split(new String[] { "/" }, StringSplitOptions.None);

                        selectDB.mem_number   = split[0];
                        selectDB.mem_password = split[1];

                        try                                               //로그인 성공
                        {
                            bool log_check = login.selectlogin(selectDB); //id 존재 유무 확인.
                            if (log_check)
                            {
                                writer.WriteLine("로그인 성공");
                                mem_num      = split[0];
                                msDB.mem_num = mem_num;

                                MyVariables.temp_number = mem_num; //현재 접속한 사람.
                                MyVariables.mem_cnt++;             //접속자 수 +1

                                break;
                            }
                            else
                            {
                                writer.WriteLine("다시 시도");
                                firstQ = reader.ReadLine();
                            }
                        }
                        catch//로그인 오류
                        {
                            writer.WriteLine("로그인 실패 코드오류");
                        }
                        //writer.WriteLine("로그인 완료");
                    }

                    if (MyVariables.end_flag)
                    {
                        break;//모든 흐름 종료하기위한 플레그
                    }
                }


                //-------------------------------------여기까지함.스트림을 크게 한개 더연결해야 할듯하다.(성공)


                while (true) //로그인 후 지속적인 stream 기능을 구현할 공간.//검색기능, 전송기능, 구독기능 등등
                {
                    if (MyVariables.end_flag)
                    {
                        break;//모든 흐름 종료하기위한 플레그
                    }

                    if (joinQ)
                    {
                        break;
                    }


                    string   str   = reader.ReadLine(); //클라이언트한태 메시시 수신
                    string[] split = str.Split(new String[] { "/" }, StringSplitOptions.None);
                    //0: 신호 , 1: 메시지 내용

                    if (split[0] == "전송")
                    {
                        msDB.insertMessage(split[1]);//전송받은 내용을 사원번호, 시간, 내용, 구독자수 로 구성하여 repository DB에넣음.
                        writer.WriteLine("성공");
                    }
                    else if (str == "검색")
                    {
                        List <string> getsublist = new List <string>();
                        string        listData   = "";

                        //검색기능
                        mapperDB searchDB = new mapperDB();//회원가입 정보를 DB에 넣기위한 클레스 변수 선언.


                        // 입력값 받아옴
                        string getName       = reader.ReadLine();
                        string getPosition   = reader.ReadLine();
                        string getDeaprtment = reader.ReadLine();

                        try
                        {
                            // 검색함수 돌려서 나온값 넣기
                            getsublist = searchDB.selectSearchName(getName, getPosition, getDeaprtment);
                            for (int i = 0; i < getsublist.Count; i++)
                            {
                                listData += getsublist[i];
                                // listData라는 변수에 리스트값을 다 더해서 넣어버림
                            }
                            writer.WriteLine(listData);
                            // listData 클라이언트쪽으로 반환
                        }
                        catch
                        {
                            writer.WriteLine("실패 코드오류");
                        }
                    }
                    else if (str == "구독취소")
                    {
                        string        getCheckData = "";
                        string        getMemNumber = mem_num;
                        List <string> sucessCheck  = new List <string>();
                        string        listData     = "";
                        mapperDB      subDB        = new mapperDB();
                        memDB         selectDB     = new memDB();
                        getCheckData = reader.ReadLine();
                        try
                        {
                            sucessCheck = subDB.Findthendelete(getCheckData, getMemNumber);
                            for (int i = 0; i < sucessCheck.Count; i++)
                            {
                                listData += sucessCheck[i];
                                // listData라는 변수에 리스트값을 다 더해서 넣어버림
                            }
                            writer.WriteLine(listData);
                            // listData 클라이언트쪽으로 반환
                        }
                        catch
                        {
                            writer.WriteLine("실패 코드오류");
                        }
                    }
                    else if (str == "구독")
                    {
                        string        getCheckData = "";
                        string        getMemNumber = mem_num;
                        List <string> sucessCheck  = new List <string>();
                        string        listData     = "";
                        mapperDB      subDB        = new mapperDB();
                        memDB         selectDB     = new memDB();
                        getCheckData = reader.ReadLine();
                        try
                        {
                            sucessCheck = subDB.insertSub(getCheckData, getMemNumber);
                            for (int i = 0; i < sucessCheck.Count; i++)
                            {
                                listData += sucessCheck[i];
                                // listData라는 변수에 리스트값을 다 더해서 넣어버림
                            }
                            writer.WriteLine(listData);
                            // listData 클라이언트쪽으로 반환
                        }
                        catch
                        {
                            writer.WriteLine("");
                        }
                    }

                    else if (str == "로그인구독목록")
                    {
                        string        getNumber       = reader.ReadLine();
                        string        listData        = "";
                        mapperDB      putDataToListDB = new mapperDB();
                        List <string> getsubedlist    = new List <string>();
                        try
                        {
                            getsubedlist = putDataToListDB.LoadFormPutData(getNumber);
                            for (int i = 0; i < getsubedlist.Count; i++)
                            {
                                listData += getsubedlist[i];
                                // listData라는 변수에 리스트값을 다 더해서 넣어버림
                            }
                            writer.WriteLine(listData);
                            // listData 클라이언트쪽으로 반환
                        }
                        catch
                        {
                            writer.WriteLine("실패 코드오류");
                        }
                    }
                    else
                    {
                        writer.WriteLine("실패");//테스트 디버깅
                    }
                }
                socket_close("socket");
            }
            catch (Exception e)
            {
                socket_close("socket");
            }
        }