コード例 #1
0
ファイル: RewardService.cs プロジェクト: JTux/ChoreTrackerAPI
        public RequestResponse GetRewardDetailResponseByID(int rewardId)
        {
            var reward = _context.Rewards.Find(rewardId);

            if (reward == null)
            {
                return(BadResponse("Invalid Reward ID."));
            }

            var userMembership = reward.Group.GroupMembers.FirstOrDefault(gm => gm.UserId == _userId.ToString());

            if (userMembership == null || !userMembership.IsAccepted)
            {
                return(BadResponse("Invalid permissions."));
            }

            var rewardDetail = new RewardDetail
            {
                RewardId        = reward.RewardId,
                RewardName      = reward.RewardName,
                Cost            = reward.Cost,
                NumberAvailable = reward.NumberAvailable,
                GroupId         = reward.GroupId
            };

            return(OkModelResponse("Reward found successfully.", rewardDetail));
        }
コード例 #2
0
    public void Init(RewardDetail _rewardDetail, System.Action _onClose = null)
    {
        rewardDetail            = _rewardDetail;
        imgReward.sprite        = rewardDetail.itemInfo.icon;
        textRewardQuantity.text = "+" + MyConstant.GetMoneyString(_rewardDetail.quantity, 999999);
        textSubmitButton.text   = MyLocalize.GetString("Global/Claim");
        textTitle.text          = MyLocalize.GetString("Global/Congratulations");
        onClose = _onClose;
        CoreGameManager.instance.RegisterNewCallbackPressBackKey(Close);

        Show();
    }
コード例 #3
0
    IEnumerator DoActionCreatePopupReward(RewardDetail _rewardDetail)
    {
        bool _isFinished = false;
        PopupRewardController _tmpPopup = LeanPool.Spawn(popupRewardPrefab.transform, Vector3.zero, Quaternion.identity, pool.transform).GetComponent <PopupRewardController>();

        _tmpPopup.Init(_rewardDetail, () => {
            RemovePopupActive(_tmpPopup);
            _isFinished = true;
        });
        MyAudioManager.instance.PlaySfx(PopupManager.Instance.myInfoAudio.sfx_PopupReward);
        AddPopupActive(_tmpPopup);
        yield return(new WaitUntil(() => _isFinished));
    }
