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)); }); }
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)); }