56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
|
import { maintenance } from "../../../entity/unit/maintenance";
|
||
|
import { MaintenanceAssigned, MaintenanceViewModel } from "../../../viewmodel/admin/unit/maintenance.models";
|
||
|
import DamageReportFactory from "./damageReport";
|
||
|
import EquipmentFactory from "./equipment/equipment";
|
||
|
import VehicleFactory from "./vehicle/vehicle";
|
||
|
import WearableFactory from "./wearable/wearable";
|
||
|
|
||
|
export default abstract class MaintenanceFactory {
|
||
|
/**
|
||
|
* @description map record to maintenance
|
||
|
* @param {maintenance} record
|
||
|
* @returns {MaintenanceViewModel}
|
||
|
*/
|
||
|
public static mapToSingle(record: maintenance): MaintenanceViewModel {
|
||
|
let assigned: MaintenanceAssigned;
|
||
|
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 {
|
||
|
assigned = {
|
||
|
relatedId: record.wearableId,
|
||
|
assigned: "wearable",
|
||
|
related: WearableFactory.mapToSingle(record.wearable),
|
||
|
};
|
||
|
}
|
||
|
|
||
|
return {
|
||
|
id: record.id,
|
||
|
createdAt: record.createdAt,
|
||
|
status: record.status,
|
||
|
done: record.done,
|
||
|
description: record.description,
|
||
|
...assigned,
|
||
|
reports: record.reports ? DamageReportFactory.mapToBase(record.reports) : [],
|
||
|
};
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* @description map records to maintenance
|
||
|
* @param {Array<maintenance>} records
|
||
|
* @returns {Array<MaintenanceViewModel>}
|
||
|
*/
|
||
|
public static mapToBase(records: Array<maintenance>): Array<MaintenanceViewModel> {
|
||
|
return records.map((r) => this.mapToSingle(r));
|
||
|
}
|
||
|
}
|