private CurrencyRate GetCurrencyRate(Obs obs, SDMXSeries serie, ISdmxApiConfiguration apiConfiguration) { var sourceCurrency = serie.SeriesKey.Single(key => key.Id == apiConfiguration.SourceCurrencyKey).Value; var targetCurrency = serie.SeriesKey.Single(key => key.Id == apiConfiguration.TargetCurrencyKey).Value; var date = DateTime.Parse(obs.ObsDimension.Value); var exchangeRate = Convert.ToDecimal(obs.ObsValue.Value); var query = new CurrencyRateQuery(sourceCurrency, targetCurrency, date); return(new CurrencyRate(query, exchangeRate)); }
public CurrencyRateMapperProfile(ISdmxApiConfiguration apiConfiguration) { CreateMap <CurrencyRate, CurrencyRateDto>() .ForMember(currencyRateDto => currencyRateDto.SourceCurrency, m => m.MapFrom(currencyRate => currencyRate.Query.SourceCurrency)) .ForMember(currencyRateDto => currencyRateDto.TargetCurrency, m => m.MapFrom(currencyRate => currencyRate.Query.TargetCurrency)) .ForMember(currencyRateDto => currencyRateDto.Date, m => m.MapFrom(currencyRate => currencyRate.Query.Date)); CreateMap <SDMXGenericData, CurrencyRate[]>() .ConvertUsing(genericData => genericData.DataSet.Series .Where(serie => serie.SeriesKey.Any(key => key.Id == apiConfiguration.SourceCurrencyKey) && serie.SeriesKey.Any(key => key.Id == apiConfiguration.TargetCurrencyKey)) .SelectMany(serie => serie.Obs.Select(obs => GetCurrencyRate(obs, serie, apiConfiguration))).ToArray()); }
public SdmxQueryTranslationService(ISdmxApiConfiguration apiConfiguration) { this.apiConfiguration = apiConfiguration; }
private IApiHandlingStrategy GetApiHandlingStrategy(ISdmxApiConfiguration apiConfiguration) { var translationService = new SdmxQueryTranslationService(apiConfiguration); return(new SdmxApiHandlingStrategy(translationService, mapper)); }