public static async Task <ArkClientIndexModel> GetClientsToPay(string passPhrase, double percentToPay, long amountToPay) { var returnModel = new ArkClientIndexModel(); var delegateAccount = await GetAccount(passPhrase); if (delegateAccount == null) { throw new Exception(StaticProperties.ARK_ACCOUNT_NOT_FOUND); } var delegateAccountTotalArk = delegateAccount.Balance; if (amountToPay < delegateAccountTotalArk) { delegateAccountTotalArk = amountToPay; } var delegateAccountVoters = await DelegateService.GetVotersAsync(delegateAccount.PublicKey); var feesToPay = ArkNetApi.Instance.NetworkSettings.Fee.Send * delegateAccountVoters.Accounts.Count(); var delegateAccountTotalArkToPay = (percentToPay / 100) * (delegateAccountTotalArk - feesToPay); var delegateAccountTotalArkVote = delegateAccountVoters.Accounts.Sum(x => x.Balance); var clientsToPay = new List <ArkClientModel>(); foreach (var voter in delegateAccountVoters.Accounts) { var voterAccount = await AccountService.GetByAddressAsync(voter.Address); var amountToPayVoter = (voterAccount.Account.Balance / (double)delegateAccountTotalArkVote) * (delegateAccountTotalArkToPay); clientsToPay.Add(new ArkClientModel(voter.Address, amountToPayVoter, voterAccount.Account.Balance)); } returnModel.ArkDelegateAccount = delegateAccount; returnModel.ArkClients = clientsToPay; return(returnModel); }
public async Task GetVotersErrorAsyncTest() { var dele = await DelegateService.GetVotersAsync("ErrorKey"); GetVotersErrorResultTest(dele); }
public async Task GetVotersAsyncTest() { var dele = await DelegateService.GetVotersAsync(_pubKey); GetVotersResultTest(dele); }