65 lines
2.1 KiB
TypeScript
65 lines
2.1 KiB
TypeScript
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: record.equipment ? EquipmentFactory.mapToSingle(record.equipment) : undefined,
|
|
};
|
|
} else if (record?.vehicleId) {
|
|
assigned = {
|
|
relatedId: record.vehicleId,
|
|
assigned: "vehicle",
|
|
related: record.vehicle ? VehicleFactory.mapToSingle(record.vehicle) : undefined,
|
|
};
|
|
} else if (record?.wearableId) {
|
|
assigned = {
|
|
relatedId: record.wearableId,
|
|
assigned: "wearable",
|
|
related: record.wearable ? WearableFactory.mapToSingle(record.wearable) : undefined,
|
|
};
|
|
} else {
|
|
assigned = {
|
|
relatedId: undefined,
|
|
assigned: undefined,
|
|
related: undefined,
|
|
};
|
|
}
|
|
|
|
return {
|
|
id: record.id,
|
|
createdAt: record.createdAt,
|
|
finishedAt: record.finishedAt,
|
|
status: record.status,
|
|
responsible: record.responsible,
|
|
title: record.title,
|
|
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));
|
|
}
|
|
}
|