import SupplierAdapterInterface from './SupplierAdapterInterface'; import Supplier from '../entity/Supplier'; import SupplierKeyContactAdapterInterface from '../../SupplierKeyContact/adapter/SupplierKeyContactAdapterInterface'; export default class SupplierAdapter implements SupplierAdapterInterface { private supplierKeyContactAdapter: SupplierKeyContactAdapterInterface; constructor(supplierKeyContactAdapter: SupplierKeyContactAdapterInterface) { this.supplierKeyContactAdapter = supplierKeyContactAdapter; } adapt(json: any, instance: Supplier): Supplier { instance.id = json.id; instance.name = json.name; instance.email = json.email; instance.phone_number = json.phone_number; instance.address_line_1 = json.address_line_1; instance.address_line_2 = json.address_line_2; instance.address_line_3 = json.address_line_3; instance.postcode = json.postcode; // TODO // instance.key_contacts = json.key_contacts.map(each => this.supplierKeyContactAdapter.transformToEntity(each)); instance.internal_notes = json.internal_notes; return instance; } prepare(instance: Supplier): object { let splitted_phone_number = instance.phone_number.split(' '); let object = { id: instance.id, name: instance.name, email: instance.email, phone_number_prefix: parseInt(splitted_phone_number[0]), phone_number_number: parseInt(splitted_phone_number[1]), address_line_1: instance.address_line_1, address_line_2: instance.address_line_2, address_line_3: instance.address_line_3, postcode: instance.postcode, key_contacts: instance.key_contacts, internal_notes: instance.internal_notes, }; return object; } transformToEntity(json: any): Supplier { return this.adapt(json, new Supplier()); } transformToPayload(instance: Supplier): any { return this.prepare(instance); } }