Beispiel #1
0
        /// <summary>
        /// Returns true if InlineResponseDefault2Value instances are equal
        /// </summary>
        /// <param name="other">Instance of InlineResponseDefault2Value to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(InlineResponseDefault2Value other)
        {
            if (ReferenceEquals(null, other))
            {
                return(false);
            }
            if (ReferenceEquals(this, other))
            {
                return(true);
            }

            return
                ((
                     OdataEtag == other.OdataEtag ||
                     OdataEtag != null &&
                     OdataEtag.Equals(other.OdataEtag)
                     ) &&
                 (
                     OwneridValue == other.OwneridValue ||
                     OwneridValue != null &&
                     OwneridValue.Equals(other.OwneridValue)
                 ) &&
                 (
                     ProcessidValue == other.ProcessidValue ||
                     ProcessidValue != null &&
                     ProcessidValue.Equals(other.ProcessidValue)
                 ) &&
                 (
                     Owningbusinessunit == other.Owningbusinessunit ||
                     Owningbusinessunit != null &&
                     Owningbusinessunit.Equals(other.Owningbusinessunit)
                 ) &&
                 (
                     Stagename == other.Stagename ||
                     Stagename != null &&
                     Stagename.Equals(other.Stagename)
                 ) &&
                 (
                     Primaryentitytypecode == other.Primaryentitytypecode ||
                     Primaryentitytypecode != null &&
                     Primaryentitytypecode.Equals(other.Primaryentitytypecode)
                 ) &&
                 (
                     Clientdata == other.Clientdata ||
                     Clientdata != null &&
                     Clientdata.SequenceEqual(other.Clientdata)
                 ) &&
                 (
                     Processstageid == other.Processstageid ||
                     Processstageid != null &&
                     Processstageid.Equals(other.Processstageid)
                 ) &&
                 (
                     Stagecategory == other.Stagecategory ||
                     Stagecategory != null &&
                     Stagecategory.Equals(other.Stagecategory)
                 ));
        }
Beispiel #2
0
 /// <summary>
 /// Gets the hash code
 /// </summary>
 /// <returns>Hash code</returns>
 public override int GetHashCode()
 {
     unchecked // Overflow is fine, just wrap
     {
         var hashCode = 41;
         // Suitable nullity checks etc, of course :)
         if (OdataEtag != null)
         {
             hashCode = hashCode * 59 + OdataEtag.GetHashCode();
         }
         if (OwneridValue != null)
         {
             hashCode = hashCode * 59 + OwneridValue.GetHashCode();
         }
         if (ProcessidValue != null)
         {
             hashCode = hashCode * 59 + ProcessidValue.GetHashCode();
         }
         if (Owningbusinessunit != null)
         {
             hashCode = hashCode * 59 + Owningbusinessunit.GetHashCode();
         }
         if (Stagename != null)
         {
             hashCode = hashCode * 59 + Stagename.GetHashCode();
         }
         if (Primaryentitytypecode != null)
         {
             hashCode = hashCode * 59 + Primaryentitytypecode.GetHashCode();
         }
         if (Clientdata != null)
         {
             hashCode = hashCode * 59 + Clientdata.GetHashCode();
         }
         if (Processstageid != null)
         {
             hashCode = hashCode * 59 + Processstageid.GetHashCode();
         }
         if (Stagecategory != null)
         {
             hashCode = hashCode * 59 + Stagecategory.GetHashCode();
         }
         return(hashCode);
     }
 }