コード例 #4
0
    // public Coroutine SetCheckAfterGetFirstData(){
    //     return StartCoroutine(DoActionCheckAfterGetFirstData());
    // }

    // IEnumerator DoActionCheckAfterGetFirstData(){
    //     IAPManager.instance.CheckWhenLogin();
    //     yield return Yielders.Get(1f);
    //     ShowAnnouncement();
    // }

    /*/IEnumerator DoActionGetFirstData(){
     #if TEST
     *  Debug.Log(">>> Get Sub Server Detail!");
     #endif
     *  bool _isFinished = false;
     *  bool _canTestSubSv = false;
     *
     *  OneHitAPI.GetSubServerDetailAndData((_messageReceiving, _error) =>
     *  {
     *      if (_messageReceiving != null)
     *      {
     *          long _featureVersion = _messageReceiving.readLong(); // nhỏ hơn giá trị này --> thông báo update
     #if TEST
     *          Debug.Log(">>> Version: " + _featureVersion + " - " + MyConstant.featureVersionCore);
     #endif
     *          if (MyConstant.featureVersionCore < _featureVersion)
     *          {
     *              DataManager.instance.haveNewVersion = true;
     *          }
     *          DataManager.instance.announcement = _messageReceiving.readString();
     *
     *          // ------------- GoldDaily ------------- //
     *          sbyte _numberGoldDaily = _messageReceiving.readByte();
     *          List<RewardDetail> _tmpListRewards = new List<RewardDetail>();
     *          for (int i = 0; i < _numberGoldDaily; i++)
     *          {
     *              long _goldDaily = _messageReceiving.readLong();
     *              RewardDetail _reward = new RewardDetail(IItemInfo.ItemType.Gold, _goldDaily);
     *              _tmpListRewards.Add(_reward);
     *          }
     *          DataManager.instance.dailyRewardData.listRewards = _tmpListRewards;
     *          // ------------------------------------- //
     *
     *          // ------------- Leaderboard ------------- //
     *          long _currentMilisecondTimeUpdateTop = _messageReceiving.readLong();
     *          sbyte _numberTop = _messageReceiving.readByte();
     *          List<UserData> _listTopGold = new List<UserData>();
     *          for(int i = 0; i < _numberTop; i ++){
     *              UserData _userData = new UserData();
     *              _userData.InitData();
     *              _userData.GetMoreUserData(_messageReceiving);
     *              _listTopGold.Add(_userData);
     *          }
     *          System.DateTime _start = new System.DateTime(1970, 1, 1, 0, 0, 0, System.DateTimeKind.Utc);
     *                  DataManager.instance.leaderboardData.lastTimeUpdateTop = _start.AddMilliseconds(_currentMilisecondTimeUpdateTop).ToLocalTime();
     *          DataManager.instance.leaderboardData.topGold = _listTopGold;
     *          DataManager.instance.leaderboardData.SortListTopGoldAgain();
     *          // --------------------------------------- //
     *
     *          // ------------- List Sub Server ------------- //
     *          short _numberSubServer = _messageReceiving.readShort();
     *          List<SubServerDetail> _tmpListSubSv = new List<SubServerDetail>();
     *          if (_numberSubServer > 0){
     *              for (int i = 0; i < _numberSubServer; i++){
     *                  SubServerDetail _tmpSubSvDetail = new SubServerDetail(_messageReceiving);
     *                  _tmpListSubSv.Add(_tmpSubSvDetail);
     *              }
     *          }
     *          DataManager.instance.subServerData.LoadDataFromSv(_tmpListSubSv);
     *          // --------------------------------------- //
     *
     *          // ------------- RoomDetail ------------- //
     *          List<TemporaryServerDetail> _tmpListTemporaryServerDetail = new List<TemporaryServerDetail>();
     *          short _numberRoomDetail = _messageReceiving.readShort();
     *          for(int i = 0; i < _numberRoomDetail; i ++){
     *              TemporaryServerDetail _tmpServerDetail = new TemporaryServerDetail(_messageReceiving);
     *              _tmpListTemporaryServerDetail.Add(_tmpServerDetail);
     *          }
     *          DataManager.instance.temporaryServerData.listDetail = _tmpListTemporaryServerDetail;
     *
     *          for(int i = 0; i < DataManager.instance.miniGameData.listMiniGameDetail.Count; i++){
     *              MiniGameDetail _gameDetail = DataManager.instance.miniGameData.listMiniGameDetail[i];
     *              if(!_gameDetail.myInfo.isSubGame){
     *                  // _gameDetail.SetUpRoomDataAgain();
     *              }
     *          }
     *          // --------------------------------------- //
     *          _canTestSubSv = true;
     *      }
     *      else
     *      {
     #if TEST
     *          Debug.LogError(">>> GetSubServerDetailAndData Error Code: " + _error);
     #endif
     *
     *          // for(int i = 0; i < DataManager.instance.miniGameData.listMiniGameDetail.Count; i++){
     *          //     MiniGameDetail _gameDetail = DataManager.instance.miniGameData.listMiniGameDetail[i];
     *          //     if(!_gameDetail.myInfo.isSubGame
     *          //         && _gameDetail.roomData.listRoomServerDetail.Count == 0){
     *          //         _gameDetail.SetUpRoomDataAgain();
     *          //     }
     *          // }
     *      }
     *      _isFinished = true;
     *  });
     *  yield return new WaitUntil(() => _isFinished);
     *
     *  if(_canTestSubSv){
     *      NetworkGlobal.instance.TestSub(DataManager.instance.subServerData.listSubServerDetail, ()=>{
     *          DataManager.instance.subServerData.SortListSubServerAgain();
     *          if(HomeManager.instance != null){
     *              if (!string.IsNullOrEmpty(DataManager.instance.announcement)){
     *                  List<string> _listAnnouncement = new List<string>();
     *                  _listAnnouncement.Add(DataManager.instance.announcement);
     *                  HomeManager.instance.announcement.InitData(_listAnnouncement);
     *                  HomeManager.instance.announcement.Show();
     *              }
     *              if (DataManager.instance.userData.userId != 0){
     *                  HomeManager.instance.LoadDataGoldGemFromServer();
     *              }
     *          }
     *          IAPManager.instance.CheckWhenLogin();
     *      });
     *  }else{
     *      DataManager.instance.subServerData.SortListSubServerAgain();
     *      if(CoreGameManager.instance.currentSceneManager != null
     *          && CoreGameManager.instance.currentSceneManager.mySceneType == IMySceneManager.Type.Home){
     *          if (!string.IsNullOrEmpty(DataManager.instance.announcement)){
     *              List<string> _listAnnouncement = new List<string>();
     *              _listAnnouncement.Add(DataManager.instance.announcement);
     *              announcement.InitData(_listAnnouncement);
     *              announcement.Show();
     *          }
     *      }
     *  }
     * }*/

    void InitGoldDailyData(MessageReceiving _mess)
    {
        sbyte _numberGoldDaily = _mess.readByte();
        List <RewardDetail> _tmpListRewards = new List <RewardDetail>();

        for (int i = 0; i < _numberGoldDaily; i++)
        {
            long         _goldDaily = _mess.readLong();
            RewardDetail _reward    = new RewardDetail(IItemInfo.ItemType.Gold, _goldDaily);
            _tmpListRewards.Add(_reward);
        }
        DataManager.instance.dailyRewardData.listRewards = _tmpListRewards;
    }
