public async Task CreateMissedAsync(string userId)
        {
            string source = _quoteService.GetSources().FirstOrDefault();

            IReadOnlyCollection <Balance> balances = await _balanceService.GetAsync();

            foreach (Balance balance in balances)
            {
                if (balance.Amount <= 0)
                {
                    continue;
                }

                Asset asset = _assetsReadModelRepository.TryGetIfEnabled(balance.AssetId);

                if (asset == null)
                {
                    continue;
                }

                AssetPair assetPair = _assetPairsReadModelRepository.GetAllEnabled()
                                      .FirstOrDefault(o => o.BaseAssetId == asset.Id && o.QuotingAssetId == "USD");

                if (assetPair == null)
                {
                    continue;
                }

                IReadOnlyCollection <Instrument> instruments = await GetAllAsync();

                Instrument instrument = instruments.FirstOrDefault(o => o.AssetPairId == assetPair.Id);

                if (instrument != null)
                {
                    continue;
                }

                instrument = new Instrument
                {
                    AssetPairId = assetPair.Id,
                    QuoteSource = source,
                    Markup      = 0,
                    Levels      = 1,
                    MinSpread   = .2m,
                    MaxSpread   = .8m,
                    Mode        = InstrumentMode.Disabled,
                    IsApproved  = false
                };

                await _instrumentRepository.InsertAsync(instrument);

                _cache.Set(instrument);
            }

            _log.InfoWithDetails("Missed instruments created", new { userId });
        }
示例#2
0
        public async Task <IActionResult> GetAssetPairs()
        {
            var assetPairs = _assetPairsReadModel.GetAllEnabled();

            return(Ok(assetPairs.Select(ToModel)));
        }