Exemple #1
0
        public async Task <IActionResult> GetFundByIdAsync(string fundGuid)
        {
            if (string.IsNullOrEmpty(fundGuid))
            {
                return(NotFound());
            }

            var fund = await _fundService.GetFundAsync(fundGuid);

            return(Ok(fund));
        }
Exemple #2
0
        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));
        }