コード例 #5
0
    public Coroutine CreatePopupReward(RewardDetail _rewardDetail)
    {
        if (myCanvas.worldCamera == null && CoreGameManager.instance.currentSceneManager != null)
        {
            myCanvas.worldCamera = CoreGameManager.instance.currentSceneManager.cameraForConsumableScreen.mainCamera;
        }
        else
        {
            myCanvas.worldCamera = Camera.main;
        }

        myCanvasGroup.alpha          = 1f;
        myCanvasGroup.blocksRaycasts = true;

        return(StartCoroutine(DoActionCreatePopupReward(_rewardDetail)));
    }
コード例 #6
0
    public void InitData(int _indexDay, RewardDetail _rewardDetail, System.Action _onRecieveReward)
    {
        currentState = State.CanNotClaim;
        if (_indexDay < DataManager.instance.dailyRewardData.listRewards.Count)
        {
            txtDay.text = MyLocalize.GetString("Global/Day") + " " + (_indexDay + 1);
        }
        else
        {
            txtDay.text = MyLocalize.GetString("Global/Day") + " " + (DataManager.instance.dailyRewardData.listRewards.Count) + "+";
        }

        rewardDetail     = _rewardDetail;
        txtQuantity.text = "+" + MyConstant.GetMoneyString(rewardDetail.quantity, 9999);
        imgReward.sprite = _rewardDetail.itemInfo.icon;
        onRecieveReward  = _onRecieveReward;

        timeCanPress = System.DateTime.Now;
    }
コード例 #7
0
    public InstallAppDetail(MessageReceiving _mess)
    {
        int _id = _mess.readInt();

        packageName   = _mess.readString();
        textkeySearch = _mess.readString();
        int count_install     = _mess.readInt();
        int sum_install       = _mess.readInt();
        int money_pay_to_user = _mess.readInt();

        isRating        = _mess.readBoolean();
        textTitle       = _mess.readString();
        textDescription = _mess.readString();
        linkIcon        = _mess.readString();
        timeKeep        = _mess.readLong();
        linkReport      = _mess.readString();

        currentState      = State.None;
        timeToGetReward   = DateTime.MinValue;
        reward            = new RewardDetail(IItemInfo.ItemType.Gold, money_pay_to_user);
        messRecieveReward = null;
    }
