Compare commits
No commits in common. "c4e0c4fa28fe2fb527ab736da18d98becc3998cb" and "799a7190129cb4e5d19657cf218fb7a76fe20ddb" have entirely different histories.
c4e0c4fa28
...
799a719012
30 changed files with 58 additions and 939 deletions
|
@ -1,5 +1,4 @@
|
||||||
export interface CreateDamageReportCommand {
|
export interface CreateDamageReportCommand {
|
||||||
title: string;
|
|
||||||
description: string;
|
description: string;
|
||||||
location: string;
|
location: string;
|
||||||
noteByReporter: string;
|
noteByReporter: string;
|
||||||
|
@ -16,9 +15,9 @@ export interface UpdateDamageReportCommand {
|
||||||
done: boolean;
|
done: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface UpdateDamageReportRelatedRepairCommand {
|
export interface UpdateDamageReportRelatedMaintenanceCommand {
|
||||||
id: string;
|
id: string;
|
||||||
repairId: string;
|
maintenanceId: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface DeleteDamageReportCommand {
|
export interface DeleteDamageReportCommand {
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import { EntityManager, In, UpdateResult } from "typeorm";
|
|
||||||
import { dataSource } from "../../data-source";
|
import { dataSource } from "../../data-source";
|
||||||
import { damageReport } from "../../entity/unit/damageReport";
|
import { damageReport } from "../../entity/unit/damageReport";
|
||||||
import DatabaseActionException from "../../exceptions/databaseActionException";
|
import DatabaseActionException from "../../exceptions/databaseActionException";
|
||||||
|
@ -6,9 +5,8 @@ import {
|
||||||
CreateDamageReportCommand,
|
CreateDamageReportCommand,
|
||||||
UpdateDamageReportCommand,
|
UpdateDamageReportCommand,
|
||||||
DeleteDamageReportCommand,
|
DeleteDamageReportCommand,
|
||||||
UpdateDamageReportRelatedRepairCommand,
|
UpdateDamageReportRelatedMaintenanceCommand,
|
||||||
} from "./damageReportCommand";
|
} from "./damageReportCommand";
|
||||||
import DamageReportService from "../../service/unit/damageReportService";
|
|
||||||
|
|
||||||
export default abstract class DamageReportCommandHandler {
|
export default abstract class DamageReportCommandHandler {
|
||||||
/**
|
/**
|
||||||
|
@ -23,7 +21,6 @@ export default abstract class DamageReportCommandHandler {
|
||||||
.into(damageReport)
|
.into(damageReport)
|
||||||
.values({
|
.values({
|
||||||
status: "eingereicht",
|
status: "eingereicht",
|
||||||
title: createDamageReport.title,
|
|
||||||
description: createDamageReport.description,
|
description: createDamageReport.description,
|
||||||
location: createDamageReport.location,
|
location: createDamageReport.location,
|
||||||
noteByReporter: createDamageReport.noteByReporter,
|
noteByReporter: createDamageReport.noteByReporter,
|
||||||
|
@ -69,12 +66,14 @@ export default abstract class DamageReportCommandHandler {
|
||||||
* @param {UpdateDamageReportCommand} updateDamageReport
|
* @param {UpdateDamageReportCommand} updateDamageReport
|
||||||
* @returns {Promise<void>}
|
* @returns {Promise<void>}
|
||||||
*/
|
*/
|
||||||
static async updateRelatedMaintenance(updateDamageReport: UpdateDamageReportRelatedRepairCommand): Promise<void> {
|
static async updateRelatedMaintenance(
|
||||||
|
updateDamageReport: UpdateDamageReportRelatedMaintenanceCommand
|
||||||
|
): Promise<void> {
|
||||||
return await dataSource
|
return await dataSource
|
||||||
.createQueryBuilder()
|
.createQueryBuilder()
|
||||||
.update(damageReport)
|
.update(damageReport)
|
||||||
.set({
|
.set({
|
||||||
repairId: updateDamageReport.repairId,
|
maintenanceId: updateDamageReport.maintenanceId,
|
||||||
})
|
})
|
||||||
.where("id = :id", { id: updateDamageReport.id })
|
.where("id = :id", { id: updateDamageReport.id })
|
||||||
.execute()
|
.execute()
|
||||||
|
@ -84,60 +83,6 @@ export default abstract class DamageReportCommandHandler {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @description update damageReport related maintenance
|
|
||||||
* @returns {Promise<void>}
|
|
||||||
*/
|
|
||||||
static async updateRelatedMaintenanceMulti(repairId: string, reports: Array<string>): Promise<void> {
|
|
||||||
let [related] = await DamageReportService.getAllForRepair(repairId, { noLimit: true });
|
|
||||||
return await dataSource
|
|
||||||
.transaction(async (manager) => {
|
|
||||||
let added = reports.filter((id) => !related.some((r) => r.id === id));
|
|
||||||
let removed = related.map((r) => r.id).filter((id) => !reports.includes(id));
|
|
||||||
|
|
||||||
await manager
|
|
||||||
.createQueryBuilder()
|
|
||||||
.update(damageReport)
|
|
||||||
.set({
|
|
||||||
repairId: repairId,
|
|
||||||
})
|
|
||||||
.where({ id: In(added) })
|
|
||||||
.execute();
|
|
||||||
|
|
||||||
await manager
|
|
||||||
.createQueryBuilder()
|
|
||||||
.update(damageReport)
|
|
||||||
.set({
|
|
||||||
repairId: null,
|
|
||||||
})
|
|
||||||
.where({ id: In(removed) })
|
|
||||||
.execute();
|
|
||||||
})
|
|
||||||
.then(() => {})
|
|
||||||
.catch((err) => {
|
|
||||||
throw new DatabaseActionException("UPDATE", "damageReport->maintenance", err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description update damageReport related maintenance in transaction
|
|
||||||
* @param {UpdateDamageReportCommand} updateDamageReport
|
|
||||||
* @returns {Promise<void>}
|
|
||||||
*/
|
|
||||||
static async updateRelatedMaintenanceTransaction(
|
|
||||||
manager: EntityManager,
|
|
||||||
updateDamageReport: UpdateDamageReportRelatedRepairCommand
|
|
||||||
): Promise<UpdateResult> {
|
|
||||||
return await manager
|
|
||||||
.createQueryBuilder()
|
|
||||||
.update(damageReport)
|
|
||||||
.set({
|
|
||||||
repairId: updateDamageReport.repairId,
|
|
||||||
})
|
|
||||||
.where("id = :id", { id: updateDamageReport.id })
|
|
||||||
.execute();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description delete damageReport
|
* @description delete damageReport
|
||||||
* @param {DeleteDamageReportCommand} deleteDamageReport
|
* @param {DeleteDamageReportCommand} deleteDamageReport
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
export interface CreateRepairCommand {
|
|
||||||
title: string;
|
|
||||||
description: string;
|
|
||||||
responsible: string;
|
|
||||||
affectedId: string;
|
|
||||||
affected: "equipment" | "vehicle" | "wearable";
|
|
||||||
reports: string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface UpdateRepairCommand {
|
|
||||||
id: string;
|
|
||||||
title: string;
|
|
||||||
description: string;
|
|
||||||
responsible: string;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface UpdateRepairStatusCommand {
|
|
||||||
id: string;
|
|
||||||
status: string;
|
|
||||||
done: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface DeleteRepairCommand {
|
|
||||||
id: string;
|
|
||||||
}
|
|
|
@ -1,115 +0,0 @@
|
||||||
import { dataSource } from "../../data-source";
|
|
||||||
import { repair } from "../../entity/unit/repair";
|
|
||||||
import DatabaseActionException from "../../exceptions/databaseActionException";
|
|
||||||
import DamageReportCommandHandler from "./damageReportCommandHandler";
|
|
||||||
import {
|
|
||||||
CreateRepairCommand,
|
|
||||||
UpdateRepairCommand,
|
|
||||||
DeleteRepairCommand,
|
|
||||||
UpdateRepairStatusCommand,
|
|
||||||
} from "./repairCommand";
|
|
||||||
|
|
||||||
export default abstract class RepairCommandHandler {
|
|
||||||
/**
|
|
||||||
* @description create repair
|
|
||||||
* @param {CreateRepairCommand} createRepair
|
|
||||||
* @returns {Promise<string>}
|
|
||||||
*/
|
|
||||||
static async create(createRepair: CreateRepairCommand): Promise<string> {
|
|
||||||
let resultId = "";
|
|
||||||
return await dataSource
|
|
||||||
.transaction(async (manager) => {
|
|
||||||
await manager
|
|
||||||
.createQueryBuilder()
|
|
||||||
.insert()
|
|
||||||
.into(repair)
|
|
||||||
.values({
|
|
||||||
status: "in Arbeit",
|
|
||||||
title: createRepair.title,
|
|
||||||
description: createRepair.description,
|
|
||||||
responsible: createRepair.responsible,
|
|
||||||
equipmentId: createRepair.affected == "equipment" ? createRepair.affectedId : null,
|
|
||||||
vehicleId: createRepair.affected == "vehicle" ? createRepair.affectedId : null,
|
|
||||||
wearableId: createRepair.affected == "wearable" ? createRepair.affectedId : null,
|
|
||||||
})
|
|
||||||
.execute()
|
|
||||||
.then((result) => {
|
|
||||||
resultId = result.identifiers[0].id;
|
|
||||||
});
|
|
||||||
|
|
||||||
for (const report of createRepair.reports) {
|
|
||||||
await DamageReportCommandHandler.updateRelatedMaintenanceTransaction(manager, {
|
|
||||||
id: report,
|
|
||||||
repairId: resultId,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.then(() => {
|
|
||||||
return resultId;
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
throw new DatabaseActionException("CREATE", "repair", err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description update repair
|
|
||||||
* @param {UpdateRepairCommand} updateRepair
|
|
||||||
* @returns {Promise<void>}
|
|
||||||
*/
|
|
||||||
static async update(updateRepair: UpdateRepairCommand): Promise<void> {
|
|
||||||
return await dataSource
|
|
||||||
.createQueryBuilder()
|
|
||||||
.update(repair)
|
|
||||||
.set({
|
|
||||||
title: updateRepair.title,
|
|
||||||
description: updateRepair.description,
|
|
||||||
responsible: updateRepair.responsible,
|
|
||||||
})
|
|
||||||
.where("id = :id", { id: updateRepair.id })
|
|
||||||
.execute()
|
|
||||||
.then(() => {})
|
|
||||||
.catch((err) => {
|
|
||||||
throw new DatabaseActionException("UPDATE", "repair", err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description update repair
|
|
||||||
* @param {UpdateRepairStatusCommand} updateRepair
|
|
||||||
* @returns {Promise<void>}
|
|
||||||
*/
|
|
||||||
static async updateStatus(updateRepair: UpdateRepairStatusCommand): Promise<void> {
|
|
||||||
return await dataSource
|
|
||||||
.createQueryBuilder()
|
|
||||||
.update(repair)
|
|
||||||
.set({
|
|
||||||
status: updateRepair.status,
|
|
||||||
finishedAt: updateRepair.done ? new Date() : null,
|
|
||||||
})
|
|
||||||
.where("id = :id", { id: updateRepair.id })
|
|
||||||
.execute()
|
|
||||||
.then(() => {})
|
|
||||||
.catch((err) => {
|
|
||||||
throw new DatabaseActionException("UPDATE", "repair", err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description delete repair
|
|
||||||
* @param {DeleteRepairCommand} deleteRepair
|
|
||||||
* @returns {Promise<void>}
|
|
||||||
*/
|
|
||||||
static async delete(deleteRepair: DeleteRepairCommand): Promise<void> {
|
|
||||||
return await dataSource
|
|
||||||
.createQueryBuilder()
|
|
||||||
.delete()
|
|
||||||
.from(repair)
|
|
||||||
.where("id = :id", { id: deleteRepair.id })
|
|
||||||
.execute()
|
|
||||||
.then(() => {})
|
|
||||||
.catch((err) => {
|
|
||||||
throw new DatabaseActionException("DELETE", "repair", err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -18,7 +18,7 @@ export async function getAllDamageReportsByStatus(req: Request, res: Response):
|
||||||
let count = parseInt((req.query.count as string) ?? "25");
|
let count = parseInt((req.query.count as string) ?? "25");
|
||||||
let noLimit = req.query.noLimit === "true";
|
let noLimit = req.query.noLimit === "true";
|
||||||
|
|
||||||
let [damageReports, total] = await DamageReportService.getAllByStatus(done, { offset, count, noLimit });
|
let [damageReports, total] = await DamageReportService.getAll(done, { offset, count, noLimit });
|
||||||
|
|
||||||
res.json({
|
res.json({
|
||||||
damageReports: DamageReportFactory.mapToBase(damageReports),
|
damageReports: DamageReportFactory.mapToBase(damageReports),
|
||||||
|
@ -72,25 +72,6 @@ export async function getDamageReportById(req: Request, res: Response): Promise<
|
||||||
res.json(DamageReportFactory.mapToSingle(damageReport));
|
res.json(DamageReportFactory.mapToSingle(damageReport));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @description get reports by Ids
|
|
||||||
* @param req {Request} Express req object
|
|
||||||
* @param res {Response} Express res object
|
|
||||||
* @returns {Promise<*>}
|
|
||||||
*/
|
|
||||||
export async function getDamageReportsByIds(req: Request, res: Response): Promise<any> {
|
|
||||||
let ids = req.body.ids as Array<string>;
|
|
||||||
|
|
||||||
let [damageReports, total] = await DamageReportService.getAll({ noLimit: true, ids });
|
|
||||||
|
|
||||||
res.json({
|
|
||||||
damageReports: DamageReportFactory.mapToBase(damageReports),
|
|
||||||
total: total,
|
|
||||||
offset: 0,
|
|
||||||
count: total,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description provide uploaded image for damage report
|
* @description provide uploaded image for damage report
|
||||||
* @param req {Request} Express req object
|
* @param req {Request} Express req object
|
||||||
|
@ -113,7 +94,6 @@ export async function provideDamageReportImageUpload(req: Request, res: Response
|
||||||
* @returns {Promise<*>}
|
* @returns {Promise<*>}
|
||||||
*/
|
*/
|
||||||
export async function createDamageReport(req: Request, res: Response): Promise<any> {
|
export async function createDamageReport(req: Request, res: Response): Promise<any> {
|
||||||
const title = req.body.title;
|
|
||||||
const description = req.body.description;
|
const description = req.body.description;
|
||||||
const location = req.body.location;
|
const location = req.body.location;
|
||||||
const note = req.body.note;
|
const note = req.body.note;
|
||||||
|
@ -126,7 +106,6 @@ export async function createDamageReport(req: Request, res: Response): Promise<a
|
||||||
throw new BadRequestException("set assigned to equipment or vehicle or wearable");
|
throw new BadRequestException("set assigned to equipment or vehicle or wearable");
|
||||||
|
|
||||||
let createDamageReport: CreateDamageReportCommand = {
|
let createDamageReport: CreateDamageReportCommand = {
|
||||||
title,
|
|
||||||
description,
|
description,
|
||||||
location,
|
location,
|
||||||
noteByReporter: note,
|
noteByReporter: note,
|
||||||
|
|
|
@ -1,168 +0,0 @@
|
||||||
import { Request, Response } from "express";
|
|
||||||
import RepairService from "../../../service/unit/repairService";
|
|
||||||
import RepairFactory from "../../../factory/admin/unit/repair";
|
|
||||||
import {
|
|
||||||
CreateRepairCommand,
|
|
||||||
UpdateRepairCommand,
|
|
||||||
UpdateRepairStatusCommand,
|
|
||||||
} from "../../../command/unit/repairCommand";
|
|
||||||
import RepairCommandHandler from "../../../command/unit/repairCommandHandler";
|
|
||||||
import BadRequestException from "../../../exceptions/badRequestException";
|
|
||||||
import { FileSystemHelper } from "../../../helpers/fileSystemHelper";
|
|
||||||
import { UpdateDamageReportRelatedRepairCommand } from "../../../command/unit/damageReportCommand";
|
|
||||||
import DamageReportCommandHandler from "../../../command/unit/damageReportCommandHandler";
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description get all repairs by status
|
|
||||||
* @param req {Request} Express req object
|
|
||||||
* @param res {Response} Express res object
|
|
||||||
* @returns {Promise<*>}
|
|
||||||
*/
|
|
||||||
export async function getAllRepairsByStatus(req: Request, res: Response): Promise<any> {
|
|
||||||
let done = req.query.done === "true";
|
|
||||||
let offset = parseInt((req.query.offset as string) ?? "0");
|
|
||||||
let count = parseInt((req.query.count as string) ?? "25");
|
|
||||||
let noLimit = req.query.noLimit === "true";
|
|
||||||
|
|
||||||
let [repairs, total] = await RepairService.getAll(done, { offset, count, noLimit });
|
|
||||||
|
|
||||||
res.json({
|
|
||||||
repairs: RepairFactory.mapToBase(repairs),
|
|
||||||
total: total,
|
|
||||||
offset: offset,
|
|
||||||
count: count,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description get all repairs for related id
|
|
||||||
* @param req {Request} Express req object
|
|
||||||
* @param res {Response} Express res object
|
|
||||||
* @returns {Promise<*>}
|
|
||||||
*/
|
|
||||||
export async function getAllRepairsForRelated(req: Request, res: Response): Promise<any> {
|
|
||||||
let relation = req.params.related as "vehicle" | "equipment" | "wearable";
|
|
||||||
let relationId = req.params.relatedId as string;
|
|
||||||
let offset = parseInt((req.query.offset as string) ?? "0");
|
|
||||||
let count = parseInt((req.query.count as string) ?? "25");
|
|
||||||
let noLimit = req.query.noLimit === "true";
|
|
||||||
|
|
||||||
let where;
|
|
||||||
if (relation == "equipment") {
|
|
||||||
where = { equipmentId: relationId };
|
|
||||||
} else if (relation == "vehicle") {
|
|
||||||
where = { vehicleId: relationId };
|
|
||||||
} else {
|
|
||||||
where = { wearableId: relationId };
|
|
||||||
}
|
|
||||||
let [repairs, total] = await RepairService.getAllForRelated(where, { offset, count, noLimit });
|
|
||||||
|
|
||||||
res.json({
|
|
||||||
repairs: RepairFactory.mapToBase(repairs),
|
|
||||||
total: total,
|
|
||||||
offset: offset,
|
|
||||||
count: count,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description get repair by id
|
|
||||||
* @param req {Request} Express req object
|
|
||||||
* @param res {Response} Express res object
|
|
||||||
* @returns {Promise<*>}
|
|
||||||
*/
|
|
||||||
export async function getRepairById(req: Request, res: Response): Promise<any> {
|
|
||||||
const repairId = req.params.id;
|
|
||||||
let repair = await RepairService.getById(repairId);
|
|
||||||
|
|
||||||
res.json(RepairFactory.mapToSingle(repair));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description create repair
|
|
||||||
* @param req {Request} Express req object
|
|
||||||
* @param res {Response} Express res object
|
|
||||||
* @returns {Promise<*>}
|
|
||||||
*/
|
|
||||||
export async function createRepair(req: Request, res: Response): Promise<any> {
|
|
||||||
const title = req.body.title;
|
|
||||||
const description = req.body.description;
|
|
||||||
const responsible = req.body.responsible;
|
|
||||||
const reports = req.body.reports;
|
|
||||||
const affectedId = req.body.affectedId;
|
|
||||||
const affected = req.body.affected;
|
|
||||||
|
|
||||||
if (affected != "equipment" && affected != "vehicle" && affected != "wearable")
|
|
||||||
throw new BadRequestException("set assigned to equipment or vehicle or wearable");
|
|
||||||
|
|
||||||
let createRepair: CreateRepairCommand = {
|
|
||||||
title,
|
|
||||||
description,
|
|
||||||
affectedId,
|
|
||||||
affected,
|
|
||||||
responsible,
|
|
||||||
reports,
|
|
||||||
};
|
|
||||||
let repairId = await RepairCommandHandler.create(createRepair);
|
|
||||||
|
|
||||||
res.status(200).send(repairId);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description update repair by id
|
|
||||||
* @param req {Request} Express req object
|
|
||||||
* @param res {Response} Express res object
|
|
||||||
* @returns {Promise<*>}
|
|
||||||
*/
|
|
||||||
export async function updateRepairById(req: Request, res: Response): Promise<any> {
|
|
||||||
const repairId = req.params.id;
|
|
||||||
const title = req.body.title;
|
|
||||||
const description = req.body.description;
|
|
||||||
const responsible = req.body.responsible;
|
|
||||||
|
|
||||||
let updateRepair: UpdateRepairCommand = {
|
|
||||||
id: repairId,
|
|
||||||
title,
|
|
||||||
description,
|
|
||||||
responsible,
|
|
||||||
};
|
|
||||||
await RepairCommandHandler.update(updateRepair);
|
|
||||||
|
|
||||||
res.sendStatus(204);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description update repair by id
|
|
||||||
* @param req {Request} Express req object
|
|
||||||
* @param res {Response} Express res object
|
|
||||||
* @returns {Promise<*>}
|
|
||||||
*/
|
|
||||||
export async function updateRepairReportsById(req: Request, res: Response): Promise<any> {
|
|
||||||
const repairId = req.params.id;
|
|
||||||
const reports = req.body.reports as Array<string>;
|
|
||||||
|
|
||||||
await DamageReportCommandHandler.updateRelatedMaintenanceMulti(repairId, reports);
|
|
||||||
|
|
||||||
res.sendStatus(204);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description update repair by id
|
|
||||||
* @param req {Request} Express req object
|
|
||||||
* @param res {Response} Express res object
|
|
||||||
* @returns {Promise<*>}
|
|
||||||
*/
|
|
||||||
export async function updateRepairStatusById(req: Request, res: Response): Promise<any> {
|
|
||||||
const repairId = req.params.id;
|
|
||||||
const status = req.body.status;
|
|
||||||
const done = req.body.done;
|
|
||||||
|
|
||||||
let updateRepair: UpdateRepairStatusCommand = {
|
|
||||||
id: repairId,
|
|
||||||
status,
|
|
||||||
done,
|
|
||||||
};
|
|
||||||
await RepairCommandHandler.updateStatus(updateRepair);
|
|
||||||
|
|
||||||
res.sendStatus(204);
|
|
||||||
}
|
|
|
@ -120,7 +120,6 @@ export async function createDamageReport(req: Request, res: Response): Promise<a
|
||||||
| MinifiedEquipmentViewModel
|
| MinifiedEquipmentViewModel
|
||||||
| MinifiedVehicleViewModel
|
| MinifiedVehicleViewModel
|
||||||
| MinifiedWearableViewModel;
|
| MinifiedWearableViewModel;
|
||||||
const title = req.body.title;
|
|
||||||
const description = req.body.description;
|
const description = req.body.description;
|
||||||
const location = req.body.location;
|
const location = req.body.location;
|
||||||
const note = req.body.note;
|
const note = req.body.note;
|
||||||
|
@ -128,7 +127,6 @@ export async function createDamageReport(req: Request, res: Response): Promise<a
|
||||||
const images = req.files as Express.Multer.File[];
|
const images = req.files as Express.Multer.File[];
|
||||||
|
|
||||||
let createDamageReport: CreateDamageReportCommand = {
|
let createDamageReport: CreateDamageReportCommand = {
|
||||||
title: title,
|
|
||||||
description: description,
|
description: description,
|
||||||
location: location,
|
location: location,
|
||||||
noteByReporter: note,
|
noteByReporter: note,
|
||||||
|
|
|
@ -65,8 +65,7 @@ import { maintenance } from "./entity/unit/maintenance";
|
||||||
import { BackupAndResetDatabase1749296262915 } from "./migrations/1749296262915-BackupAndResetDatabase";
|
import { BackupAndResetDatabase1749296262915 } from "./migrations/1749296262915-BackupAndResetDatabase";
|
||||||
import { CreateSchema1749296280721 } from "./migrations/1749296280721-CreateSchema";
|
import { CreateSchema1749296280721 } from "./migrations/1749296280721-CreateSchema";
|
||||||
import { UpdateNewsletterQueryRelation1752502069178 } from "./migrations/1752502069178-updateNewsletterQueryRelation";
|
import { UpdateNewsletterQueryRelation1752502069178 } from "./migrations/1752502069178-updateNewsletterQueryRelation";
|
||||||
import { UnitBase1752914551204 } from "./migrations/1752914551204-UnitBase";
|
import { UnitBase1749361405703 } from "./migrations/1749361405703-UnitBase";
|
||||||
import { repair } from "./entity/unit/repair";
|
|
||||||
|
|
||||||
configCheck();
|
configCheck();
|
||||||
|
|
||||||
|
@ -132,7 +131,6 @@ const dataSource = new DataSource({
|
||||||
wearable,
|
wearable,
|
||||||
damageReport,
|
damageReport,
|
||||||
maintenance,
|
maintenance,
|
||||||
repair,
|
|
||||||
inspectionPlan,
|
inspectionPlan,
|
||||||
inspectionVersionedPlan,
|
inspectionVersionedPlan,
|
||||||
inspectionPoint,
|
inspectionPoint,
|
||||||
|
@ -142,8 +140,8 @@ const dataSource = new DataSource({
|
||||||
migrations: [
|
migrations: [
|
||||||
BackupAndResetDatabase1749296262915,
|
BackupAndResetDatabase1749296262915,
|
||||||
CreateSchema1749296280721,
|
CreateSchema1749296280721,
|
||||||
UnitBase1752914551204,
|
|
||||||
UpdateNewsletterQueryRelation1752502069178,
|
UpdateNewsletterQueryRelation1752502069178,
|
||||||
|
UnitBase1749361405703,
|
||||||
],
|
],
|
||||||
migrationsRun: true,
|
migrationsRun: true,
|
||||||
migrationsTransactionMode: "each",
|
migrationsTransactionMode: "each",
|
||||||
|
|
|
@ -2,7 +2,7 @@ import { Column, CreateDateColumn, Entity, ManyToOne, PrimaryGeneratedColumn } f
|
||||||
import { equipment } from "./equipment/equipment";
|
import { equipment } from "./equipment/equipment";
|
||||||
import { wearable } from "./wearable/wearable";
|
import { wearable } from "./wearable/wearable";
|
||||||
import { vehicle } from "./vehicle/vehicle";
|
import { vehicle } from "./vehicle/vehicle";
|
||||||
import { repair } from "./repair";
|
import { maintenance } from "./maintenance";
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export class damageReport {
|
export class damageReport {
|
||||||
|
@ -18,9 +18,6 @@ export class damageReport {
|
||||||
@Column({ type: "boolean", default: false })
|
@Column({ type: "boolean", default: false })
|
||||||
done: boolean;
|
done: boolean;
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
|
||||||
title: string;
|
|
||||||
|
|
||||||
@Column({ type: "text" })
|
@Column({ type: "text" })
|
||||||
description: string;
|
description: string;
|
||||||
|
|
||||||
|
@ -37,9 +34,9 @@ export class damageReport {
|
||||||
type: "text",
|
type: "text",
|
||||||
transformer: {
|
transformer: {
|
||||||
from(value: string): Array<string> {
|
from(value: string): Array<string> {
|
||||||
return (value ?? "").split(",").filter((i) => !!i);
|
return value.split(",").filter((i) => !!i);
|
||||||
},
|
},
|
||||||
to(value: Array<string> = []): string {
|
to(value: Array<string>): string {
|
||||||
return value.join(",");
|
return value.join(",");
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -59,7 +56,7 @@ export class damageReport {
|
||||||
wearableId?: string;
|
wearableId?: string;
|
||||||
|
|
||||||
@Column({ nullable: true, default: null })
|
@Column({ nullable: true, default: null })
|
||||||
repairId?: string;
|
maintenanceId?: string;
|
||||||
|
|
||||||
@ManyToOne(() => equipment, (e) => e.reports, {
|
@ManyToOne(() => equipment, (e) => e.reports, {
|
||||||
nullable: true,
|
nullable: true,
|
||||||
|
@ -82,10 +79,10 @@ export class damageReport {
|
||||||
})
|
})
|
||||||
wearable?: wearable;
|
wearable?: wearable;
|
||||||
|
|
||||||
@ManyToOne(() => repair, (m) => m.reports, {
|
@ManyToOne(() => maintenance, (m) => m.reports, {
|
||||||
nullable: true,
|
nullable: true,
|
||||||
onDelete: "SET NULL",
|
onDelete: "SET NULL",
|
||||||
onUpdate: "RESTRICT",
|
onUpdate: "RESTRICT",
|
||||||
})
|
})
|
||||||
repair?: repair;
|
maintenance?: maintenance;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,6 @@ import { equipmentType } from "./equipmentType";
|
||||||
import { damageReport } from "../damageReport";
|
import { damageReport } from "../damageReport";
|
||||||
import { inspection } from "../inspection/inspection";
|
import { inspection } from "../inspection/inspection";
|
||||||
import { maintenance } from "../maintenance";
|
import { maintenance } from "../maintenance";
|
||||||
import { repair } from "../repair";
|
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export class equipment {
|
export class equipment {
|
||||||
|
@ -39,9 +38,6 @@ export class equipment {
|
||||||
@OneToMany(() => damageReport, (d) => d.equipment, { cascade: ["insert"] })
|
@OneToMany(() => damageReport, (d) => d.equipment, { cascade: ["insert"] })
|
||||||
reports: damageReport[];
|
reports: damageReport[];
|
||||||
|
|
||||||
@OneToMany(() => repair, (d) => d.equipment, { cascade: ["insert"] })
|
|
||||||
repairs: repair[];
|
|
||||||
|
|
||||||
@OneToMany(() => maintenance, (m) => m.equipment, { cascade: ["insert"] })
|
@OneToMany(() => maintenance, (m) => m.equipment, { cascade: ["insert"] })
|
||||||
maintenances: maintenance[];
|
maintenances: maintenance[];
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
import { Column, ColumnType, CreateDateColumn, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn } from "typeorm";
|
import { Column, CreateDateColumn, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn } from "typeorm";
|
||||||
import { equipment } from "./equipment/equipment";
|
import { equipment } from "./equipment/equipment";
|
||||||
import { wearable } from "./wearable/wearable";
|
import { wearable } from "./wearable/wearable";
|
||||||
import { vehicle } from "./vehicle/vehicle";
|
import { vehicle } from "./vehicle/vehicle";
|
||||||
import { damageReport } from "./damageReport";
|
import { damageReport } from "./damageReport";
|
||||||
import { getTypeByORM } from "../../migrations/ormHelper";
|
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export class maintenance {
|
export class maintenance {
|
||||||
|
@ -13,12 +12,12 @@ export class maintenance {
|
||||||
@CreateDateColumn()
|
@CreateDateColumn()
|
||||||
createdAt: Date;
|
createdAt: Date;
|
||||||
|
|
||||||
@Column({ type: getTypeByORM("datetime").type as ColumnType, nullable: true, default: null })
|
|
||||||
finishedAt?: Date;
|
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
@Column({ type: "varchar", length: 255 })
|
||||||
status: string;
|
status: string;
|
||||||
|
|
||||||
|
@Column({ type: "boolean", default: false })
|
||||||
|
done: boolean;
|
||||||
|
|
||||||
@Column({ type: "text" })
|
@Column({ type: "text" })
|
||||||
description: string;
|
description: string;
|
||||||
|
|
||||||
|
@ -51,4 +50,7 @@ export class maintenance {
|
||||||
onUpdate: "RESTRICT",
|
onUpdate: "RESTRICT",
|
||||||
})
|
})
|
||||||
wearable?: wearable;
|
wearable?: wearable;
|
||||||
|
|
||||||
|
@OneToMany(() => damageReport, (dr) => dr.maintenance)
|
||||||
|
reports: damageReport[];
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,79 +0,0 @@
|
||||||
import { Column, ColumnType, CreateDateColumn, Entity, ManyToOne, OneToMany, PrimaryGeneratedColumn } from "typeorm";
|
|
||||||
import { equipment } from "./equipment/equipment";
|
|
||||||
import { wearable } from "./wearable/wearable";
|
|
||||||
import { vehicle } from "./vehicle/vehicle";
|
|
||||||
import { damageReport } from "./damageReport";
|
|
||||||
import { getTypeByORM } from "../../migrations/ormHelper";
|
|
||||||
|
|
||||||
@Entity()
|
|
||||||
export class repair {
|
|
||||||
@PrimaryGeneratedColumn("uuid")
|
|
||||||
id: string;
|
|
||||||
|
|
||||||
@CreateDateColumn()
|
|
||||||
createdAt: Date;
|
|
||||||
|
|
||||||
@Column({ type: getTypeByORM("datetime").type as ColumnType, nullable: true, default: null })
|
|
||||||
finishedAt?: Date;
|
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
|
||||||
status: string;
|
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
|
||||||
responsible: string;
|
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255 })
|
|
||||||
title: string;
|
|
||||||
|
|
||||||
@Column({ type: "text" })
|
|
||||||
description: string;
|
|
||||||
|
|
||||||
@Column({
|
|
||||||
type: "text",
|
|
||||||
transformer: {
|
|
||||||
from(value: string): Array<string> {
|
|
||||||
return (value ?? "").split(",").filter((i) => !!i);
|
|
||||||
},
|
|
||||||
to(value: Array<string> = []): string {
|
|
||||||
return value.join(",");
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
images: string[];
|
|
||||||
|
|
||||||
@Column({ type: "varchar", length: 255, nullable: true, default: null })
|
|
||||||
reportDocument?: string;
|
|
||||||
|
|
||||||
@Column({ nullable: true, default: null })
|
|
||||||
equipmentId?: string;
|
|
||||||
|
|
||||||
@Column({ nullable: true, default: null })
|
|
||||||
vehicleId?: string;
|
|
||||||
|
|
||||||
@Column({ nullable: true, default: null })
|
|
||||||
wearableId?: string;
|
|
||||||
|
|
||||||
@ManyToOne(() => equipment, (e) => e.maintenances, {
|
|
||||||
nullable: true,
|
|
||||||
onDelete: "CASCADE",
|
|
||||||
onUpdate: "RESTRICT",
|
|
||||||
})
|
|
||||||
equipment?: equipment;
|
|
||||||
|
|
||||||
@ManyToOne(() => vehicle, (v) => v.maintenances, {
|
|
||||||
nullable: true,
|
|
||||||
onDelete: "CASCADE",
|
|
||||||
onUpdate: "RESTRICT",
|
|
||||||
})
|
|
||||||
vehicle?: vehicle;
|
|
||||||
|
|
||||||
@ManyToOne(() => wearable, (w) => w.maintenances, {
|
|
||||||
nullable: true,
|
|
||||||
onDelete: "CASCADE",
|
|
||||||
onUpdate: "RESTRICT",
|
|
||||||
})
|
|
||||||
wearable?: wearable;
|
|
||||||
|
|
||||||
@OneToMany(() => damageReport, (dr) => dr.repair)
|
|
||||||
reports: damageReport[];
|
|
||||||
}
|
|
|
@ -4,7 +4,6 @@ import { vehicleType } from "./vehicleType";
|
||||||
import { damageReport } from "../damageReport";
|
import { damageReport } from "../damageReport";
|
||||||
import { inspection } from "../inspection/inspection";
|
import { inspection } from "../inspection/inspection";
|
||||||
import { maintenance } from "../maintenance";
|
import { maintenance } from "../maintenance";
|
||||||
import { repair } from "../repair";
|
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export class vehicle {
|
export class vehicle {
|
||||||
|
@ -39,9 +38,6 @@ export class vehicle {
|
||||||
@OneToMany(() => damageReport, (d) => d.vehicle, { cascade: ["insert"] })
|
@OneToMany(() => damageReport, (d) => d.vehicle, { cascade: ["insert"] })
|
||||||
reports: damageReport[];
|
reports: damageReport[];
|
||||||
|
|
||||||
@OneToMany(() => repair, (d) => d.vehicle, { cascade: ["insert"] })
|
|
||||||
repairs: repair[];
|
|
||||||
|
|
||||||
@OneToMany(() => maintenance, (m) => m.vehicle, { cascade: ["insert"] })
|
@OneToMany(() => maintenance, (m) => m.vehicle, { cascade: ["insert"] })
|
||||||
maintenances: maintenance[];
|
maintenances: maintenance[];
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,6 @@ import { damageReport } from "../damageReport";
|
||||||
import { member } from "../../club/member/member";
|
import { member } from "../../club/member/member";
|
||||||
import { inspection } from "../inspection/inspection";
|
import { inspection } from "../inspection/inspection";
|
||||||
import { maintenance } from "../maintenance";
|
import { maintenance } from "../maintenance";
|
||||||
import { repair } from "../repair";
|
|
||||||
|
|
||||||
@Entity()
|
@Entity()
|
||||||
export class wearable {
|
export class wearable {
|
||||||
|
@ -50,9 +49,6 @@ export class wearable {
|
||||||
@OneToMany(() => damageReport, (d) => d.wearable, { cascade: ["insert"] })
|
@OneToMany(() => damageReport, (d) => d.wearable, { cascade: ["insert"] })
|
||||||
reports: damageReport[];
|
reports: damageReport[];
|
||||||
|
|
||||||
@OneToMany(() => repair, (d) => d.wearable, { cascade: ["insert"] })
|
|
||||||
repairs: repair[];
|
|
||||||
|
|
||||||
@OneToMany(() => maintenance, (m) => m.wearable, { cascade: ["insert"] })
|
@OneToMany(() => maintenance, (m) => m.wearable, { cascade: ["insert"] })
|
||||||
maintenances: maintenance[];
|
maintenances: maintenance[];
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,6 @@ import { damageReport } from "../../../entity/unit/damageReport";
|
||||||
import { DamageReportAssigned, DamageReportViewModel } from "../../../viewmodel/admin/unit/damageReport.models";
|
import { DamageReportAssigned, DamageReportViewModel } from "../../../viewmodel/admin/unit/damageReport.models";
|
||||||
import EquipmentFactory from "./equipment/equipment";
|
import EquipmentFactory from "./equipment/equipment";
|
||||||
import MaintenanceFactory from "./maintenance";
|
import MaintenanceFactory from "./maintenance";
|
||||||
import RepairFactory from "./repair";
|
|
||||||
import VehicleFactory from "./vehicle/vehicle";
|
import VehicleFactory from "./vehicle/vehicle";
|
||||||
import WearableFactory from "./wearable/wearable";
|
import WearableFactory from "./wearable/wearable";
|
||||||
|
|
||||||
|
@ -18,19 +17,19 @@ export default abstract class DamageReportFactory {
|
||||||
assigned = {
|
assigned = {
|
||||||
relatedId: record.equipmentId,
|
relatedId: record.equipmentId,
|
||||||
assigned: "equipment",
|
assigned: "equipment",
|
||||||
related: record.equipment ? EquipmentFactory.mapToSingle(record.equipment) : undefined,
|
related: EquipmentFactory.mapToSingle(record.equipment),
|
||||||
};
|
};
|
||||||
} else if (record?.vehicleId) {
|
} else if (record?.vehicleId) {
|
||||||
assigned = {
|
assigned = {
|
||||||
relatedId: record.vehicleId,
|
relatedId: record.vehicleId,
|
||||||
assigned: "vehicle",
|
assigned: "vehicle",
|
||||||
related: record.vehicle ? VehicleFactory.mapToSingle(record.vehicle) : undefined,
|
related: VehicleFactory.mapToSingle(record.vehicle),
|
||||||
};
|
};
|
||||||
} else if (record?.wearableId) {
|
} else if (record?.wearableId) {
|
||||||
assigned = {
|
assigned = {
|
||||||
relatedId: record.wearableId,
|
relatedId: record.wearableId,
|
||||||
assigned: "wearable",
|
assigned: "wearable",
|
||||||
related: record.wearable ? WearableFactory.mapToSingle(record.wearable) : undefined,
|
related: WearableFactory.mapToSingle(record.wearable),
|
||||||
};
|
};
|
||||||
} else {
|
} else {
|
||||||
assigned = {
|
assigned = {
|
||||||
|
@ -45,7 +44,6 @@ export default abstract class DamageReportFactory {
|
||||||
reportedAt: record.reportedAt,
|
reportedAt: record.reportedAt,
|
||||||
status: record.status,
|
status: record.status,
|
||||||
done: record.done,
|
done: record.done,
|
||||||
title: record.title,
|
|
||||||
description: record.description,
|
description: record.description,
|
||||||
location: record.location,
|
location: record.location,
|
||||||
noteByReporter: record.noteByReporter,
|
noteByReporter: record.noteByReporter,
|
||||||
|
@ -53,7 +51,7 @@ export default abstract class DamageReportFactory {
|
||||||
images: record.images,
|
images: record.images,
|
||||||
reportedBy: record?.reportedBy,
|
reportedBy: record?.reportedBy,
|
||||||
...assigned,
|
...assigned,
|
||||||
repair: record.repair ? RepairFactory.mapToSingle(record.repair) : null,
|
maintenance: record.maintenance ? MaintenanceFactory.mapToSingle(record.maintenance) : null,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,8 +37,10 @@ export default abstract class MaintenanceFactory {
|
||||||
id: record.id,
|
id: record.id,
|
||||||
createdAt: record.createdAt,
|
createdAt: record.createdAt,
|
||||||
status: record.status,
|
status: record.status,
|
||||||
|
done: record.done,
|
||||||
description: record.description,
|
description: record.description,
|
||||||
...assigned,
|
...assigned,
|
||||||
|
reports: record.reports ? DamageReportFactory.mapToBase(record.reports) : [],
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,65 +0,0 @@
|
||||||
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));
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -516,7 +516,6 @@ export default abstract class BackupHelper {
|
||||||
wearable: await dataSource.getRepository("wearable").find(),
|
wearable: await dataSource.getRepository("wearable").find(),
|
||||||
maintenance: await dataSource.getRepository("maintenance").find(),
|
maintenance: await dataSource.getRepository("maintenance").find(),
|
||||||
damage_report: await dataSource.getRepository("damage_report").find(),
|
damage_report: await dataSource.getRepository("damage_report").find(),
|
||||||
repair: await dataSource.getRepository("repair").find(),
|
|
||||||
inspection: await dataSource.getRepository("inspection").find(),
|
inspection: await dataSource.getRepository("inspection").find(),
|
||||||
inspection_point_result: await dataSource.getRepository("inspection_point_result").find(),
|
inspection_point_result: await dataSource.getRepository("inspection_point_result").find(),
|
||||||
};
|
};
|
||||||
|
@ -904,26 +903,23 @@ export default abstract class BackupHelper {
|
||||||
await this.transactionManager.getRepository("setting").save(data);
|
await this.transactionManager.getRepository("setting").save(data);
|
||||||
}
|
}
|
||||||
private static async setUnitBase(data: { [key: string]: Array<any> }): Promise<void> {
|
private static async setUnitBase(data: { [key: string]: Array<any> }): Promise<void> {
|
||||||
await this.transactionManager.getRepository("equipment_type").save(data["equipment_type"] ?? []);
|
await this.transactionManager.getRepository("equipment_type").save(data["equipment_type"]);
|
||||||
await this.transactionManager.getRepository("vehicle_type").save(data["vehicle_type"] ?? []);
|
await this.transactionManager.getRepository("vehicle_type").save(data["vehicle_type"]);
|
||||||
await this.transactionManager.getRepository("wearable_type").save(data["wearable_type"] ?? []);
|
await this.transactionManager.getRepository("wearable_type").save(data["wearable_type"]);
|
||||||
|
|
||||||
await this.transactionManager.getRepository("inspection_plan").save(data["inspection_plan"] ?? []);
|
await this.transactionManager.getRepository("inspection_plan").save(data["inspection_plan"]);
|
||||||
await this.transactionManager
|
await this.transactionManager.getRepository("inspection_versioned_plan").save(data["inspection_versioned_plan"]);
|
||||||
.getRepository("inspection_versioned_plan")
|
await this.transactionManager.getRepository("inspection_point").save(data["inspection_point"]);
|
||||||
.save(data["inspection_versioned_plan"] ?? []);
|
|
||||||
await this.transactionManager.getRepository("inspection_point").save(data["inspection_point"] ?? []);
|
|
||||||
}
|
}
|
||||||
private static async setUnitInstances(data: { [key: string]: Array<any> }): Promise<void> {
|
private static async setUnitInstances(data: { [key: string]: Array<any> }): Promise<void> {
|
||||||
await this.transactionManager.getRepository("equipment").save(data["equipment"] ?? []);
|
await this.transactionManager.getRepository("equipment").save(data["equipment"]);
|
||||||
await this.transactionManager.getRepository("vehicle").save(data["vehicle"] ?? []);
|
await this.transactionManager.getRepository("vehicle").save(data["vehicle"]);
|
||||||
await this.transactionManager.getRepository("wearable").save(data["wearable"] ?? []);
|
await this.transactionManager.getRepository("wearable").save(data["wearable"]);
|
||||||
|
|
||||||
await this.transactionManager.getRepository("repair").save(data["repair"] ?? []);
|
await this.transactionManager.getRepository("damage_report").save(data["damage_report"]);
|
||||||
await this.transactionManager.getRepository("damage_report").save(data["damage_report"] ?? []);
|
await this.transactionManager.getRepository("maintenance").save(data["maintenance"]);
|
||||||
await this.transactionManager.getRepository("maintenance").save(data["maintenance"] ?? []);
|
|
||||||
|
|
||||||
await this.transactionManager.getRepository("inspection").save(data["inspection"] ?? []);
|
await this.transactionManager.getRepository("inspection").save(data["inspection"]);
|
||||||
await this.transactionManager.getRepository("inspection_point_result").save(data["inspection_point_result"] ?? []);
|
await this.transactionManager.getRepository("inspection_point_result").save(data["inspection_point_result"]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,12 +14,12 @@ import {
|
||||||
wearable_type_table,
|
wearable_type_table,
|
||||||
wearable_table,
|
wearable_table,
|
||||||
} from "./baseSchemaTables/unit";
|
} from "./baseSchemaTables/unit";
|
||||||
import { maintenance_table, damage_report_table, repair_table } from "./baseSchemaTables/unit_extend";
|
import { maintenance_table, damage_report_table } from "./baseSchemaTables/unit_extend";
|
||||||
import { availableTemplates } from "../type/templateTypes";
|
import { availableTemplates } from "../type/templateTypes";
|
||||||
import { template_usage_table } from "./baseSchemaTables/query_template";
|
import { template_usage_table } from "./baseSchemaTables/query_template";
|
||||||
|
|
||||||
export class UnitBase1752914551204 implements MigrationInterface {
|
export class UnitBase1749361405703 implements MigrationInterface {
|
||||||
name = "UnitBase1752914551204";
|
name = "UnitBase1749361405703";
|
||||||
|
|
||||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||||
await queryRunner.createTable(equipment_type_table, true, true, true);
|
await queryRunner.createTable(equipment_type_table, true, true, true);
|
||||||
|
@ -30,7 +30,6 @@ export class UnitBase1752914551204 implements MigrationInterface {
|
||||||
await queryRunner.createTable(wearable_table, true, true, true);
|
await queryRunner.createTable(wearable_table, true, true, true);
|
||||||
|
|
||||||
await queryRunner.createTable(maintenance_table, true, true, true);
|
await queryRunner.createTable(maintenance_table, true, true, true);
|
||||||
await queryRunner.createTable(repair_table, true, true, true);
|
|
||||||
await queryRunner.createTable(damage_report_table, true, true, true);
|
await queryRunner.createTable(damage_report_table, true, true, true);
|
||||||
|
|
||||||
await queryRunner.createTable(inspection_plan_table, true, true, true);
|
await queryRunner.createTable(inspection_plan_table, true, true, true);
|
||||||
|
@ -62,7 +61,6 @@ export class UnitBase1752914551204 implements MigrationInterface {
|
||||||
await queryRunner.dropTable(inspection_plan_table, true, true, true);
|
await queryRunner.dropTable(inspection_plan_table, true, true, true);
|
||||||
|
|
||||||
await queryRunner.dropTable(damage_report_table, true, true, true);
|
await queryRunner.dropTable(damage_report_table, true, true, true);
|
||||||
await queryRunner.dropTable(repair_table, true, true, true);
|
|
||||||
await queryRunner.dropTable(maintenance_table, true, true, true);
|
await queryRunner.dropTable(maintenance_table, true, true, true);
|
||||||
|
|
||||||
await queryRunner.dropTable(wearable_table, true, true, true);
|
await queryRunner.dropTable(wearable_table, true, true, true);
|
|
@ -8,7 +8,6 @@ export const damage_report_table = new Table({
|
||||||
{ name: "reportedAt", ...getTypeByORM("datetime"), default: getDefaultByORM("currentTimestamp") },
|
{ name: "reportedAt", ...getTypeByORM("datetime"), default: getDefaultByORM("currentTimestamp") },
|
||||||
{ name: "status", ...getTypeByORM("varchar") },
|
{ name: "status", ...getTypeByORM("varchar") },
|
||||||
{ name: "done", ...getTypeByORM("boolean"), default: getDefaultByORM("boolean", false) },
|
{ name: "done", ...getTypeByORM("boolean"), default: getDefaultByORM("boolean", false) },
|
||||||
{ name: "title", ...getTypeByORM("varchar") },
|
|
||||||
{ name: "description", ...getTypeByORM("text") },
|
{ name: "description", ...getTypeByORM("text") },
|
||||||
{ name: "location", ...getTypeByORM("text") },
|
{ name: "location", ...getTypeByORM("text") },
|
||||||
{ name: "noteByReporter", ...getTypeByORM("text") },
|
{ name: "noteByReporter", ...getTypeByORM("text") },
|
||||||
|
@ -18,7 +17,7 @@ export const damage_report_table = new Table({
|
||||||
{ name: "equipmentId", ...getTypeByORM("uuid", true) },
|
{ name: "equipmentId", ...getTypeByORM("uuid", true) },
|
||||||
{ name: "vehicleId", ...getTypeByORM("uuid", true) },
|
{ name: "vehicleId", ...getTypeByORM("uuid", true) },
|
||||||
{ name: "wearableId", ...getTypeByORM("uuid", true) },
|
{ name: "wearableId", ...getTypeByORM("uuid", true) },
|
||||||
{ name: "repairId", ...getTypeByORM("uuid", true) },
|
{ name: "maintenanceId", ...getTypeByORM("uuid", true) },
|
||||||
],
|
],
|
||||||
foreignKeys: [
|
foreignKeys: [
|
||||||
new TableForeignKey({
|
new TableForeignKey({
|
||||||
|
@ -43,9 +42,9 @@ export const damage_report_table = new Table({
|
||||||
onUpdate: "RESTRICT",
|
onUpdate: "RESTRICT",
|
||||||
}),
|
}),
|
||||||
new TableForeignKey({
|
new TableForeignKey({
|
||||||
columnNames: ["repairId"],
|
columnNames: ["maintenanceId"],
|
||||||
referencedColumnNames: ["id"],
|
referencedColumnNames: ["id"],
|
||||||
referencedTableName: "repair",
|
referencedTableName: "maintenance",
|
||||||
onDelete: "SET NULL",
|
onDelete: "SET NULL",
|
||||||
onUpdate: "RESTRICT",
|
onUpdate: "RESTRICT",
|
||||||
}),
|
}),
|
||||||
|
@ -57,8 +56,8 @@ export const maintenance_table = new Table({
|
||||||
columns: [
|
columns: [
|
||||||
{ name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary },
|
{ name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary },
|
||||||
{ name: "createdAt", ...getTypeByORM("datetime"), default: getDefaultByORM("currentTimestamp") },
|
{ name: "createdAt", ...getTypeByORM("datetime"), default: getDefaultByORM("currentTimestamp") },
|
||||||
{ name: "finishedAt", ...getTypeByORM("datetime", true) },
|
|
||||||
{ name: "status", ...getTypeByORM("varchar") },
|
{ name: "status", ...getTypeByORM("varchar") },
|
||||||
|
{ name: "done", ...getTypeByORM("boolean"), default: getDefaultByORM("boolean", false) },
|
||||||
{ name: "description", ...getTypeByORM("text") },
|
{ name: "description", ...getTypeByORM("text") },
|
||||||
{ name: "equipmentId", ...getTypeByORM("uuid", true) },
|
{ name: "equipmentId", ...getTypeByORM("uuid", true) },
|
||||||
{ name: "vehicleId", ...getTypeByORM("uuid", true) },
|
{ name: "vehicleId", ...getTypeByORM("uuid", true) },
|
||||||
|
@ -88,44 +87,3 @@ export const maintenance_table = new Table({
|
||||||
}),
|
}),
|
||||||
],
|
],
|
||||||
});
|
});
|
||||||
|
|
||||||
export const repair_table = new Table({
|
|
||||||
name: "repair",
|
|
||||||
columns: [
|
|
||||||
{ name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary },
|
|
||||||
{ name: "createdAt", ...getTypeByORM("datetime"), default: getDefaultByORM("currentTimestamp") },
|
|
||||||
{ name: "finishedAt", ...getTypeByORM("datetime", true) },
|
|
||||||
{ name: "status", ...getTypeByORM("varchar") },
|
|
||||||
{ name: "responsible", ...getTypeByORM("varchar") },
|
|
||||||
{ name: "title", ...getTypeByORM("varchar") },
|
|
||||||
{ name: "description", ...getTypeByORM("text") },
|
|
||||||
{ name: "images", ...getTypeByORM("text") },
|
|
||||||
{ name: "reportDocument", ...getTypeByORM("varchar", true) },
|
|
||||||
{ name: "equipmentId", ...getTypeByORM("uuid", true) },
|
|
||||||
{ name: "vehicleId", ...getTypeByORM("uuid", true) },
|
|
||||||
{ name: "wearableId", ...getTypeByORM("uuid", true) },
|
|
||||||
],
|
|
||||||
foreignKeys: [
|
|
||||||
new TableForeignKey({
|
|
||||||
columnNames: ["equipmentId"],
|
|
||||||
referencedColumnNames: ["id"],
|
|
||||||
referencedTableName: "equipment",
|
|
||||||
onDelete: "CASCADE",
|
|
||||||
onUpdate: "RESTRICT",
|
|
||||||
}),
|
|
||||||
new TableForeignKey({
|
|
||||||
columnNames: ["vehicleId"],
|
|
||||||
referencedColumnNames: ["id"],
|
|
||||||
referencedTableName: "vehicle",
|
|
||||||
onDelete: "CASCADE",
|
|
||||||
onUpdate: "RESTRICT",
|
|
||||||
}),
|
|
||||||
new TableForeignKey({
|
|
||||||
columnNames: ["wearableId"],
|
|
||||||
referencedColumnNames: ["id"],
|
|
||||||
referencedTableName: "wearable",
|
|
||||||
onDelete: "CASCADE",
|
|
||||||
onUpdate: "RESTRICT",
|
|
||||||
}),
|
|
||||||
],
|
|
||||||
});
|
|
||||||
|
|
|
@ -43,7 +43,6 @@ import inspection from "./unit/inspection";
|
||||||
import inspectionPlan from "./unit/inspectionPlan";
|
import inspectionPlan from "./unit/inspectionPlan";
|
||||||
import damageReport from "./unit/damageReport";
|
import damageReport from "./unit/damageReport";
|
||||||
import maintenance from "./unit/maintenance";
|
import maintenance from "./unit/maintenance";
|
||||||
import repair from "./unit/repair";
|
|
||||||
|
|
||||||
var router = express.Router({ mergeParams: true });
|
var router = express.Router({ mergeParams: true });
|
||||||
|
|
||||||
|
@ -284,15 +283,5 @@ router.use(
|
||||||
]),
|
]),
|
||||||
maintenance
|
maintenance
|
||||||
);
|
);
|
||||||
router.use(
|
|
||||||
"/repair",
|
|
||||||
PermissionHelper.passCheckSomeMiddleware([
|
|
||||||
{ requiredPermission: "read", section: "unit", module: "repair" },
|
|
||||||
{ requiredPermission: "read", section: "unit", module: "equipment" },
|
|
||||||
{ requiredPermission: "read", section: "unit", module: "vehicle" },
|
|
||||||
{ requiredPermission: "read", section: "unit", module: "wearable" },
|
|
||||||
]),
|
|
||||||
repair
|
|
||||||
);
|
|
||||||
|
|
||||||
export default router;
|
export default router;
|
||||||
|
|
|
@ -11,7 +11,6 @@ import {
|
||||||
getAllDamageReportsByStatus,
|
getAllDamageReportsByStatus,
|
||||||
getAllDamageReportsForRelated,
|
getAllDamageReportsForRelated,
|
||||||
getDamageReportById,
|
getDamageReportById,
|
||||||
getDamageReportsByIds,
|
|
||||||
provideDamageReportImageUpload,
|
provideDamageReportImageUpload,
|
||||||
updateDamageReportById,
|
updateDamageReportById,
|
||||||
} from "../../../controller/admin/unit/damageReportController";
|
} from "../../../controller/admin/unit/damageReportController";
|
||||||
|
@ -41,10 +40,6 @@ router.get("/:id", async (req: Request, res: Response) => {
|
||||||
await getDamageReportById(req, res);
|
await getDamageReportById(req, res);
|
||||||
});
|
});
|
||||||
|
|
||||||
router.post("/ids", async (req: Request, res: Response) => {
|
|
||||||
await getDamageReportsByIds(req, res);
|
|
||||||
});
|
|
||||||
|
|
||||||
router.get("/:id/:filename", async (req: Request, res: Response) => {
|
router.get("/:id/:filename", async (req: Request, res: Response) => {
|
||||||
await provideDamageReportImageUpload(req, res);
|
await provideDamageReportImageUpload(req, res);
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,70 +0,0 @@
|
||||||
import express, { Request, Response } from "express";
|
|
||||||
import PermissionHelper from "../../../helpers/permissionHelper";
|
|
||||||
import {
|
|
||||||
createRepair,
|
|
||||||
getAllRepairsByStatus,
|
|
||||||
getAllRepairsForRelated,
|
|
||||||
getRepairById,
|
|
||||||
updateRepairById,
|
|
||||||
updateRepairReportsById,
|
|
||||||
updateRepairStatusById,
|
|
||||||
} from "../../../controller/admin/unit/repairController";
|
|
||||||
|
|
||||||
var router = express.Router({ mergeParams: true });
|
|
||||||
|
|
||||||
router.get("/", async (req: Request, res: Response) => {
|
|
||||||
await getAllRepairsByStatus(req, res);
|
|
||||||
});
|
|
||||||
|
|
||||||
router.get(
|
|
||||||
["/vehicle/:relatedId", "/equipment/:relatedId", "/wearable/:relatedId"],
|
|
||||||
async (req: Request, res: Response) => {
|
|
||||||
if (req.path.startsWith("/vehicle")) {
|
|
||||||
req.params.related = "vehicle";
|
|
||||||
} else if (req.path.startsWith("/equipment")) {
|
|
||||||
req.params.related = "equipment";
|
|
||||||
} else {
|
|
||||||
req.params.related = "wearable";
|
|
||||||
}
|
|
||||||
|
|
||||||
await getAllRepairsForRelated(req, res);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
router.get("/:id", async (req: Request, res: Response) => {
|
|
||||||
await getRepairById(req, res);
|
|
||||||
});
|
|
||||||
|
|
||||||
router.post(
|
|
||||||
"/",
|
|
||||||
PermissionHelper.passCheckMiddleware("update", "unit", "repair"),
|
|
||||||
async (req: Request, res: Response) => {
|
|
||||||
await createRepair(req, res);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
router.patch(
|
|
||||||
"/:id",
|
|
||||||
PermissionHelper.passCheckMiddleware("update", "unit", "repair"),
|
|
||||||
async (req: Request, res: Response) => {
|
|
||||||
await updateRepairById(req, res);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
router.patch(
|
|
||||||
"/:id/reports",
|
|
||||||
PermissionHelper.passCheckMiddleware("update", "unit", "repair"),
|
|
||||||
async (req: Request, res: Response) => {
|
|
||||||
await updateRepairReportsById(req, res);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
router.patch(
|
|
||||||
"/:id/status",
|
|
||||||
PermissionHelper.passCheckMiddleware("update", "unit", "repair"),
|
|
||||||
async (req: Request, res: Response) => {
|
|
||||||
await updateRepairStatusById(req, res);
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
export default router;
|
|
|
@ -1,4 +1,3 @@
|
||||||
import { In } from "typeorm";
|
|
||||||
import { dataSource } from "../../data-source";
|
import { dataSource } from "../../data-source";
|
||||||
import { damageReport } from "../../entity/unit/damageReport";
|
import { damageReport } from "../../entity/unit/damageReport";
|
||||||
import DatabaseActionException from "../../exceptions/databaseActionException";
|
import DatabaseActionException from "../../exceptions/databaseActionException";
|
||||||
|
@ -11,48 +10,13 @@ export default abstract class DamageReportService {
|
||||||
.leftJoinAndSelect("damageReport.equipment", "equipment")
|
.leftJoinAndSelect("damageReport.equipment", "equipment")
|
||||||
.leftJoinAndSelect("damageReport.vehicle", "vehicle")
|
.leftJoinAndSelect("damageReport.vehicle", "vehicle")
|
||||||
.leftJoinAndSelect("damageReport.wearable", "wearable")
|
.leftJoinAndSelect("damageReport.wearable", "wearable")
|
||||||
.leftJoinAndSelect("damageReport.repair", "repair");
|
.leftJoinAndSelect("damageReport.maintenance", "maintenance");
|
||||||
/**
|
|
||||||
* @description get all damageReports By done
|
|
||||||
* @returns {Promise<[Array<damageReport>, number]>}
|
|
||||||
*/
|
|
||||||
static async getAll({
|
|
||||||
offset = 0,
|
|
||||||
count = 25,
|
|
||||||
noLimit = false,
|
|
||||||
ids = [],
|
|
||||||
}: {
|
|
||||||
offset?: number;
|
|
||||||
count?: number;
|
|
||||||
noLimit?: boolean;
|
|
||||||
ids?: Array<string>;
|
|
||||||
}): Promise<[Array<damageReport>, number]> {
|
|
||||||
let query = this.query();
|
|
||||||
|
|
||||||
if (ids.length != 0) {
|
|
||||||
query = query.where({ id: In(ids) });
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!noLimit) {
|
|
||||||
query = query.offset(offset).limit(count);
|
|
||||||
}
|
|
||||||
|
|
||||||
return await query
|
|
||||||
.orderBy("damageReport.reportedAt", "ASC")
|
|
||||||
.getManyAndCount()
|
|
||||||
.then((res) => {
|
|
||||||
return res;
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
throw new DatabaseActionException("SELECT", "damageReport", err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description get all damageReports By done
|
* @description get all damageReports By done
|
||||||
* @returns {Promise<[Array<damageReport>, number]>}
|
* @returns {Promise<[Array<damageReport>, number]>}
|
||||||
*/
|
*/
|
||||||
static async getAllByStatus(
|
static async getAll(
|
||||||
done = false,
|
done = false,
|
||||||
{
|
{
|
||||||
offset = 0,
|
offset = 0,
|
||||||
|
@ -114,39 +78,6 @@ export default abstract class DamageReportService {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @description get all damageReport for repair
|
|
||||||
* @returns {Promise<[Array<damageReport>, number]>}
|
|
||||||
*/
|
|
||||||
static async getAllForRepair(
|
|
||||||
repairId: string,
|
|
||||||
{
|
|
||||||
offset = 0,
|
|
||||||
count = 25,
|
|
||||||
noLimit = false,
|
|
||||||
}: {
|
|
||||||
offset?: number;
|
|
||||||
count?: number;
|
|
||||||
noLimit?: boolean;
|
|
||||||
}
|
|
||||||
): Promise<[Array<damageReport>, number]> {
|
|
||||||
let query = this.query().where({ repairId });
|
|
||||||
|
|
||||||
if (!noLimit) {
|
|
||||||
query = query.offset(offset).limit(count);
|
|
||||||
}
|
|
||||||
|
|
||||||
return await query
|
|
||||||
.orderBy("damageReport.reportedAt", "ASC")
|
|
||||||
.getManyAndCount()
|
|
||||||
.then((res) => {
|
|
||||||
return res;
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
throw new DatabaseActionException("SELECT", "damageReport", err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description get damageReport by id
|
* @description get damageReport by id
|
||||||
* @returns {Promise<damageReport>}
|
* @returns {Promise<damageReport>}
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import { Not, IsNull } from "typeorm";
|
|
||||||
import { dataSource } from "../../data-source";
|
import { dataSource } from "../../data-source";
|
||||||
import { maintenance } from "../../entity/unit/maintenance";
|
import { maintenance } from "../../entity/unit/maintenance";
|
||||||
import DatabaseActionException from "../../exceptions/databaseActionException";
|
import DatabaseActionException from "../../exceptions/databaseActionException";
|
||||||
|
@ -10,7 +9,8 @@ export default abstract class MaintenanceService {
|
||||||
.createQueryBuilder("maintenance")
|
.createQueryBuilder("maintenance")
|
||||||
.leftJoinAndSelect("maintenance.equipment", "equipment")
|
.leftJoinAndSelect("maintenance.equipment", "equipment")
|
||||||
.leftJoinAndSelect("maintenance.vehicle", "vehicle")
|
.leftJoinAndSelect("maintenance.vehicle", "vehicle")
|
||||||
.leftJoinAndSelect("maintenance.wearable", "wearable");
|
.leftJoinAndSelect("maintenance.wearable", "wearable")
|
||||||
|
.leftJoinAndSelect("maintenance.reports", "reports");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description get all maintenances
|
* @description get all maintenances
|
||||||
|
@ -28,7 +28,7 @@ export default abstract class MaintenanceService {
|
||||||
noLimit?: boolean;
|
noLimit?: boolean;
|
||||||
}
|
}
|
||||||
): Promise<[Array<maintenance>, number]> {
|
): Promise<[Array<maintenance>, number]> {
|
||||||
let query = this.query().where({ finishedAt: done ? Not(IsNull()) : IsNull() });
|
let query = this.query().where({ done });
|
||||||
if (!noLimit) {
|
if (!noLimit) {
|
||||||
query = query.offset(offset).limit(count);
|
query = query.offset(offset).limit(count);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,96 +0,0 @@
|
||||||
import { IsNull, Not } from "typeorm";
|
|
||||||
import { dataSource } from "../../data-source";
|
|
||||||
import { repair } from "../../entity/unit/repair";
|
|
||||||
import DatabaseActionException from "../../exceptions/databaseActionException";
|
|
||||||
|
|
||||||
export default abstract class RepairService {
|
|
||||||
private static query = () =>
|
|
||||||
dataSource
|
|
||||||
.getRepository(repair)
|
|
||||||
.createQueryBuilder("repair")
|
|
||||||
.leftJoinAndSelect("repair.equipment", "equipment")
|
|
||||||
.leftJoinAndSelect("repair.vehicle", "vehicle")
|
|
||||||
.leftJoinAndSelect("repair.wearable", "wearable")
|
|
||||||
.leftJoinAndSelect("repair.reports", "reports");
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description get all repairs
|
|
||||||
* @returns {Promise<[Array<repair>, number]>}
|
|
||||||
*/
|
|
||||||
static async getAll(
|
|
||||||
done = false,
|
|
||||||
{
|
|
||||||
offset = 0,
|
|
||||||
count = 25,
|
|
||||||
noLimit = false,
|
|
||||||
}: {
|
|
||||||
offset?: number;
|
|
||||||
count?: number;
|
|
||||||
noLimit?: boolean;
|
|
||||||
}
|
|
||||||
): Promise<[Array<repair>, number]> {
|
|
||||||
let query = this.query().where({ finishedAt: done ? Not(IsNull()) : IsNull() });
|
|
||||||
if (!noLimit) {
|
|
||||||
query = query.offset(offset).limit(count);
|
|
||||||
}
|
|
||||||
|
|
||||||
return await query
|
|
||||||
.orderBy("repair.createdAt", "ASC")
|
|
||||||
.getManyAndCount()
|
|
||||||
.then((res) => {
|
|
||||||
return res;
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
throw new DatabaseActionException("SELECT", "repair", err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description get all repairs By related
|
|
||||||
* @returns {Promise<[Array<repair>, number]>}
|
|
||||||
*/
|
|
||||||
static async getAllForRelated(
|
|
||||||
where: { equipmentId: string } | { vehicleId: string } | { wearableId: string },
|
|
||||||
{
|
|
||||||
offset = 0,
|
|
||||||
count = 25,
|
|
||||||
noLimit = false,
|
|
||||||
}: {
|
|
||||||
offset?: number;
|
|
||||||
count?: number;
|
|
||||||
noLimit?: boolean;
|
|
||||||
}
|
|
||||||
): Promise<[Array<repair>, number]> {
|
|
||||||
let query = this.query().where(where);
|
|
||||||
|
|
||||||
if (!noLimit) {
|
|
||||||
query = query.offset(offset).limit(count);
|
|
||||||
}
|
|
||||||
|
|
||||||
return await query
|
|
||||||
.orderBy("repair.createdAt", "ASC")
|
|
||||||
.getManyAndCount()
|
|
||||||
.then((res) => {
|
|
||||||
return res;
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
throw new DatabaseActionException("SELECT", "repair", err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description get repair by id
|
|
||||||
* @returns {Promise<repair>}
|
|
||||||
*/
|
|
||||||
static async getById(id: string): Promise<repair> {
|
|
||||||
return await this.query()
|
|
||||||
.where({ id })
|
|
||||||
.getOneOrFail()
|
|
||||||
.then((res) => {
|
|
||||||
return res;
|
|
||||||
})
|
|
||||||
.catch((err) => {
|
|
||||||
throw new DatabaseActionException("SELECT", "repair", err);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -22,7 +22,6 @@ export type PermissionModule =
|
||||||
| "respiratory_mission"
|
| "respiratory_mission"
|
||||||
| "damage_report"
|
| "damage_report"
|
||||||
| "maintenance"
|
| "maintenance"
|
||||||
| "repair"
|
|
||||||
// configuration
|
// configuration
|
||||||
| "qualification"
|
| "qualification"
|
||||||
| "award"
|
| "award"
|
||||||
|
@ -98,7 +97,6 @@ export const permissionModules: Array<PermissionModule> = [
|
||||||
"respiratory_mission",
|
"respiratory_mission",
|
||||||
"damage_report",
|
"damage_report",
|
||||||
"maintenance",
|
"maintenance",
|
||||||
"repair",
|
|
||||||
// configuration
|
// configuration
|
||||||
"qualification",
|
"qualification",
|
||||||
"award",
|
"award",
|
||||||
|
@ -136,7 +134,6 @@ export const sectionsAndModules: SectionsAndModulesObject = {
|
||||||
"respiratory_mission",
|
"respiratory_mission",
|
||||||
"damage_report",
|
"damage_report",
|
||||||
"maintenance",
|
"maintenance",
|
||||||
"repair",
|
|
||||||
],
|
],
|
||||||
configuration: [
|
configuration: [
|
||||||
"qualification",
|
"qualification",
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import { EquipmentViewModel } from "./equipment/equipment.models";
|
import { EquipmentViewModel } from "./equipment/equipment.models";
|
||||||
import { MaintenanceViewModel } from "./maintenance.models";
|
import { MaintenanceViewModel } from "./maintenance.models";
|
||||||
import { RepairViewModel } from "./repair.models";
|
|
||||||
import { VehicleViewModel } from "./vehicle/vehicle.models";
|
import { VehicleViewModel } from "./vehicle/vehicle.models";
|
||||||
import { WearableViewModel } from "./wearable/wearable.models";
|
import { WearableViewModel } from "./wearable/wearable.models";
|
||||||
|
|
||||||
|
@ -23,7 +22,6 @@ export type DamageReportAssigned = {
|
||||||
|
|
||||||
export type DamageReportViewModel = {
|
export type DamageReportViewModel = {
|
||||||
id: string;
|
id: string;
|
||||||
title: string;
|
|
||||||
reportedAt: Date;
|
reportedAt: Date;
|
||||||
status: string;
|
status: string;
|
||||||
done: boolean;
|
done: boolean;
|
||||||
|
@ -33,5 +31,5 @@ export type DamageReportViewModel = {
|
||||||
noteByWorker: string;
|
noteByWorker: string;
|
||||||
images: string[];
|
images: string[];
|
||||||
reportedBy: string;
|
reportedBy: string;
|
||||||
repair?: RepairViewModel;
|
maintenance?: MaintenanceViewModel;
|
||||||
} & DamageReportAssigned;
|
} & DamageReportAssigned;
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { DamageReportViewModel } from "./damageReport.models";
|
||||||
import { EquipmentViewModel } from "./equipment/equipment.models";
|
import { EquipmentViewModel } from "./equipment/equipment.models";
|
||||||
import { VehicleViewModel } from "./vehicle/vehicle.models";
|
import { VehicleViewModel } from "./vehicle/vehicle.models";
|
||||||
import { WearableViewModel } from "./wearable/wearable.models";
|
import { WearableViewModel } from "./wearable/wearable.models";
|
||||||
|
@ -23,5 +24,7 @@ export type MaintenanceViewModel = {
|
||||||
id: string;
|
id: string;
|
||||||
createdAt: Date;
|
createdAt: Date;
|
||||||
status: string;
|
status: string;
|
||||||
|
done: boolean;
|
||||||
description: string;
|
description: string;
|
||||||
|
reports: DamageReportViewModel[];
|
||||||
} & MaintenanceAssigned;
|
} & MaintenanceAssigned;
|
||||||
|
|
|
@ -1,34 +0,0 @@
|
||||||
import { DamageReportViewModel } from "./damageReport.models";
|
|
||||||
import { EquipmentViewModel } from "./equipment/equipment.models";
|
|
||||||
import { VehicleViewModel } from "./vehicle/vehicle.models";
|
|
||||||
import { WearableViewModel } from "./wearable/wearable.models";
|
|
||||||
|
|
||||||
export type RepairAssigned = {
|
|
||||||
relatedId: string;
|
|
||||||
} & (
|
|
||||||
| {
|
|
||||||
assigned: "equipment";
|
|
||||||
related: EquipmentViewModel;
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
assigned: "vehicle";
|
|
||||||
related: VehicleViewModel;
|
|
||||||
}
|
|
||||||
| {
|
|
||||||
assigned: "wearable";
|
|
||||||
related: WearableViewModel;
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
export type RepairViewModel = {
|
|
||||||
id: string;
|
|
||||||
createdAt: Date;
|
|
||||||
finishedAt?: Date;
|
|
||||||
status: string;
|
|
||||||
responsible: string;
|
|
||||||
title: string;
|
|
||||||
description: string;
|
|
||||||
images: string[];
|
|
||||||
reportDocument?: string;
|
|
||||||
reports: DamageReportViewModel[];
|
|
||||||
} & RepairAssigned;
|
|
Loading…
Add table
Add a link
Reference in a new issue