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

56 lines
1.8 KiB
TypeScript
Raw Normal View History

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));
}
}