コード例 #8
0
    public void SendMessageToServer(SubServerDetail _serverDetail, System.Action <List <RewardDetail> > _onSucceed, System.Action _onFinished, bool _sendInSilent = false)
    {
        if (isDone)
        {
            return;
        }
                #if UNITY_ANDROID
        OneHitAPI.IAP_Android(_serverDetail, screenPurchase, productId, tokenPurchase, (_messageReceiving, _error) => {
            if (_messageReceiving != null)
            {
                sbyte _caseCheck = _messageReceiving.readByte();
                if (_caseCheck == 1 || _caseCheck < -100)
                {
                    if (_caseCheck == 1)
                    {
                        long _goldAdd = _messageReceiving.readLong();
                        DataManager.instance.userData.gold = _messageReceiving.readLong();
                        if (_onSucceed != null)
                        {
                            IAPProductDetail _productDetail = DataManager.instance.IAPProductData.GetProductDetail(productId);
                            if (_productDetail == null)
                            {
                                                                #if TEST
                                Debug.LogError(">>> productDetail is null in data: " + productId);
                                                                #endif
                            }

                            List <RewardDetail> _tmplistRewardDetail = new List <RewardDetail>();
                            RewardDetail _rewardDetail = new RewardDetail(IItemInfo.ItemType.Gold, _goldAdd);
                            _tmplistRewardDetail.Add(_rewardDetail);

                            _onSucceed(_tmplistRewardDetail);
                        }
                    }
                    else
                    {
                                                #if TEST
                        Debug.LogError(">>> IAP_Android Trường hợp check case = " + _caseCheck);
                                                #endif
                    }
                    isDone = true;
                }
                else
                {
                    // #if TEST
                    // Debug.LogError(">>> IAP_Android can not Purchase: " + _caseCheck);
                    // #endif
                    // private static final byte STATUS_PURCHASE_OK=1;
                    // private static final byte STATUS_REFUND=-122;
                    // private static final byte STATUS_ERROR_PURCHASE_PROCESSED_DaXuLyRoi=-125;
                    // private static final byte STATUS_DATABASE_ERROR_1=-21;
                    // private static final byte STATUS_VERIFY_PURCHASE_GOOGLE_API_ERROR=-22;
                    // private static final byte STATUS_ERROR_GOLD_MAIN=-23;
                    // private static final byte STATUS_VALIDATE_ERROR=-24;
                    // private static final byte STATUS_PLAYER_ERROR=-25;
                    if (_caseCheck == -22)
                    {
                        string _tmp = _messageReceiving.readString();
                                                #if TEST
                        Debug.LogError(">>> Error IAP_Android: STATUS_VERIFY_PURCHASE_GOOGLE_API_ERROR - " + _tmp);
                                                #endif
                    }
                    if (!_sendInSilent)
                    {
                        PopupManager.Instance.CreatePopupMessage(MyLocalize.GetString(MyLocalize.kError)
                                                                 , MyLocalize.GetString("Error/IAP_CanNotPurchase")
                                                                 , _caseCheck.ToString()
                                                                 , MyLocalize.GetString(MyLocalize.kOk));
                    }
                    else
                    {
                                                #if TEST
                        Debug.LogError(">>> Error IAP_Android: " + MyLocalize.GetString("Error/IAP_CanNotPurchase") + " - " + _caseCheck);
                                                #endif
                    }
                }
            }
            else
            {
                // #if TEST
                // Debug.LogError(">>> IAP_Android Error Code: " + _error);
                // #endif

                /* 1/ Thông báo : lỗi network --> show nut refresh
                 * 2/ Thông báo : hông được clear dữ liệu + nếu tắt ứng dụng ngay lúc này thì : lần kết nối sau sẽ tự động cộng tiền khi có kết nối với server
                 */
                if (!_sendInSilent)
                {
                    PopupManager.Instance.CreatePopupDialog(MyLocalize.GetString(MyLocalize.kError)
                                                            , MyLocalize.GetString("Error/IAP_PurchaseUnsuccessful")
                                                            , _error.ToString()
                                                            , MyLocalize.GetString(MyLocalize.kTryAgain)
                                                            , MyLocalize.GetString(MyLocalize.kOk)
                                                            , () => { SendMessageToServer(_serverDetail, _onSucceed, _onFinished); }
                                                            , () => {
                        // IAP_Warning_CloseConnectToSv
                        PopupManager.Instance.CreatePopupMessage(MyLocalize.GetString(MyLocalize.kWarning)
                                                                 , MyLocalize.GetString("System/IAP_Warning_CloseConnectToSv")
                                                                 , string.Empty
                                                                 , MyLocalize.GetString(MyLocalize.kOk));
                    });
                }
                else
                {
                                        #if TEST
                    Debug.LogError(">>> Error IAP_Android: " + MyLocalize.GetString("Error/IAP_PurchaseUnsuccessful") + " - " + _error);
                                        #endif
                }
            }
            if (_onFinished != null)
            {
                _onFinished();
            }
        });
                #elif UNITY_IOS
        //TODO: Chưa làm cho IOS
        Debug.Log("Chưa làm");
                #endif
    }
