Example #1
0
        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)));
        }