public void SetUp(TournamentObject tournament)
    {
        ApiManager.Instance.Database
        .GetAccountBalances(AuthorizationManager.Instance.UserData.FullAccount.Account.Id.Id, Array.ConvertAll(AuthorizationManager.Instance.UserData.FullAccount.Balances, balance => balance.AssetType.Id))
        .Then(accountBalances => {
            var data        = new LeaveFromTournamentData();
            data.tournament = tournament;
            data.account    = AuthorizationManager.Instance.UserData.FullAccount.Account.Id;
            currentData     = data;
            AssetData asset = null;
            foreach (var balance in accountBalances)
            {
                if (balance.Asset.Equals(currentData.tournament.Options.BuyIn.Asset))
                {
                    asset = balance;
                }
            }

            TournamentTransactionService.GenerateLeaveFromTournamentOperation(currentData)
            .Then(operation => {
                var feeAsset = SpaceTypeId.CreateOne(SpaceType.Asset);

                ApiManager.Instance.Database.GetRequiredFee(operation, feeAsset.Id)
                .Then(feeResult => {
                    Repository.GetInPromise <AssetObject>(feeResult.Asset)
                    .Then(assetData => {
                        buyinText.text              = tournament.Options.BuyIn.Amount / Math.Pow(10, assetData.Precision) + assetData.Symbol;
                        feeText.text                = feeResult.Amount / Math.Pow(10, assetData.Precision) + assetData.Symbol;
                        currentFee                  = feeResult.Amount;
                        currentOperation            = operation;
                        currentAccountBalanceObject = asset;

                        ApiManager.Instance.Database.GetAccount(tournament.Creator.Id)
                        .Then(creator => {
                            gameTitleText.text            = "ROCK, PAPER, SCISSORS";
                            creatorNameText.text          = Utils.GetFormatedString(creator.Name);
                            numberOfPlayersText.text      = data.tournament.Options.NumberOfPlayers.ToString();
                            winsAmountText.text           = data.tournament.Options.NumberOfWins.ToString();
                            registrationDeadlineText.text = data.tournament.Options.RegistrationDeadline.ToString("MMMM dd, yyyy hh:mmtt (z)").ToUpper();
                            Show();
                        });
                    })
                    .Catch(exception => OperationOnDone("There was a mistake during leaving of a tournament!", false));
                })
                .Catch(exception => OperationOnDone("There was a mistake during leaving of a tournament!", false));
            })
            .Catch(exception => OperationOnDone("There was a mistake during leaving of a tournament!", false));
        });
    }
Beispiel #2
0
        protected override OperationData Deserialize(JArray value, Type objectType)
        {
            if (value.IsNullOrEmpty() || value.Count != 2)
            {
                return(null);
            }
            var type = (ChainTypes.Operation)Convert.ToInt32(value.First);

            switch (type)
            {
            case ChainTypes.Operation.Transfer:
                return(TransferOperationData.Create(value.Last as JObject));

            case ChainTypes.Operation.AccountCreate:
                return(AccountCreateOperationData.Create(value.Last as JObject));

            case ChainTypes.Operation.TournamentCreate:
                return(TournamentCreateOperationData.Create(value.Last as JObject));

            case ChainTypes.Operation.TournamentJoin:
                return(TournamentJoinOperationData.Create(value.Last as JObject));

            case ChainTypes.Operation.TournamentLeave:
                return(TournamentLeaveOperationData.Create(value.Last as JObject));

            case ChainTypes.Operation.TournamentPayout:
                return(TournamentPayoutOperationData.Create(value.Last as JObject));

            case ChainTypes.Operation.GameMove:
                return(GameMoveOperationData.Create(value.Last as JObject));

            case ChainTypes.Operation.ProposalCreate:
                return(ProposalCreateOperationData.Create(value.Last as JObject));

            case ChainTypes.Operation.AssetDividendDistribution:
                return(AssetDividendDistributionOperationData.Create(value.Last as JObject));

            default:
                Unity.Console.Error("Unexpected operation type:", type);
                return(null);
            }
        }
 public static IPromise LeaveFromTournament(TournamentLeaveOperationData operation)
 {
     return(AuthorizationManager.Instance.ProcessTransaction(new TransactionBuilder().AddOperation(operation), LeaveFromTournamentResult));
 }