コード例 #9
0
    public void RecieveReward(System.Action _onRecieveRewardSuccessfully, System.Action _onClearData)
    {
        LoadingCanvasController.instance.Show(1f);
        OneHitAPI.Forward_Bonus_AndroidInstall_Commit(packageName, (_messageReceiving, _error) => {
            LoadingCanvasController.instance.Hide();
            if (_messageReceiving != null)
            {
                sbyte _caseCheck = _messageReceiving.readByte(); // (nếu 1 thì đọc tiếp)
                bool _tmpFlag    = false;
                if (_caseCheck == 1)
                {
                    int _goldAdd     = _messageReceiving.readInt();
                    long _goldResult = _messageReceiving.readLong();

                    DataManager.instance.userData.gold = _goldResult;

                    RewardDetail _reward = new RewardDetail(IItemInfo.ItemType.Gold, _goldAdd);
                    PopupManager.Instance.CreatePopupReward(_reward);

                    if (_onRecieveRewardSuccessfully != null)
                    {
                        _onRecieveRewardSuccessfully();
                    }

                    _tmpFlag = true;
                }
                else
                {
                    switch (_caseCheck)
                    {
                    case -1: // nhiệm vụ không còn tồn tại (clear data)
                        PopupManager.Instance.CreatePopupMessage(MyLocalize.GetString(MyLocalize.kWarning)
                                                                 , MyLocalize.GetString("Error/InstallApp_Error_1")
                                                                 , _caseCheck.ToString()
                                                                 , MyLocalize.GetString(MyLocalize.kOk));
                        _tmpFlag = true;
                        break;

                    case -2: // lỗi không load được database tracking cài đặt
                        PopupManager.Instance.CreatePopupMessage(MyLocalize.GetString(MyLocalize.kWarning)
                                                                 , MyLocalize.GetString("Error/InstallApp_Error_2")
                                                                 , _caseCheck.ToString()
                                                                 , MyLocalize.GetString(MyLocalize.kOk));
                        break;

                    case -3: // đã nhận thưởng rồi (clear data)
                        PopupManager.Instance.CreatePopupMessage(MyLocalize.GetString(MyLocalize.kWarning)
                                                                 , MyLocalize.GetString("Error/InstallApp_Error_3")
                                                                 , _caseCheck.ToString()
                                                                 , MyLocalize.GetString(MyLocalize.kOk));
                        _tmpFlag = true;
                        break;

                    case -4: // nhiệm vụ hết hạn (clear data)
                        PopupManager.Instance.CreatePopupMessage(MyLocalize.GetString(MyLocalize.kWarning)
                                                                 , MyLocalize.GetString("Error/InstallApp_Error_4")
                                                                 , _caseCheck.ToString()
                                                                 , MyLocalize.GetString(MyLocalize.kOk));
                        _tmpFlag = true;
                        break;

                    case -5: // không lấy được thông tin người chơi (user này chưa đăng ký)
                        PopupManager.Instance.CreatePopupMessage(MyLocalize.GetString(MyLocalize.kWarning)
                                                                 , MyLocalize.GetString("Error/InstallApp_Error_5")
                                                                 , _caseCheck.ToString()
                                                                 , MyLocalize.GetString(MyLocalize.kOk));
                        break;

                    default:
                        #if TEST
                        Debug.LogError("Forward_Bonus_AndroidInstall_Commit other error from sever: " + _caseCheck);
                        #endif
                        break;
                    }
                }
                if (_tmpFlag)
                {
                    currentState = State.Done;
                    if (myOriginalDetail != null)
                    {
                        myOriginalDetail.currentState = State.Done;
                    }
                    if (_onClearData != null)
                    {
                        _onClearData();
                    }
                }
            }
            else
            {
                                #if TEST
                Debug.LogError("RecieveReward InstallApp Reward error: " + _error);
                                #endif
            }
        });
    }
