import { HALConfig } from '../hal.config'; import { Lead } from './lead.model'; import { LeadDeserializer } from './lead.deserializer'; import { ClientDeserializer } from '../client/client.deserializer'; import { TaskDeserializer } from '../task/task.deserializer'; import { CardDeserializer } from '../card/card.deserializer'; import { MemberDeserializer } from '../member/member.deserializer'; export class LeadConverter { public constructor( private leadDeserializer: LeadDeserializer, private clientDeserializer: ClientDeserializer, private taskDeserializer: TaskDeserializer, private cardDeserializer: CardDeserializer, private memberDeserializer: MemberDeserializer ) {} public toMany(items: Array<{[key: string]: any}>): Lead[] { return items.map((item: any) => this.toOne(item)); } public toOne(json: any): Lead { const lead: Lead = this.leadDeserializer.deserialize(json); const embedded: {[key: string]: any} = json[HALConfig.embedded] || {}; if (embedded['client']) { lead.client = this.clientDeserializer.deserialize(embedded['client']); } if (embedded['task']) { lead.currentTask = this.taskDeserializer.deserialize(embedded['task']); } if (embedded['cards']) { lead.cards = embedded['cards'].map((card: any) => this.cardDeserializer.deserialize(card)); } if (embedded['assigned_user']) { lead.assignedMember = this.memberDeserializer.deserialize(embedded['assigned_user']); } return lead; } }