protected virtual IActionResult GetAUCAmount(string address) { if (string.IsNullOrWhiteSpace(address)) { return(BadRequest()); } return(Ok(WalletBusiness.GetAucAmount(address))); }
public PensionFundContract CreateCompleteEntry(Fund fund, Company company, Employee employee) { Validate(fund, company, employee); var assetDictionary = GetAssetAllocationDictionary(fund); var pensionFund = PensionFundBusiness.Create(fund.Name); var pensionFundWallet = WalletBusiness.Create(); var pensionFundOption = PensionFundOptionBusiness.Create(pensionFundWallet.Address, fund.Fee, fund.LatePaymentFee, pensionFund.Id); var companyWallet = WalletBusiness.Create(); var domainCompany = CompanyBusiness.Create(companyWallet.Address, company.Name, company.BonusFee, company.MaxBonusFee, pensionFundOption.Address, company.VestingRules); var employeeWallet = WalletBusiness.Create(); var domainEmployee = EmployeeBusiness.Create(employeeWallet.Address, employee.Name, employee.Salary, employee.ContributionPercentage, domainCompany.Address); var pensionFundContract = PensionFundContractBusiness.Create(pensionFundOption.Address, domainCompany.Address, domainEmployee.Address, pensionFundOption.Fee, pensionFundOption.LatePenalty, domainCompany.MaxSalaryBonusRate, domainEmployee.Contribution, domainCompany.BonusRate, domainEmployee.Salary, assetDictionary, company.VestingRules.ToDictionary(bonus => bonus.Period, bonus => bonus.Percentage)); foreach (var asset in assetDictionary) { PensionFundReferenceContractBusiness.Create(pensionFundContract.TransactionHash, asset.Key, asset.Value); } return(pensionFundContract); }
public string Faucet(string address) { return(WalletBusiness.Faucet(address)); }
private TransactionStatus CheckAndProcessTransaction(Transaction buyTransaction, int buyId) { TransactionStatus status = TransactionStatus.Pending; try { var transaction = Web3.Web3Business.CheckTransaction(buyTransaction.TransactionHash, "Escrow(address,uint256)"); if (transaction.Status.HasValue) { if (transaction.Status.Value == 1) { if (transaction.EventData != null && transaction.EventData.Length == 2 && !string.IsNullOrEmpty(transaction.EventData[0]) && !string.IsNullOrEmpty(transaction.EventData[1])) { var wallet = WalletBusiness.GetByUser(buyTransaction.UserId); if (transaction.EventData[0].ToLower().Trim() != wallet.Address) { status = TransactionStatus.Fraud; } else { var purchase = BuyBusiness.GetSimple(buyId); var escrowedValue = Util.Util.ConvertBigNumber(transaction.EventData[1], 18); if (purchase.Price > escrowedValue) { status = TransactionStatus.Fraud; } else { var transactions = ListByUserAndHash(buyTransaction.UserId, buyTransaction.TransactionHash); if (transactions.Count > 1 && (transactions.Any(c => c.BuyId != buyId) || transactions.Any(c => c.Transaction.TransactionStatus != TransactionStatus.Pending.Value))) { status = TransactionStatus.Fraud; } else { status = TransactionStatus.Success; using (var trans = new TransactionalDapperCommand()) { purchase.ExpirationDate = DateTime.UtcNow.Date.AddDays(purchase.Days); trans.Update(purchase); buyTransaction.TransactionStatus = status.Value; buyTransaction.ProcessedDate = DateTime.UtcNow; trans.Update(buyTransaction); trans.Commit(); } } } } } else { status = TransactionStatus.Fraud; } } else { status = TransactionStatus.Error; } if (status != TransactionStatus.Success) { TransactionBusiness.Process(buyTransaction, status); } } } catch (DomainObjects.Web3.Web3Exception ex) { if (ex.Code == 404 && TransactionBusiness.TransactionCanBeConsideredLost(buyTransaction)) { HandleLostTransaction(buyTransaction, buyTransaction.UserId, buyId, null); } else { throw; } } return(status); }