コード例 #10
0
    public void RecieveReward(MessageReceiving _messageReceiving, System.Action <sbyte> _onRecieveCaseCheck = null)
    {
        string _debug     = string.Empty;
        sbyte  _caseCheck = _messageReceiving.readByte();

        _debug += _caseCheck + "|";
        switch (_caseCheck)
        {
        case -1:         // tài khoản không tồn tại
                        #if TEST
            Debug.LogError(">>> Tài khoản không tồn tại");
                        #endif
            break;

        case -2:         // chưa đến lúc nhận thưởng
                        #if TEST
            Debug.LogError(">>> Chưa đến lúc nhận thưởng. Cập nhật lại!");
                        #endif
            currentDayLogin              = _messageReceiving.readByte();
            lastTimeRecieved             = MyConstant.currentTimeMilliseconds;
            timeCountDownToReceiveReward = _messageReceiving.readLong();
            nextTimeRecieved             = lastTimeRecieved + timeCountDownToReceiveReward;
            timeToGetReward              = DateTime.Now.AddMilliseconds(timeCountDownToReceiveReward);

            timeCountDownToReset = _messageReceiving.readLong();
            timeToReset          = DateTime.Now.AddMilliseconds(timeCountDownToReset);

            _debug += timeCountDownToReceiveReward + "|" + timeCountDownToReset + "|" + currentDayLogin;
            break;

        case 1:         // nhận thưởng thành công
                        #if TEST
            Debug.Log(">>> Nhận thưởng thành công");
                        #endif
            lastDayLogin    = currentDayLogin;
            currentDayLogin = _messageReceiving.readByte();
            long _goldAdd    = _messageReceiving.readLong();
            long _goldResult = _messageReceiving.readLong();
            DataManager.instance.userData.gold = _goldResult;
            lastTimeRecieved             = MyConstant.currentTimeMilliseconds;
            timeCountDownToReceiveReward = _messageReceiving.readLong();
            nextTimeRecieved             = lastTimeRecieved + timeCountDownToReceiveReward;
            timeToGetReward = System.DateTime.Now.AddMilliseconds(timeCountDownToReceiveReward);

            timeCountDownToReset = _messageReceiving.readLong();
            timeToReset          = DateTime.Now.AddMilliseconds(timeCountDownToReset);

            _debug += timeCountDownToReceiveReward + "|" + timeCountDownToReset + "|" + currentDayLogin + "|" + _goldAdd + "|" + _goldResult;

            RewardDetail _rewardDetail = new RewardDetail(IItemInfo.ItemType.Gold, _goldAdd);
            PopupManager.Instance.CreatePopupReward(_rewardDetail);
            break;

        default:
                        #if TEST
            Debug.LogError("Không có casecheck này: " + _caseCheck);
                        #endif
            break;
        }
        if (_onRecieveCaseCheck != null)
        {
            _onRecieveCaseCheck(_caseCheck);
        }

                #if TEST
        Debug.Log(">>> GetGoldDaily Response : " + _debug);
                #endif
    }
