import moment from 'moment'; import { MaerskApiClient } from '../../../common/clients/maerskApi.client'; import { map } from 'rxjs/operators'; import { BunkerAdjustmentPeriod, } from '../store/bunkerAdjustment.types'; export class BunkerAdjustmentService { private apiClient: MaerskApiClient; constructor(apiClient) { this.apiClient = apiClient; } getAvailability = (poolId: number, vesselCode: string, partnerAxCode: string) => { return this.apiClient.getBunkerAdjustmentAvailability(poolId, vesselCode, partnerAxCode).pipe( map((bunkerAdjustmentAvailability) => this.mapPeriods(bunkerAdjustmentAvailability.availableMonths)) ); } getTrends = (poolId: number, vesselCode: string, partnerAxCode: string) => { return this.apiClient.getBunkerAdjustmentTrend(poolId, vesselCode, partnerAxCode); } getFigures = (poolId: number, vesselCode: string, date: string, partnerAxCode: string) => { return this.apiClient.getBunkerAdjustmentFigures(poolId, vesselCode, date, partnerAxCode); } mapPeriods = (periods: BunkerAdjustmentPeriod[]) => { return [ ...periods.map(period => ({ date: period.date, isActive: period.isActive, })) ].sort(this.comparePeriods); } comparePeriods = (a?: BunkerAdjustmentPeriod, b?: BunkerAdjustmentPeriod) => { if (a && b) { return moment(a.date).isAfter(b.date) ? -1 : 1; } return 0; } }