ff-admin-server/src/factory/admin/unit/inspection/inspectionPlan.ts

64 lines
2.1 KiB
TypeScript
Raw Normal View History

2025-05-28 18:30:00 +02:00
import { inspectionPlan } from "../../../../entity/unit/inspection/inspectionPlan";
2025-06-13 11:31:34 +02:00
import {
InspectionPlanRelated,
InspectionPlanViewModel,
} from "../../../../viewmodel/admin/unit/inspection/inspectionPlan.models";
2025-05-28 18:30:00 +02:00
import EquipmentFactory from "../equipment/equipment";
import EquipmentTypeFactory from "../equipment/equipmentType";
2025-05-28 18:30:00 +02:00
import VehicleFactory from "../vehicle/vehicle";
import VehicleTypeFactory from "../vehicle/vehicleType";
2025-06-13 11:31:34 +02:00
import WearableTypeFactory from "../wearable/wearableType";
2025-05-28 18:30:00 +02:00
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 {
2025-06-13 11:31:34 +02:00
let related: InspectionPlanRelated;
if (record?.equipmentTypeId) {
related = {
relatedId: record.equipmentTypeId,
assigned: "equipment",
related: EquipmentTypeFactory.mapToSingle(record.equipmentType),
};
} else if (record?.vehicleTypeId) {
related = {
relatedId: record.vehicleTypeId,
assigned: "vehicle",
related: VehicleTypeFactory.mapToSingle(record.vehicleType),
};
} else {
related = {
relatedId: record.wearableTypeId,
assigned: "wearable",
related: WearableTypeFactory.mapToSingle(record.wearableType),
};
}
2025-05-28 18:30:00 +02:00
return {
id: record.id,
title: record.title,
inspectionInterval: record.inspectionInterval,
remindTime: record.remindTime,
version: record?.latestVersionedPlan?.version ?? 0,
2025-05-28 18:30:00 +02:00
created: record.createdAt,
inspectionPoints: record.latestVersionedPlan
? InspectionPointFactory.mapToBase(record.latestVersionedPlan.inspectionPoints)
: [],
2025-06-13 11:31:34 +02:00
...related,
2025-05-28 18:30:00 +02:00
};
}
/**
* @description map records to inspectionPlan
* @param {Array<inspectionPlan>} records
* @returns {Array<InspectionPlanViewModel>}
*/
public static mapToBase(records: Array<inspectionPlan>): Array<InspectionPlanViewModel> {
return records.map((r) => this.mapToSingle(r));
}
}