import JourneyVehicle from '../entity/JourneyVehicle'; import JourneyVehicleAdapterInterface from './JourneyVehicleAdapterInterface'; import JourneyVehicleStopAdapterInterface from '../../JourneyVehicleStop/adapter/JourneyVehicleStopAdapterInterface'; import JourneyVehicleStop from '../../JourneyVehicleStop/entity/JourneyVehicleStop'; import VehicleAdapterInterface from '../../Vehicle/adapter/VehicleAdapterInterface'; import Vehicle from '../../Vehicle/entity/Vehicle'; import Currency from '../../common/entities/Currency'; import Money from '../../common/entities/Money'; export default class JourneyVehicleAdapter implements JourneyVehicleAdapterInterface { private vehicleAdapter: VehicleAdapterInterface; private journeyVehicleStopAdapter: JourneyVehicleStopAdapterInterface; constructor(vehicleAdapter: VehicleAdapterInterface, journeyVehicleStopAdapter: JourneyVehicleStopAdapterInterface) { this.vehicleAdapter = vehicleAdapter; this.journeyVehicleStopAdapter = journeyVehicleStopAdapter; } adapt(json: any, instance: JourneyVehicle): JourneyVehicle { instance.id = json.id; let vehicle = new Vehicle(); vehicle.reg_number = json.registration_number; vehicle.number_of_seats = json.seats; instance.vehicle = vehicle; instance.seats = json.total_seats; instance.driver_name = json.driver_name; instance.driver_phone_number = json.driver_phone_number_prefix ? json.driver_phone_number_prefix.toString().concat(' ',json.driver_phone_number_number.toString()): void 0; instance.supplier_id = json.supplier_id; instance.vehicle_cost = json.vehicle_cost; instance.extras_cost = json.extras_cost; instance.journey_vehicle_stops = (json.journey_vehicle_stops || json.stops || []).map(item => this.journeyVehicleStopAdapter.transformToEntity(item)); return instance; } prepare(instance: JourneyVehicle): object { let object = { journey_vehicle_id: instance.id, seats: instance.seats, journey_vehicle_linked: '', extras_cost: instance.extras_cost.amount, extras_cost_currency: 'GBP' , vehicle_cost: instance.vehicle_cost.amount, vehicle_cost_currency: 'GBP' , stops: (instance.journey_vehicle_stops || []).map((each: JourneyVehicleStop) => this.journeyVehicleStopAdapter.transformToPayload(each)), supplier_id: instance.supplier ? instance.supplier.id : void 0, driver_name: instance.driver_name, driver_phone_number_prefix: instance.driver_phone_number.substring(0,2), driver_phone_number_number: instance.driver_phone_number.substring(2), // supplier_id: instance.vehicle.supplier.id, // on_the_day_contact_number_prefix: 44, // on_the_day_contact_number_number: 637000000, }; return object; } transformToEntity(json: any): JourneyVehicle { return this.adapt(json, new JourneyVehicle()); } transformToPayload(instance: JourneyVehicle): any { return this.prepare(instance); } }