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); }
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()); }