/// <summary>
        /// Back to general chat
        /// </summary>
        /// <param name="user"></param>
        /// <param name="opponent"></param>
        public void BackToChat(string user, string opponent)
        {
            if (!string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(opponent))
            {
                try
                {
                    GameMng.DeleteGame(user, opponent);
                    GameMng.DeleteHowToFirst(user, opponent);

                    if (_callback.ContainsKey(user))
                    {
                        _callback[user].BackToChatFromServer(user, opponent);
                    }

                    if (_callback.ContainsKey(opponent))
                    {
                        _callback[opponent].BackToChatFromServer(opponent, user);
                    }
                }
                catch (Exception ex)
                {
                    _callback[user].RecieveError(ex.Message);
                    _callback[opponent].RecieveError(ex.Message);
                }
            }
        }
        public void RollHowFirstComp(string user, string computer)
        {
            if (!string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(computer))
            {
                var callback = OperationContext.Current.GetCallbackChannel <IClientCallback>();

                var arrayResult = GameMng.RollHowFirst(user, computer);

                var   number1      = int.Parse(arrayResult[0]);
                var   number2      = int.Parse(arrayResult[1]);
                int[] resultToSend = new int[2];

                resultToSend[0] = (number1 == 0) ? 1 : number1;
                resultToSend[1] = (number2 == 0) ? 1 : number2;

                //Send to User result of first roll
                _callback[user].RecieveRollHowFirst(user, computer, resultToSend);

                //Computer rolling
                arrayResult  = GameMng.RollHowFirst(computer, user);
                number1      = int.Parse(arrayResult[0]);
                number2      = int.Parse(arrayResult[1]);
                resultToSend = new int[2];

                resultToSend[0] = (number1 == 0) ? 1 : number1;
                resultToSend[1] = (number2 == 0) ? 1 : number2;

                //Send to User result of second roll
                _callback[user].RecieveRollHowFirst(user, computer, resultToSend);

                if (arrayResult[2] != string.Empty)
                {
                    var winnerName = arrayResult[2];
                    if (winnerName == user)
                    {
                        _callback[user].CloseHowToFirstFromServer(user, computer, true);
                        GameMng.DeleteHowToFirst(user, computer);
                        GameMng.AddGame(user, computer);
                    }
                    else
                    {
                        _callback[user].CloseHowToFirstFromServer(user, computer, false);
                        GameMng.DeleteHowToFirst(user, computer);
                        GameMng.AddGame(computer, user);
                        //MoveCheckerAuto(computer, user);
                    }
                }
                else
                {
                    if (number1 == number2)
                    {
                        _callback[user].GameInfoUpdateFromServer(computer, "The numbers are equals. Try again");
                    }
                }
            }
        }
        public void UserLeftGame(string userName, string opponentName)
        {
            if (!string.IsNullOrEmpty(userName) && !string.IsNullOrEmpty(opponentName))
            {
                var callback = OperationContext.Current.GetCallbackChannel <IClientCallback>();
                try
                {
                    BackToChat(opponentName, userName);

                    GameMng.DeleteHowToFirst(userName, opponentName);
                    GameMng.DeleteGame(userName, opponentName);
                }
                catch (Exception ex)
                {
                    callback.RecieveError(ex.Message);
                }
            }
        }
        public void RollHowFirst(string user, string opponent)
        {
            if (!string.IsNullOrEmpty(user) && !string.IsNullOrEmpty(opponent))
            {
                var callback = OperationContext.Current.GetCallbackChannel <IClientCallback>();
                try
                {
                    //lock (padlock)
                    //{
                    if (_callback.ContainsKey(user) && _callback.ContainsKey(opponent))
                    {
                        var arrayResult = GameMng.RollHowFirst(user, opponent);

                        var   number1      = int.Parse(arrayResult[0]);
                        var   number2      = int.Parse(arrayResult[1]);
                        int[] resultToSend = new int[2];

                        resultToSend[0] = (number1 == 0) ? 1 : number1;
                        resultToSend[1] = (number2 == 0) ? 1 : number2;

                        _callback[user].RecieveRollHowFirst(user, opponent, resultToSend);
                        _callback[opponent].RecieveRollHowFirst(opponent, user, resultToSend);

                        if (arrayResult[2] != string.Empty)
                        {
                            var winnerName = arrayResult[2];
                            if (winnerName == user)
                            {
                                _callback[user].CloseHowToFirstFromServer(user, opponent, true);
                                _callback[opponent].CloseHowToFirstFromServer(opponent, user, false);
                                GameMng.DeleteHowToFirst(user, opponent);
                            }
                            else
                            {
                                _callback[opponent].CloseHowToFirstFromServer(opponent, user, true);
                                _callback[user].CloseHowToFirstFromServer(user, opponent, false);
                                GameMng.DeleteHowToFirst(user, opponent);
                            }
                        }
                        else
                        {
                            if (number1 == number2)
                            {
                                _callback[user].GameInfoUpdateFromServer(opponent, "The numbers are equals. Try again");
                                _callback[opponent].GameInfoUpdateFromServer(user, "The numbers are equals. Try again");
                            }
                        }
                    }
                    else if (_callback.ContainsKey(user) && opponent == "autoPlayer")
                    {
                        RollHowFirstComp(user, opponent);
                    }

                    //}
                }
                catch (Exception ex)
                {
                    if (_callback.ContainsKey(user))
                    {
                        callback.RecieveError(ex.Message);
                    }
                    if (_callback.ContainsKey(opponent))
                    {
                        _callback[opponent].RecieveError(ex.Message);
                    }
                }
            }
        }