import { inspectionPlan } from "../../../../entity/unit/inspection/inspectionPlan"; import { InspectionPlanViewModel } from "../../../../viewmodel/admin/unit/inspection/inspectionPlan.models"; import EquipmentFactory from "../equipment/equipment"; import EquipmentTypeFactory from "../equipment/equipmentType"; import VehicleFactory from "../vehicle/vehicle"; import VehicleTypeFactory from "../vehicle/vehicleType"; import InspectionPointFactory from "./inspectionPoint"; export default abstract class InspectionPlanFactory { /** * @description map record to inspectionPlan * @param {inspectionPlan} record * @returns {InspectionPlanViewModel} */ public static mapToSingle(record: inspectionPlan): InspectionPlanViewModel { return { id: record.id, title: record.title, inspectionInterval: record.inspectionInterval, remindTime: record.remindTime, version: record?.latestVersionedPlan?.version ?? 0, created: record.createdAt, inspectionPoints: record.latestVersionedPlan ? InspectionPointFactory.mapToBase(record.latestVersionedPlan.inspectionPoints) : [], ...(record.equipmentTypeId ? { relatedId: record.equipmentTypeId, assigned: "equipment", related: EquipmentTypeFactory.mapToSingle(record.equipmentType), } : { relatedId: record.vehicleTypeId, assigned: "vehicle", related: VehicleTypeFactory.mapToSingle(record.vehicleType), }), }; } /** * @description map records to inspectionPlan * @param {Array} records * @returns {Array} */ public static mapToBase(records: Array): Array { return records.map((r) => this.mapToSingle(r)); } }