import JourneyVehicleStop from '../entity/JourneyVehicleStop'; import JourneyVehicleStopAdapterInterface from './JourneyVehicleStopAdapterInterface'; import PassengerAllocationAdapterInterface from '../../PassengerAllocation/adapter/PassengerAllocationAdapterInterface'; import JourneyStopAdapterInterface from '../../JourneyStop/adapter/JourneyStopAdapterInterface'; export default class JourneyVehicleStopAdapter implements JourneyVehicleStopAdapterInterface { journeyStopAdapter: JourneyStopAdapterInterface; passengerAllocationAdapter: PassengerAllocationAdapterInterface; constructor(journeyStopAdapter: JourneyStopAdapterInterface, passengerAllocationAdapter: PassengerAllocationAdapterInterface) { this.journeyStopAdapter = journeyStopAdapter; this.passengerAllocationAdapter = passengerAllocationAdapter; } adapt(json: any, instance: JourneyVehicleStop): JourneyVehicleStop { instance.id = json.id; instance.journey_stop_id = json.journey_stop_id; instance.scheduled_arrival_time = json.arrival_datetime; instance.scheduled_departure_time = json.departure_datetime; instance.actual_arrival_time = json.real_arrival_datetime; instance.actual_departure_time = json.real_departure_datetime; // instance.journey_stop = this.journeyStopAdapter.transformToEntity(json); // instance.journey_stop.id = json.journey_stop_id; // instance.journey_stop.seats_available = json.seats_available; // instance.journey_stop.arrival_date = json.arrival_datetime; // instance.journey_stop.departure_date = json.departure_datime; instance.name = json.name; instance.passengers_allocated_pickup = (json.allocated_users_pickup || []).map(each => this.passengerAllocationAdapter.transformToEntity(each)); instance.passengers_allocated_dropoff = (json.allocated_users_dropoff || []).map(each => this.passengerAllocationAdapter.transformToEntity(each)); // instance.number_of_passengers_being_dropped = instance.passengers_allocated_dropoff.reduce((a, b) => a + b, 0); //instance.number_of_passengers_being_picked = json.allocated_users_pickup.reduce((a, b) => a + b, 0); return instance; } prepare(instance: JourneyVehicleStop): object { let object = { journey_stop_id: instance.journey_stop ? instance.journey_stop.id : instance.journey_stop_id, journey_vehicle_stop_id: instance.id, seats_available: instance.journey_stop ? instance.journey_stop.seats_available : 0, arrival_datetime: instance.journey_stop ? instance.journey_stop.arrival_date.datetime : instance.scheduled_arrival_time, departure_datetime: instance.journey_stop ? instance.journey_stop.departure_date.datetime : instance.scheduled_departure_time, real_arrival_datetime: instance.actual_arrival_time, real_departure_datetime: instance.actual_departure_time, }; return object; } transformToEntity(json: any): JourneyVehicleStop { return this.adapt(json, new JourneyVehicleStop()); } transformToPayload(instance: JourneyVehicleStop): any { return this.prepare(instance); } }