import * as moment from 'moment'; export interface IExchangeRate { id: string; value: number; startDate: Date; endDate: Date; baseCurrencyId: string; quoteCurrencyId: string; } export interface IExchangeRateProperties { id: boolean; value: boolean; startDate: boolean; endDate: boolean; baseCurrencyId: boolean; quoteCurrencyId: boolean; } export interface IExchangeRatesInfo { baseCurrencyId: string; quoteCurrencyId: string; startPeriod: Date; endPeriod: Date; frequency: string; } export function invertExchangeRate(exchangeRate: IExchangeRate) { const newId = createExchangeRateId(exchangeRate.quoteCurrencyId, exchangeRate.baseCurrencyId, exchangeRate.startDate, exchangeRate.endDate); return { id: newId, value: 1.0 / exchangeRate.value, startDate: exchangeRate.startDate, endDate: exchangeRate.endDate, baseCurrencyId: exchangeRate.quoteCurrencyId, quoteCurrencyId: exchangeRate.baseCurrencyId, }; } export function createExchangeRateId(baseCurrencyId: string, quoteCurrencyId: string, startPeriod: Date, endPeriod: Date): string { let startPeriodString = ''; if (startPeriod) { startPeriodString = startPeriod.getTime().toString(); } let endPeriodString = ''; if (endPeriod) { endPeriodString = endPeriod.getTime().toString(); } return `${quoteCurrencyId}.${baseCurrencyId}.${startPeriodString}.${endPeriodString}`; } export function parseExchangeRate(exchangeRate: IExchangeRate) { return { startDate: moment(exchangeRate.startDate).toDate(), endDate: moment(exchangeRate.endDate).toDate(), value: +exchangeRate.value, id: exchangeRate.id, baseCurrencyId: exchangeRate.baseCurrencyId, quoteCurrencyId: exchangeRate.quoteCurrencyId, }; }