import StopGroupAdapterInterface from './StopGroupAdapterInterface'; import StopAdapter from '../../Stop/adapter/StopAdapter'; import StopGroup from '../entity/StopGroup'; export default class StopGroupAdapter implements StopGroupAdapterInterface { protected stopAdapter: StopAdapter; constructor(stopAdapter: StopAdapter) { this.stopAdapter = stopAdapter; } adapt(json: any, instance: StopGroup): StopGroup { instance.id = json.id; instance.name = json.name; instance.stops = (json.locations || []).map(stop => this.stopAdapter.transformToEntity(stop)); instance.number_of_routes = json.number_of_routes || 0; instance.number_of_journeys = json.number_of_journeys || 0; return instance; } prepare(instance: StopGroup): object { const object = { id: instance.id, name: instance.name, locations: (instance.stops || []).map(stop => this.stopAdapter.transformToPayload(stop)), }; return object; } transformToEntity(json: any): StopGroup { return this.adapt(json, new StopGroup()); } transformToPayload(instance: StopGroup): any { return this.prepare(instance); } }