Beispiel #3
0
        public override List <SocketData> responseMessage(Socket socket, TCPmessage receivemessage)
        {
            List <SocketData> sendclient  = new List <SocketData>();
            TCPmessage        sendmessage = new TCPmessage();

            this.jsonHelp = new JsonHelp();
            switch (receivemessage.command)
            {
            case Command.login:
                Dictionary <string, string> logininfo  = jsonHelp.getidinfo(receivemessage.message);
                Dictionary <string, string> logininfo2 = jsonHelp.getpasswordinfo(receivemessage.message);
                string id       = logininfo[JsonName.ID];
                string password = logininfo2[JsonName.Password];

                bool idcheck    = dBhelp.IsexistID(id);
                bool passcheck  = dBhelp.IsExistPassword(password);
                bool validlogin = dBhelp.validLogin(id, password);

                if (!idcheck && !validlogin)
                {
                    sendmessage.check = 0;
                }
                if (!passcheck && !validlogin)
                {
                    sendmessage.check = 1;
                }
                if (validlogin)
                {
                    bool duplicate = false;
                    lock (clientlistinlock)                  //중복로그인되면 안되니까(이거잘 모르겠다ㅇㅇ)
                    {
                        foreach (Clientdata c in clientlist) //중복로그인 방지
                        {
                            if (c.id == id)
                            {
                                duplicate = true;
                                break;
                            }
                        }
                    }
                    if (duplicate)     //중복로그인
                    {
                        sendmessage.check = 4;
                    }
                    else
                    {
                        lock (clientlistinlock)
                        {
                            clientlist.Add(new Clientdata(socket, id));     //서버에 login을 했으니 정보를 추가해줘야함
                        }
                        int    usernumber = dBhelp.Getusernumber(id);
                        string nickname   = dBhelp.Getnickname(usernumber);
                        sendmessage.Usernumber = usernumber;
                        sendmessage.message    = jsonHelp.nickinfo(nickname);
                        sendmessage.check      = 2;
                        // java test code
                    }
                }
                if (!idcheck && !passcheck)
                {
                    sendmessage.check = 3;
                }

                sendmessage.command = Command.login;
                sendclient.Add(new SocketData(socket, sendmessage));
                break;

            case Command.Join:
                Dictionary <string, string> Joinid       = jsonHelp.getidinfo(receivemessage.message);
                Dictionary <string, string> Joinpassword = jsonHelp.getpasswordinfo(receivemessage.message);
                Dictionary <string, string> Joinnickname = jsonHelp.getnickinfo(receivemessage.message);
                Dictionary <string, string> Joinphone    = jsonHelp.getphoneinfo(receivemessage.message);
                string joinid         = Joinid[JsonName.ID];
                string joinpassword   = Joinpassword[JsonName.Password];
                string joinnickname   = Joinnickname[JsonName.Nickname];
                string joinphone      = Joinphone[JsonName.Phone];
                int    joinusernumber = dBhelp.Getjoinusernumber();
                if (!dBhelp.IsexistID(joinid))
                {
                    dBhelp.join(joinid, joinpassword, joinnickname, joinphone, joinusernumber);
                    sendmessage.check = 1;     //회원가입되었다는것을 의미
                }
                else
                {
                    sendmessage.check = 0;
                }
                sendmessage.command = Command.Join;
                sendclient.Add(new SocketData(socket, sendmessage));
                break;

            case Command.Idcheck:
                Dictionary <string, string> idinfo = jsonHelp.getidinfo(receivemessage.message);
                string checkid = idinfo[JsonName.ID];
                if (!dBhelp.IsexistID(checkid))
                {
                    sendmessage.check = 1;
                }
                else
                {
                    sendmessage.check = 0;
                }
                sendmessage.command = Command.Idcheck;
                sendclient.Add(new SocketData(socket, sendmessage));
                break;

            case Command.Nicknamecheck:
                Dictionary <string, string> nickinfo = jsonHelp.getnickinfo(receivemessage.message);
                string checknickname = nickinfo[JsonName.Nickname];
                if (!dBhelp.Isexistnickname(checknickname))
                {
                    sendmessage.check = 1;
                }
                else
                {
                    sendmessage.check = 0;
                }
                sendmessage.command = Command.Nicknamecheck;
                sendclient.Add(new SocketData(socket, sendmessage));
                break;

            case Command.logout:
                Dictionary <string, string> logoutinfo = jsonHelp.getnickinfo(receivemessage.message);
                string logoutnickname = logoutinfo[JsonName.Nickname];
                if (logoutnickname != string.Empty)
                {
                    string     logoutid   = dBhelp.Getid(logoutnickname);
                    Clientdata LogoutData = clientlist.Find(x => (x.id == logoutid));
                    //sendmessage.command = Command.logout;
                    //sendclient.Add(new SocketData(socket, sendmessage));
                    lock (clientlistoutlock)
                    {
                        clientlist.Remove(LogoutData);
                    }
                }
                break;

            case Command.Findid:
                Dictionary <string, string> findidinfo = jsonHelp.getidinfo(receivemessage.message);
                string findid = findidinfo[JsonName.ID];
                Dictionary <string, string> findphoneinfo = jsonHelp.getphoneinfo(receivemessage.message);
                string findphone = findphoneinfo[JsonName.Phone];
                if (dBhelp.IsexistID(findid) && dBhelp.Getphone(findid) == findphone)
                {
                    string findpassword = dBhelp.Findpass(findid);
                    sendmessage.message = jsonHelp.logininfo(findid, findpassword);
                    sendmessage.check   = 1;
                }
                else
                {
                    sendmessage.check = 0;
                }
                sendmessage.command = Command.Findid;
                sendclient.Add(new SocketData(socket, sendmessage));
                break;

            case Command.Plusfriend:
                Dictionary <string, string> plusidinfo1 = jsonHelp.getidinfo(receivemessage.message);
                string userid = plusidinfo1[JsonName.ID];
                Dictionary <string, string> plusidinfo2 = jsonHelp.getFnickinfo(receivemessage.message);
                string plusid = plusidinfo2[JsonName.FID];
                if (dBhelp.IsexistID(plusid)) // 아이디의 존재유무만 체크했지 아직 친구추가의 중복부분은 처리안함, 그 부분을 서버에서 가지고있어야함 친구목록을
                {
                    if (plusid == userid)     //추가하려는 아이디가 동일한경우
                    {
                        sendmessage.check = 2;
                    }
                    else if (!dBhelp.Plusid(plusid, userid))     //이미 친구를 추가한 아이디인 경우
                    {
                        sendmessage.check = 3;
                    }
                    else
                    {
                        //친구를 추가하려는데, 그 친구가 차단을 한경우, 추가하려는데 이미 차단이 되어있는친구인경우
                        bool blockplusfriend  = dBhelp.Isexistblock(dBhelp.Getnickname(plusid), dBhelp.Getnickname(userid));
                        bool blockplusfriend2 = dBhelp.Isexistblock(dBhelp.Getnickname(userid), dBhelp.Getnickname(plusid));
                        if (!blockplusfriend && !blockplusfriend2)     //나도 차단은 안했어야 함
                        {
                            string usernickname = dBhelp.Getnickname(userid);
                            string plusnickname = dBhelp.Getnickname(plusid);
                            dBhelp.plusfriend(userid, usernickname, plusid, plusnickname, 0);    //DB에 친구추가
                            sendmessage.message = jsonHelp.nickinfo(plusnickname);
                            sendmessage.check   = 1;
                        }
                        else
                        {
                            string usernickname = dBhelp.Getnickname(userid);
                            string plusnickname = dBhelp.Getnickname(plusid);
                            if (blockplusfriend2)     //본인이 차단한경우
                            {
                                sendmessage.check = 5;
                            }
                            else
                            {
                                sendmessage.check = 4;      // 추가하려는 친구가 차단함
                            }
                        }
                    }
                }
                else     //아이디가 존재하지 않는 경우
                {
                    sendmessage.check = 0;
                }
                sendmessage.command = Command.Plusfriend;
                sendclient.Add(new SocketData(socket, sendmessage));
                break;

            case Command.Refresh:
                // 본인이 차단한 사람은 친구목록에서 뜨면 안된다.
                Dictionary <string, string> refreshinfo = jsonHelp.getnickinfo(receivemessage.message);
                string   refreshnickname = refreshinfo[JsonName.Nickname];
                int      refreshcnt      = dBhelp.Refreshfriendcount(refreshnickname); //nickname의 친구명수
                string[] fnickarray      = dBhelp.Refreshnickarray(refreshnickname);
                sendmessage.command     = Command.Refresh;
                sendmessage.message     = jsonHelp.Refreshnickarrayinfo(fnickarray);
                sendmessage.Friendcount = refreshcnt;
                sendclient.Add(new SocketData(socket, sendmessage));
                break;

            case Command.Removefriend:
                Dictionary <string, string> dusernickname = jsonHelp.getnickinfo(receivemessage.message);
                string   rusernickname   = dusernickname[JsonName.Nickname];
                string[] removenickarray = jsonHelp.getdeletenickarrayinfo(receivemessage.message);
                for (int i = 0; i < removenickarray.Length; i++)
                {
                    dBhelp.deletenickarray(rusernickname, removenickarray[i]);
                }
                sendmessage.command = Command.Removefriend;
                sendmessage.check   = 1;
                sendclient.Add(new SocketData(socket, sendmessage));
                break;

            case Command.Makechat:
                Dictionary <string, string> makechatnickname = jsonHelp.getnickinfo(receivemessage.message);
                string        musernickname = makechatnickname[JsonName.Nickname];
                List <string> makenickarray = jsonHelp.getmakechatnickarrayinfo(receivemessage.message);
                // 0. 방개설 요청한 닉네임으로부터 현재 친구로 등록되어있는지를 확인
                // 1. 요청한 닉네임, 요청당한 닉네임들이 모두 로그인되어있는지를 확인
                // 2. chattinglist에서 같은 닉네임들로 형성된 방이 있는지를 체크
                // 3. 채팅방 개설
                // 4. 초대한 친구들중 차단한 사람이 존재 하는지?
                // 5. 초대한 친구들중 내가 차단한 사람은 있는지(이거 아직 구현안함,안해도됨)
                string[] currentFriendlist = dBhelp.Refreshnickarray(musernickname);
                bool     notregistered     = false;
                bool     alllogin          = true;
                bool     roompossible      = false;
                bool     nochatMake        = false;
                for (int i = 0; i < makenickarray.Count; i++)
                {
                    bool check = currentFriendlist.Contains(makenickarray[i]);
                    if (!check)
                    {
                        notregistered = true;
                        break;
                    }
                }
                if (notregistered)     //0번의 경우로 채팅방 개설 실패
                {
                    sendmessage.check   = 0;
                    sendmessage.command = Command.Makechat;
                    sendclient.Add(new SocketData(socket, sendmessage));
                }
                else
                {
                    //초대한 사람중에 차단한 사람이 존재하는지 -> 이거 그냥 Blockfriendlist쓰면됨(수정다시)
                    for (int i = 0; i < currentFriendlist.Length; i++)
                    {
                        bool blockMakechatcheck = dBhelp.Isexistblock(currentFriendlist[i], musernickname);
                        if (blockMakechatcheck == true)
                        {
                            nochatMake = true;
                            break;
                        }
                    }
                    if (nochatMake)
                    {
                        sendmessage.check   = 4;
                        sendmessage.command = Command.Makechat;
                        sendclient.Add(new SocketData(socket, sendmessage));
                    }
                    else
                    {
                        lock (clientlistinlock)     //로그인관련 lock
                        {
                            //1번을 체크(요청당한 닉네임들을 체크)
                            for (int i = 0; i < makenickarray.Count; i++)
                            {
                                bool check = clientlist.Exists(x => x.id == makenickarray[i]);
                                if (!check)
                                {
                                    alllogin = false;
                                    break;
                                }
                            }
                            if (alllogin)
                            {
                                lock (clientlistoutlock)     //로그아웃관련 lock
                                {
                                    lock (chattinglistlock)  //채팅리스트관련 lock -> 다른곳에서 수정못하게
                                    {
                                        bool roomcheck = false;
                                        makenickarray.Add(musernickname);
                                        int makenickcnt = makenickarray.Count;
                                        for (int i = 0; i < chattinglist.Count; i++)
                                        {
                                            List <string> currentroommembers = chattinglist[i].chatnickarray;
                                            int           cnt = 0;
                                            for (int j = 0; j < currentroommembers.Count; j++)
                                            {
                                                bool same = makenickarray.Contains(currentroommembers[j]);
                                                if (same)
                                                {
                                                    cnt++;
                                                }
                                            }
                                            if (cnt == makenickcnt && currentroommembers.Count == makenickarray.Count)
                                            {
                                                roomcheck = true;
                                                break;
                                            }
                                        }
                                        if (roomcheck)     //동일한 채팅방존재
                                        {
                                            roompossible        = true;
                                            sendmessage.check   = 2;
                                            sendmessage.command = Command.Makechat;
                                            sendclient.Add(new SocketData(socket, sendmessage));
                                        }
                                        else
                                        {
                                            //채팅방개설(초대된 닉네임을 매칭시켜서 걔네한테 뿌리면됨
                                            int newchatnumber = 0;
                                            newchatnumber = chattinglist.Count + 1;
                                            //makenickarray.Add(musernickname);
                                            chattinglist.Add(new Chattingdata(newchatnumber, makenickarray));
                                            sendmessage.command    = Command.Makechat;
                                            sendmessage.Chatnumber = newchatnumber;
                                            sendmessage.check      = 3;
                                            List <Clientdata> tempsend = new List <Clientdata>();
                                            for (int i = 0; i < makenickarray.Count; i++)
                                            {
                                                string     makeid = dBhelp.Getid(makenickarray[i]);
                                                Clientdata client = clientlist.Find(x => x.id == makeid);
                                                if (client != null)
                                                {
                                                    tempsend.Add(client);
                                                }
                                            }
                                            for (int i = 0; i < tempsend.Count; i++)
                                            {
                                                sendclient.Add(new SocketData(tempsend[i].socket, sendmessage));     //수신자,(송신자도 포함) 송신
                                            }
                                        }
                                    }
                                }
                            }
                            else     //로그인 모두가 들어오지않음
                            {
                                sendmessage.check   = 1;
                                sendmessage.command = Command.Makechat;
                                sendclient.Add(new SocketData(socket, sendmessage));
                            }
                        }
                    }
                }
                break;

            case Command.Sendchat:
                Dictionary <string, string> sendnick = jsonHelp.getnickinfo(receivemessage.message);
                string sendchatnickname             = sendnick[JsonName.Nickname];
                Dictionary <string, string> Message = jsonHelp.getmessageinfo(receivemessage.message);
                string sendMessage    = Message[JsonName.Message];
                int    sendchatnumber = receivemessage.Chatnumber;
                string sendmessageid  = dBhelp.Getid(sendchatnickname);    //보낸놈 아이디
                sendmessage.command    = Command.Sendchat;
                sendmessage.Chatnumber = receivemessage.Chatnumber;
                sendmessage.message    = jsonHelp.Sendchatinfo(sendMessage, sendchatnickname);
                lock (chattinglistlock)
                {
                    // 채팅방찾기 -> 보낼 정보들 가져오기->clientlist에서 찾기(socket정보, 그리고 sendmessage에 같이 담아서 보냄)
                    for (int i = 0; i < chattinglist.Count; i++)
                    {
                        if (sendchatnumber == chattinglist[i].chatnumber)
                        {
                            List <string> sendchatnickarray = chattinglist[i].chatnickarray;
                            for (int j = 0; j < sendchatnickarray.Count; j++)
                            {
                                string     sendid = dBhelp.Getid(sendchatnickarray[j]);
                                Clientdata c      = clientlist.Find(x => x.id == sendid);
                                if (c != null && sendid != sendmessageid)
                                {
                                    sendclient.Add(new SocketData(c.socket, sendmessage));
                                }
                            }
                            break;
                        }
                    }
                }
                break;

            case Command.Outchat:
                Dictionary <string, string> Outchatnickname = jsonHelp.getnickinfo(receivemessage.message);
                string     outchatnickname = Outchatnickname[JsonName.Nickname];
                int        chatnumber = receivemessage.Chatnumber;
                string     outchatid = dBhelp.Getid(outchatnickname);
                int        oidx = -1, idx = -1;
                TCPmessage outsendmessage = new TCPmessage();
                outsendmessage.check      = 1; // 방을 나갈사람
                outsendmessage.Chatnumber = chatnumber;
                outsendmessage.command    = Command.Outchat;
                lock (clientlistoutlock)
                {
                    Clientdata clientdata = clientlist.Find(x => x.id == outchatid);
                    if (clientdata != null)
                    {
                        sendclient.Add(new SocketData(clientdata.socket, outsendmessage));
                    }
                    lock (chattinglistlock)
                    {
                        for (int i = 0; i < chattinglist.Count; i++)
                        {
                            if (chatnumber == chattinglist[i].chatnumber)     //방번호찾기
                            {
                                oidx = i;
                                List <string> outchattinglist = chattinglist[i].chatnickarray;
                                for (int j = 0; j < outchattinglist.Count; j++)
                                {
                                    if (outchatnickname == outchattinglist[j])
                                    {
                                        idx = j;     //채팅방을 나가는 인덱스
                                        break;
                                    }
                                }
                                if (idx != -1)
                                {
                                    chattinglist[oidx].chatnickarray.RemoveAt(idx);
                                }
                                break;
                            }
                        }
                        sendmessage.command    = Command.Outchat;
                        sendmessage.Chatnumber = chatnumber;
                        sendmessage.check      = 0; // 방에 남아있는 사람들
                        sendmessage.message    = jsonHelp.nickinfo(outchatnickname);
                        for (int i = 0; i < chattinglist[oidx].chatnickarray.Count; i++)
                        {
                            string     outsendid = dBhelp.Getid(chattinglist[oidx].chatnickarray[i]);
                            Clientdata outc      = clientlist.Find(x => x.id == outsendid);
                            if (outc != null)
                            {
                                sendclient.Add(new SocketData(outc.socket, sendmessage));
                            }
                        }
                    }
                }

                break;

            case Command.Joinchat:
                Dictionary <string, string> Joinchatid = jsonHelp.getidinfo(receivemessage.message);
                string joinedchatid = Joinchatid[JsonName.ID];                 //초대를 당한놈
                Dictionary <string, string> Joinchatnickname = jsonHelp.getnickinfo(receivemessage.message);
                string joinchatnickname = Joinchatnickname[JsonName.Nickname]; //초대를 하는 사람
                int    joinchatnumber   = receivemessage.Chatnumber;
                int    jidx             = -1;
                if (!dBhelp.IsexistID(joinedchatid))     //아이디가 존재하는지
                {
                    sendmessage.check   = 2;
                    sendmessage.command = Command.Joinchat;
                    sendclient.Add(new SocketData(socket, sendmessage));
                }
                else if (joinedchatid == dBhelp.Getid(joinchatnickname))     //초대하려는 사람과 초대당하는 사람이 일치하는지
                {
                    sendmessage.check   = 3;
                    sendmessage.command = Command.Joinchat;
                    sendclient.Add(new SocketData(socket, sendmessage));
                }
                else
                {
                    lock (clientlistoutlock) {     //로그아웃관련lock
                        Clientdata JoinData      = clientlist.Find(x => x.id == joinedchatid);
                        Clientdata checkJoindata = clientlist.Find(x => x.id == dBhelp.Getid(joinchatnickname));
                        if (checkJoindata == null)         //초대한놈이 로그아웃됨
                        {
                            sendmessage.check   = 6;
                            sendmessage.command = Command.Joinchat;
                            sendclient.Add(new SocketData(socket, sendmessage));
                        }
                        else if (JoinData == null)         //초대당한놈이 로그아웃됨
                        {
                            sendmessage.check   = 0;
                            sendmessage.command = Command.Joinchat;
                            sendclient.Add(new SocketData(socket, sendmessage));
                        }
                        else
                        {
                            lock (chattinglistlock)
                            {
                                bool joinno = false;
                                for (int i = 0; i < chattinglist.Count; i++)
                                {
                                    if (joinchatnumber == chattinglist[i].chatnumber)
                                    {
                                        jidx = i;
                                        for (int j = 0; j < chattinglist[i].chatnickarray.Count; j++)
                                        {
                                            if (chattinglist[i].chatnickarray[j] == dBhelp.Getnickname(joinedchatid))
                                            {
                                                joinno = true;
                                                break;
                                            }
                                        }
                                        break;
                                    }
                                }
                                if (joinno)
                                {
                                    sendmessage.check   = 4;
                                    sendmessage.command = Command.Joinchat;
                                    sendclient.Add(new SocketData(socket, sendmessage));
                                }
                                else
                                {
                                    if (!dBhelp.Isexistblock(dBhelp.Getnickname(joinedchatid), joinchatnickname) && !dBhelp.Isexistblock(joinchatnickname, dBhelp.Getnickname(joinedchatid))) //로그인이 되어있거나, 친구차단을안했거나
                                    {
                                        TCPmessage joinsendmessage = new TCPmessage();                                                                                                        //초대받는 친구에게는 따로 command를 보내야함
                                        joinsendmessage.Chatnumber = joinchatnumber;
                                        joinsendmessage.command    = Command.ReceiveJoinchat;
                                        joinsendmessage.check      = 1;
                                        sendclient.Add(new SocketData(JoinData.socket, joinsendmessage));
                                        // 초대를 한 당사자는 초대ok된 메시지도 오는거고, 초대가 완료되었다는 메시지도 감
                                        sendmessage.command    = Command.Joinchat;
                                        sendmessage.Chatnumber = joinchatnumber;
                                        sendmessage.message    = jsonHelp.nickinfo(dBhelp.Getnickname(joinedchatid));
                                        sendmessage.check      = 1;                                      //만약 친구거부를 안했다면, 오케이(아직 자세하게는 예외처리 안함)
                                        for (int i = 0; i < chattinglist[jidx].chatnickarray.Count; i++) //기존에 있는방의 멤버들
                                        {
                                            string     joinsendid = chattinglist[jidx].chatnickarray[i];
                                            Clientdata joinc      = clientlist.Find(x => x.id == joinsendid);
                                            if (joinc != null)
                                            {
                                                sendclient.Add(new SocketData(joinc.socket, sendmessage));
                                            }
                                        }
                                        chattinglist[jidx].chatnickarray.Add(dBhelp.Getnickname(joinedchatid));     //초대당한놈
                                    }
                                    else
                                    {
                                        sendmessage.check   = 5;
                                        sendmessage.command = Command.Joinchat;
                                        sendclient.Add(new SocketData(socket, sendmessage));
                                    }
                                }
                            }
                        }
                    }
                }
                break;

            case Command.Blockfriend:     //그냥 DB(test.Blockfriendlist쓰자), 왜냐하면 친구가 구지 아니어도 친구차단을 할수도있으니
                Dictionary <string, string> Blockedid        = jsonHelp.getidinfo(receivemessage.message);
                Dictionary <string, string> Blockingnickname = jsonHelp.getnickinfo(receivemessage.message);
                string blockedid        = Blockedid[JsonName.ID];
                string blockingnickname = Blockingnickname[JsonName.Nickname];
                bool   blockcheck       = dBhelp.IsexistID(blockedid);
                if (!blockcheck)
                {
                    sendmessage.check   = 0;
                    sendmessage.command = Command.Blockfriend;
                }
                else if (blockcheck && blockedid == dBhelp.Getid(blockingnickname))     //일치하는경우
                {
                    sendmessage.check   = 2;
                    sendmessage.command = Command.Blockfriend;
                }
                else if (dBhelp.Isexistblock(blockingnickname, dBhelp.Getnickname(blockedid)))     //이미 기록이 있는경우
                {
                    sendmessage.check   = 3;
                    sendmessage.command = Command.Blockfriend;
                }
                else
                {
                    sendmessage.check   = 1;
                    sendmessage.command = Command.Blockfriend;
                    sendmessage.message = jsonHelp.nickinfo(dBhelp.Getnickname(blockedid));
                    dBhelp.Blockfriend(blockingnickname, dBhelp.Getnickname(blockedid));
                    if (dBhelp.Isexistfriend(blockingnickname, dBhelp.Getnickname(blockedid)))   //만약 친구목록이 존재한다면 update로 block을 1로 변경
                    {
                        dBhelp.Updateblock(blockingnickname, dBhelp.Getnickname(blockedid));     //update
                    }
                }
                sendclient.Add(new SocketData(socket, sendmessage));
                break;

            case Command.NotBlockfriend:
                Dictionary <string, string> NotBlockedid        = jsonHelp.getidinfo(receivemessage.message);
                Dictionary <string, string> NotBlockingnickname = jsonHelp.getnickinfo(receivemessage.message);
                string notblockedid        = NotBlockedid[JsonName.ID];
                string notblockingnickname = NotBlockingnickname[JsonName.Nickname];
                bool   notblockcheck       = dBhelp.IsexistID(notblockedid);
                if (!notblockcheck)
                {
                    sendmessage.check   = 0;
                    sendmessage.command = Command.NotBlockfriend;
                }
                else if (notblockcheck && notblockedid == dBhelp.Getid(notblockingnickname))     //일치하는경우
                {
                    sendmessage.check   = 2;
                    sendmessage.command = Command.NotBlockfriend;
                }
                else if (!dBhelp.Isexistblock(notblockingnickname, dBhelp.Getnickname(notblockedid)))     //이미 해제가 되어있는경우
                {
                    sendmessage.check   = 3;
                    sendmessage.command = Command.NotBlockfriend;
                }
                else
                {
                    if (!dBhelp.Isexistblockfriend(notblockingnickname, dBhelp.Getnickname(notblockedid)))     //친구목록이 없는경우
                    {
                        sendmessage.check = 1;
                        dBhelp.deleteBlockfriend(notblockingnickname, dBhelp.Getnickname(notblockedid));     //차단해제
                        sendmessage.command = Command.NotBlockfriend;
                    }
                    else     //친구목록이 있는 경우, test.friendlist에서 복구를 해야함
                    {
                        sendmessage.check = 4;
                        dBhelp.deleteBlockfriend(notblockingnickname, dBhelp.Getnickname(notblockedid));  //차단해제
                        dBhelp.Updatenotblock(notblockingnickname, dBhelp.Getnickname(notblockedid));     //Block해제
                        sendmessage.message = jsonHelp.nickinfo(dBhelp.Getnickname(notblockedid));
                        sendmessage.command = Command.NotBlockfriend;
                    }
                }
                sendclient.Add(new SocketData(socket, sendmessage));

                break;

            case Command.Refreshchatnickarray:
                Dictionary <string, string> Refreshchatnickname = jsonHelp.getnickinfo(receivemessage.message);
                string refreshchatnickname = Refreshchatnickname[JsonName.Nickname];
                int    refreshchatnumber   = receivemessage.Chatnumber;
                sendmessage.command = Command.Refreshchatnickarray;
                List <string> refreshchatlist = new List <string>();
                lock (chattinglistlock)
                {
                    for (int i = 0; i < chattinglist.Count; i++)
                    {
                        if (chattinglist[i].chatnumber == refreshchatnumber)
                        {
                            for (int j = 0; j < chattinglist[i].chatnickarray.Count; j++)
                            {
                                if (refreshchatnickname == chattinglist[i].chatnickarray[j])
                                {
                                    continue;
                                }
                                else
                                {
                                    refreshchatlist.Add(chattinglist[i].chatnickarray[j]);
                                }
                            }
                            break;
                        }
                    }
                }
                sendmessage.message    = jsonHelp.Refreshchatnickarrayinfo(refreshchatlist);
                sendmessage.Chatnumber = refreshchatnumber;
                sendclient.Add(new SocketData(socket, sendmessage));
                break;

            case Command.Changeroomname:
                Dictionary <string, string> ChangeRoomname   = jsonHelp.getchangeroomnameinfo(receivemessage.message);
                Dictionary <string, string> Checkoutnickname = jsonHelp.getnickinfo(receivemessage.message);
                string changeroomname   = ChangeRoomname[JsonName.Roomname];
                string checkoutnickname = Checkoutnickname[JsonName.Nickname];
                int    changeroomnumber = receivemessage.Chatnumber;
                lock (clientlistoutlock)
                {
                    if (clientlist.Exists(x => x.id == dBhelp.Getid(checkoutnickname)))
                    {
                        sendmessage.command    = Command.Changeroomname;
                        sendmessage.message    = jsonHelp.roomnameinfo(changeroomname);
                        sendmessage.Chatnumber = changeroomnumber;
                        sendmessage.check      = 1;
                        sendclient.Add(new SocketData(socket, sendmessage));
                    }
                    else
                    {
                        sendmessage.command = Command.Changeroomname;
                        sendmessage.check   = 0;
                        sendclient.Add(new SocketData(socket, sendmessage));
                    }
                }
                break;
            }

            return(sendclient);
        }