import JourneyStop from '../../JourneyStop/entity/JourneyStop'; import JourneyStopAdapterInterface from './JourneyStopAdapterInterface'; import TravelStopPricingAdapter from '../../TravelStop/adapter/TravelStopAdapter'; import PassengerAllocationAdapter from '../../PassengerAllocation/adapter/PassengerAllocationAdapter'; import PassengerAllocationAdapterInterface from '../../PassengerAllocation/adapter/PassengerAllocationAdapterInterface'; import TravelStopPricingAdapterInterface from '../../TravelStopPricing/adapter/TravelStopPricingAdapterInterface'; import StopAdapterInterface from '../../Stop/adapter/StopAdapterInterface'; export default class JourneyStopAdapter extends TravelStopPricingAdapter implements JourneyStopAdapterInterface { private passengerAllocationAdapter: PassengerAllocationAdapterInterface; constructor(stopAdapter: StopAdapterInterface, travelStopPricingAdapter: TravelStopPricingAdapterInterface, passengerAllocationAdapter: PassengerAllocationAdapterInterface) { super(stopAdapter, travelStopPricingAdapter); this.passengerAllocationAdapter = passengerAllocationAdapter; } adapt(json: any, instance: JourneyStop): JourneyStop { let adapted = super.adapt(json, instance); adapted.id = json.journey_stop_id || json.id; adapted.arrival_date = json.arrival_datetime; adapted.departure_date = json.departure_datetime; adapted.timezone = json.arrival_datetime.timezone || void 0; adapted.seats_available = json.seats_available || void 0; adapted.dropoff = json.is_dropoff; adapted.pickup = json.is_pickup; //const key = instance.isPickup() ? 'pickup' : instance.isDropoff() ? 'dropoff' : ''; instance.unallocated = { pickup: json.unallocated_users.pickup.map(each => this.passengerAllocationAdapter.transformToEntity(each)), dropoff: json.unallocated_users.dropoff.map(each => this.passengerAllocationAdapter.transformToEntity(each)), }; instance.not_travelling = { pickup: json.not_travelling_users.pickup.map(each => this.passengerAllocationAdapter.transformToEntity(each)), dropoff: json.not_travelling_users.dropoff.map(each => this.passengerAllocationAdapter.transformToEntity(each)), }; return adapted; } prepare(instance: JourneyStop): any { let prepared = super.prepare(instance); let object = { id: instance.id, departure_datetime: instance.departure_date.datetime, arrival_datetime: instance.arrival_date.datetime, timezone: instance.timezone, seats_available: instance.seats_available, pickup: instance.pickup, dropoff: instance.dropoff, }; return { ...prepared, ...object }; } transformToEntity(json: any): JourneyStop { return this.adapt(json, new JourneyStop()); } transformToPayload(instance: JourneyStop): any { return this.prepare(instance); } }