コード例 #11
0
    public void RecieveReward(MessageReceiving _messageReceiving, System.Action <sbyte> _onRecieveCaseCheck = null)
    {
        // byte caseValue
        // Xét trường hợp : caseValue
        // -1 : tài khoảng không tồn tại
        // -2 : chưa đến lúc trợ cấp ⟶ đọc tiếp kiểu long : thời gian countDown nhận trợ cấp
        // -7 : số gold đang lớn hơn gold add ⟶ đọc tiếp goldAdd kiểu long
        // 1 hoặc 2 : trợ cấp thành công ⟶ đọc tiếp dữ liệu sau
        //      long gold_add : số gold được cộng
        //      long gold_result : số gold sau khi cộng
        //      long timeCountDown : thời gian reset trợ cấp
        //      byte countSubsidy : số trợ cấp đã nhận trong ngày

        string _debug     = string.Empty;
        sbyte  _caseCheck = _messageReceiving.readByte();
        long   _timeCountDownToReceiveReward = 0;
        long   _goldAdd = 0;
        long   _GOLD    = 0;

        _debug += _caseCheck + "|";
        switch (_caseCheck)
        {
        case -1:         // tài khoản không tồn tại
                        #if TEST
            Debug.LogError(">>> Tài khoản không tồn tại");
                        #endif
            break;

        case -2:         // chưa đến lúc nhận thưởng
                        #if TEST
            Debug.LogError(">>> Chưa đến lúc nhận thưởng. Cập nhật lại!");
                        #endif
            _timeCountDownToReceiveReward = _messageReceiving.readLong();
            Debug.LogError(">>>> " + _timeCountDownToReceiveReward);
            if (_timeCountDownToReceiveReward > 86400000)
            {
                                #if TEST
                Debug.LogError(">>> Bug tràn số : " + _timeCountDownToReceiveReward);
                                #endif
                _timeCountDownToReceiveReward = 86400000;
            }
            timeToGetReward = DateTime.Now.AddMilliseconds(_timeCountDownToReceiveReward);
            _debug         += _timeCountDownToReceiveReward + "|" + timeToGetReward;
            break;

        case -7:                                     // số gold đang lớn hơn gold add ⟶ đọc tiếp goldAdd kiểu long
            _goldAdd = _messageReceiving.readLong(); // số gold được cộng
            _GOLD    = _messageReceiving.readLong();
            _debug  += _goldAdd + "|" + _GOLD;
            PopupManager.Instance.CreatePopupMessage(
                MyLocalize.GetString(MyLocalize.kWarning)
                , string.Format(MyLocalize.GetString("System/Message_Subsidy_UnqualifiedClaim"), _goldAdd)
                , "-7"
                , MyLocalize.GetString(MyLocalize.kOk)
                , null);
            break;

        case 1:         // nhận thưởng thành công
        case 2:
                        #if TEST
            Debug.Log(">>> Nhận thưởng thành công");
                        #endif

            countGetSubsidy = _messageReceiving.readByte();               // số trợ cấp đã nhận trong ngày
            _timeCountDownToReceiveReward = _messageReceiving.readLong(); // thời gian reset trợ cấp
            if (_timeCountDownToReceiveReward > 86400000)
            {
                                #if TEST
                Debug.LogError(">>> Bug tràn số : " + _timeCountDownToReceiveReward);
                                #endif
                _timeCountDownToReceiveReward = 86400000;
            }
            timeToGetReward = System.DateTime.Now.AddMilliseconds(_timeCountDownToReceiveReward);

            _goldAdd = _messageReceiving.readLong();          // số gold được cộng
            _GOLD    = _messageReceiving.readLong();          // số gold sau khi cộng

            DataManager.instance.userData.gold = _GOLD;

            _debug += _timeCountDownToReceiveReward + "|" + timeToGetReward + "|" + countGetSubsidy + "|" + _goldAdd + "|" + _GOLD;

            RewardDetail _rewardDetail = new RewardDetail(IItemInfo.ItemType.Gold, _goldAdd);
            PopupManager.Instance.CreatePopupReward(_rewardDetail);
            break;

        default:
                        #if TEST
            Debug.LogError("Không có casecheck này: " + _caseCheck);
                        #endif
            break;
        }
        if (_onRecieveCaseCheck != null)
        {
            _onRecieveCaseCheck(_caseCheck);
        }

                #if TEST
        Debug.Log(">>> GetSubsidy Response : " + _debug);
                #endif
    }