public async Task <IActionResult> GetFundByIdAsync(string fundGuid) { if (string.IsNullOrEmpty(fundGuid)) { return(NotFound()); } var fund = await _fundService.GetFundAsync(fundGuid); return(Ok(fund)); }
public async Task <IInvestment> GetInvestmentAsync(EthereumAddress address, Symbol symbol, CurrencyCode currencyCode) { if (symbol.IsFund()) { var fund = await fundService.GetFundAsync(symbol, currencyCode); var tokenCount = await quantityProviderFactory .CreateProvider(fund.Token.Symbol.ToString()) .GetContractBalanceAsync(fund.Token.ContractAddress, address, fund.Token.Decimals); var subInvestments = new List <ISubInvestment>(); foreach (var asset in fund.Assets) { var held = asset.Holding.ContractAddress.HasValue ? await quantityProviderFactory .CreateProvider(asset.Holding.Symbol) .GetContractBalanceAsync(asset.Holding.ContractAddress.Value, address, asset.Holding.Decimals.Value) : decimal.Zero; if (held > decimal.Zero) { subInvestments.Add(new BusinessSubInvestment() { Holding = asset.Holding, Held = held, MarketValue = CurrencyConverter.Convert(asset.PricePerToken, currencyCode) * held }); } } var stakeEvents = new List <IStakeEvent>(); foreach (var stake in GetStakes()) { stakeEvents.AddRange( await stakeService .ListStakeEventsAsync(stake.Symbol, address, fund.Token.Symbol) .ToListAsync(CancellationToken)); } return(new BusinessInvestment() { Fund = fund, Held = tokenCount, Legacy = tokenCount == default, SubInvestments = subInvestments, Stakes = stakeEvents });
public async Task <ApiFund> GetFund([Required, FromRoute] Symbol symbol, [FromQuery] ApiCurrencyQueryFilter queryFilter) { var fund = await fundService.GetFundAsync(symbol, queryFilter.CurrencyCode); return(MapFund(fund)); }