public IEnumerable <BalanceViewModel> Get() { var result = _baseService .GetAll() .Select(_mapper.Map <BalanceViewModel>); return(result); }
public BalanceReport Get() { IReadOnlyList <Balance> balances = _balanceService.GetAll(); List <string> exchanges = balances .Select(o => o.Exchange) .Distinct() .ToList(); List <string> assets = balances .Select(o => o.Asset) .Distinct() .OrderBy(o => o) .ToList(); var items = new List <BalanceReportItem>(); foreach (string asset in assets) { decimal price; if (asset == UsdAssetName) { price = 1; } else { var prices = new List <decimal>(); foreach (string exchange in exchanges) { Quote quote = _quoteService.GetByAssetPair(exchange, $"{asset}{UsdAssetName}"); if (quote != null) { prices.Add(quote.Mid); } } price = prices.DefaultIfEmpty(0).Average(); } items.AddRange(balances .Where(o => o.Asset == asset) .Select(o => new BalanceReportItem { Asset = asset, Exchange = o.Exchange, Amount = o.Amount, AmountUsd = o.Amount * price })); } return(new BalanceReport { Items = items }); }
public Task <IReadOnlyList <BalanceModel> > GetAsync(string exchange = null) { IReadOnlyList <Balance> balances; if (string.IsNullOrEmpty(exchange)) { balances = _balanceService.GetAll(); } else { balances = _balanceService.GetByExchange(exchange); } return(Task.FromResult(Mapper.Map <IReadOnlyList <BalanceModel> >(balances))); }