import { repair } from "../../../entity/unit/repair"; import { RepairAssigned, RepairViewModel } from "../../../viewmodel/admin/unit/repair.models"; import DamageReportFactory from "./damageReport"; import EquipmentFactory from "./equipment/equipment"; import VehicleFactory from "./vehicle/vehicle"; import WearableFactory from "./wearable/wearable"; export default abstract class RepairFactory { /** * @description map record to repair * @param {repair} record * @returns {RepairViewModel} */ public static mapToSingle(record: repair): RepairViewModel { let assigned: RepairAssigned; if (record?.equipmentId) { assigned = { relatedId: record.equipmentId, assigned: "equipment", related: EquipmentFactory.mapToSingle(record.equipment), }; } else if (record?.vehicleId) { assigned = { relatedId: record.vehicleId, assigned: "vehicle", related: VehicleFactory.mapToSingle(record.vehicle), }; } else if (record?.wearableId) { assigned = { relatedId: record.wearableId, assigned: "wearable", related: WearableFactory.mapToSingle(record.wearable), }; } else { assigned = { relatedId: undefined, assigned: undefined, related: undefined, }; } return { id: record.id, createdAt: record.createdAt, finishedAt: record.finishedAt, status: record.status, responsible: record.responsible, description: record.description, images: record.images, reportDocument: record.reportDocument, reports: record.reports ? DamageReportFactory.mapToBase(record.reports) : [], ...assigned, }; } /** * @description map records to repair * @param {Array} records * @returns {Array} */ public static mapToBase(records: Array): Array { return records.map((r) => this.mapToSingle(r)); } }