ff-admin-server/src/factory/admin/unit/repair.ts

65 lines
1.9 KiB
TypeScript
Raw Normal View History

2025-07-19 11:02:07 +02:00
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<repair>} records
* @returns {Array<RepairViewModel>}
*/
public static mapToBase(records: Array<repair>): Array<RepairViewModel> {
return records.map((r) => this.mapToSingle(r));
}
}