Esempio n. 1
0
        public async Task <Dictionary <string, TradingDayInfo> > GetMarketsInfo(string[] marketIds, DateTime?dateTime)
        {
            var scheduleSettings = (await _scheduleSettingsRepository.GetFilteredAsync())
                                   .Where(x => !string.IsNullOrWhiteSpace(x.MarketId))
                                   .Cast <ScheduleSettings>()
                                   .GroupBy(x => x.MarketId)
                                   .ToDictionary(x => x.Key, x => x.ToList());
            var currentDateTime = dateTime ?? _systemClock.UtcNow.UtcDateTime;

            var rawPlatformSchedule =
                scheduleSettings.TryGetValue(_platformSettings.PlatformMarketId, out var platformSettings)
                    ? platformSettings
                    : new List <ScheduleSettings>();

            var result = marketIds.Except(scheduleSettings.Keys).ToDictionary(
                marketWithoutSchedule => marketWithoutSchedule,
                _ => GetTradingDayInfo(rawPlatformSchedule, currentDateTime));

            foreach (var marketToCompile in marketIds.Except(result.Keys))
            {
                var schedule = scheduleSettings[marketToCompile].Concat(
                    rawPlatformSchedule.WithRank(int.MaxValue)).ToList();

                var tradingDayInfo = GetTradingDayInfo(schedule, currentDateTime);

                result.Add(marketToCompile, tradingDayInfo);
            }

            return(result);
        }
Esempio n. 2
0
        public async Task <List <ScheduleSettingsContract> > List([FromQuery] string marketId = null)
        {
            var data = await _scheduleSettingsRepository.GetFilteredAsync(marketId);

            return(data
                   .Select(x => _convertService.Convert <IScheduleSettings, ScheduleSettings>(x))
                   .Select(x => _convertService.Convert <ScheduleSettings, ScheduleSettingsContract>(x))
                   .ToList());
        }