schema update
This commit is contained in:
parent
922c6b7df3
commit
9b38c6a5e9
29 changed files with 184 additions and 43 deletions
|
@ -13,6 +13,7 @@ export interface UpdateDamageReportCommand {
|
|||
id: string;
|
||||
status: string;
|
||||
noteByWorker: string;
|
||||
user: { id: string; firstname: string; lastname: string };
|
||||
done: boolean;
|
||||
}
|
||||
|
||||
|
|
|
@ -54,7 +54,11 @@ export default abstract class DamageReportCommandHandler {
|
|||
.set({
|
||||
status: updateDamageReport.status,
|
||||
noteByWorker: updateDamageReport.noteByWorker,
|
||||
done: updateDamageReport.done,
|
||||
closedAt: updateDamageReport.done ? new Date() : null,
|
||||
closedById: updateDamageReport.done ? updateDamageReport.user.id : null,
|
||||
closedByString: updateDamageReport.done
|
||||
? `${updateDamageReport.user.firstname} ${updateDamageReport.user.lastname}`
|
||||
: null,
|
||||
})
|
||||
.where("id = :id", { id: updateDamageReport.id })
|
||||
.execute()
|
||||
|
|
|
@ -14,6 +14,7 @@ export interface UpdateInspectionCommand {
|
|||
|
||||
export interface FinishInspectionCommand {
|
||||
id: string;
|
||||
user: { id: string; firstname: string; lastname: string };
|
||||
}
|
||||
|
||||
export interface DeleteInspectionCommand {
|
||||
|
|
|
@ -96,6 +96,8 @@ export default abstract class InspectionCommandHandler {
|
|||
.update(inspection)
|
||||
.set({
|
||||
finishedAt: new Date(),
|
||||
finishedById: finishInspection.user.id,
|
||||
finishedByString: `${finishInspection.user.firstname} ${finishInspection.user.lastname}`,
|
||||
})
|
||||
.where("id = :id", { id: finishInspection.id })
|
||||
.execute()
|
||||
|
|
|
@ -17,6 +17,7 @@ export interface UpdateRepairCommand {
|
|||
export interface UpdateRepairStatusCommand {
|
||||
id: string;
|
||||
status: string;
|
||||
user: { id: string; firstname: string; lastname: string };
|
||||
done: boolean;
|
||||
}
|
||||
|
||||
|
|
|
@ -86,6 +86,8 @@ export default abstract class RepairCommandHandler {
|
|||
.set({
|
||||
status: updateRepair.status,
|
||||
finishedAt: updateRepair.done ? new Date() : null,
|
||||
finishedById: updateRepair.done ? updateRepair.user.id : null,
|
||||
finishedByString: updateRepair.done ? `${updateRepair.user.firstname} ${updateRepair.user.lastname}` : null,
|
||||
})
|
||||
.where("id = :id", { id: updateRepair.id })
|
||||
.execute()
|
||||
|
|
|
@ -157,6 +157,11 @@ export async function updateDamageReportById(req: Request, res: Response): Promi
|
|||
status,
|
||||
noteByWorker,
|
||||
done,
|
||||
user: {
|
||||
id: req.userId,
|
||||
firstname: req.firstname,
|
||||
lastname: req.lastname,
|
||||
},
|
||||
};
|
||||
await DamageReportCommandHandler.update(updateDamageReport);
|
||||
|
||||
|
|
|
@ -13,12 +13,10 @@ import ForbiddenRequestException from "../../../exceptions/forbiddenRequestExcep
|
|||
import { CreateOrUpdateInspectionPointResultCommand } from "../../../command/unit/inspection/inspectionPointResultCommand";
|
||||
import InspectionPointResultCommandHandler from "../../../command/unit/inspection/inspectionPointResultCommandHandler";
|
||||
import { InspectionPointEnum } from "../../../enums/inspectionEnum";
|
||||
import multer from "multer";
|
||||
import { FileSystemHelper } from "../../../helpers/fileSystemHelper";
|
||||
import { PdfExport } from "../../../helpers/pdfExport";
|
||||
import { PDFDocument } from "pdf-lib";
|
||||
import sharp from "sharp";
|
||||
import InspectionPointService from "../../../service/unit/inspection/inspectionPointService";
|
||||
import InspectionPointResultService from "../../../service/unit/inspection/inspectionPointResultService";
|
||||
|
||||
/**
|
||||
|
@ -270,7 +268,7 @@ export async function finishInspection(req: Request, res: Response): Promise<any
|
|||
let formattedInspection = InspectionFactory.mapToSingle(inspection);
|
||||
let title = `Prüf-Ausdruck_${[formattedInspection.related.code ?? "", formattedInspection.related.name].join("_")}_${
|
||||
formattedInspection.inspectionPlan.title
|
||||
}_${new Date(formattedInspection.finished ?? "").toLocaleDateString("de-de")}`;
|
||||
}_${new Date(formattedInspection.finishedAt ?? "").toLocaleDateString("de-de")}`;
|
||||
|
||||
let inspectionPoints = [];
|
||||
for (const ip of formattedInspection.inspectionVersionedPlan.inspectionPoints.sort(
|
||||
|
@ -305,7 +303,7 @@ export async function finishInspection(req: Request, res: Response): Promise<any
|
|||
inspector: `${req.lastname}, ${req.firstname}`,
|
||||
context: formattedInspection.context || "---",
|
||||
createdAt: formattedInspection.created,
|
||||
finishedAt: formattedInspection.finished ?? new Date(),
|
||||
finishedAt: formattedInspection.finishedAt ?? new Date(),
|
||||
nextInspection: formattedInspection.nextInspection,
|
||||
related: formattedInspection.related,
|
||||
plan: formattedInspection.inspectionPlan,
|
||||
|
@ -363,6 +361,11 @@ export async function finishInspection(req: Request, res: Response): Promise<any
|
|||
|
||||
let finish: FinishInspectionCommand = {
|
||||
id: inspectionId,
|
||||
user: {
|
||||
id: req.userId,
|
||||
firstname: req.firstname,
|
||||
lastname: req.lastname,
|
||||
},
|
||||
};
|
||||
await InspectionCommandHandler.finish(finish);
|
||||
|
||||
|
|
|
@ -17,7 +17,7 @@ export async function getAllMaintenancesByStatus(req: Request, res: Response): P
|
|||
let count = parseInt((req.query.count as string) ?? "25");
|
||||
let noLimit = req.query.noLimit === "true";
|
||||
|
||||
let [maintenances, total] = await MaintenanceService.getAll(done, { offset, count, noLimit });
|
||||
let [maintenances, total] = await MaintenanceService.getAllByDone(done, { offset, count, noLimit });
|
||||
|
||||
res.json({
|
||||
maintenances: MaintenanceFactory.mapToBase(maintenances),
|
||||
|
|
|
@ -24,7 +24,7 @@ export async function getAllRepairsByStatus(req: Request, res: Response): Promis
|
|||
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 });
|
||||
let [repairs, total] = await RepairService.getAllByDone(done, { offset, count, noLimit });
|
||||
|
||||
res.json({
|
||||
repairs: RepairFactory.mapToBase(repairs),
|
||||
|
@ -161,6 +161,11 @@ export async function updateRepairStatusById(req: Request, res: Response): Promi
|
|||
id: repairId,
|
||||
status,
|
||||
done,
|
||||
user: {
|
||||
id: req.userId,
|
||||
firstname: req.firstname,
|
||||
lastname: req.lastname,
|
||||
},
|
||||
};
|
||||
await RepairCommandHandler.updateStatus(updateRepair);
|
||||
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
import { Column, CreateDateColumn, Entity, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
|
||||
import { Column, ColumnType, CreateDateColumn, Entity, ManyToOne, PrimaryGeneratedColumn } from "typeorm";
|
||||
import { equipment } from "./equipment/equipment";
|
||||
import { wearable } from "./wearable/wearable";
|
||||
import { vehicle } from "./vehicle/vehicle";
|
||||
import { repair } from "./repair";
|
||||
import { getTypeByORM } from "../../migrations/ormHelper";
|
||||
import { user } from "../management/user";
|
||||
|
||||
@Entity()
|
||||
export class damageReport {
|
||||
|
@ -12,29 +14,40 @@ export class damageReport {
|
|||
@CreateDateColumn()
|
||||
reportedAt: Date;
|
||||
|
||||
@Column({ type: getTypeByORM("datetime").type as ColumnType, nullable: true, default: null })
|
||||
closedAt?: Date;
|
||||
|
||||
@Column({ nullable: true, default: null })
|
||||
closedById?: string;
|
||||
|
||||
@Column({ type: "varchar", length: 255, nullable: true, default: null })
|
||||
closedByString?: string;
|
||||
|
||||
@Column({ type: "varchar", length: 255 })
|
||||
status: string;
|
||||
|
||||
@Column({ type: "boolean", default: false })
|
||||
done: boolean;
|
||||
|
||||
@Column({ type: "varchar", length: 255 })
|
||||
title: string;
|
||||
|
||||
@Column({ type: "text" })
|
||||
description: string;
|
||||
|
||||
@Column({ type: "text" })
|
||||
@Column({ type: "text", nullable: true, default: null })
|
||||
location: string;
|
||||
|
||||
@Column({ type: "text" })
|
||||
@Column({ type: "varchar", length: 255, nullable: true, default: null })
|
||||
reportedBy: string;
|
||||
|
||||
@Column({ type: "text", nullable: true, default: null })
|
||||
noteByReporter: string;
|
||||
|
||||
@Column({ type: "text" })
|
||||
@Column({ type: "text", nullable: true, default: null })
|
||||
noteByWorker: string;
|
||||
|
||||
@Column({
|
||||
type: "text",
|
||||
nullable: true,
|
||||
default: null,
|
||||
transformer: {
|
||||
from(value: string): Array<string> {
|
||||
return (value ?? "").split(",").filter((i) => !!i);
|
||||
|
@ -46,9 +59,6 @@ export class damageReport {
|
|||
})
|
||||
images: string[];
|
||||
|
||||
@Column({ type: "varchar", length: 255 })
|
||||
reportedBy: string;
|
||||
|
||||
@Column({ nullable: true, default: null })
|
||||
equipmentId?: string;
|
||||
|
||||
|
@ -61,6 +71,13 @@ export class damageReport {
|
|||
@Column({ nullable: true, default: null })
|
||||
repairId?: string;
|
||||
|
||||
@ManyToOne(() => user, {
|
||||
nullable: true,
|
||||
onDelete: "SET NULL",
|
||||
onUpdate: "RESTRICT",
|
||||
})
|
||||
closedBy?: user;
|
||||
|
||||
@ManyToOne(() => equipment, (e) => e.reports, {
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
|
|
|
@ -6,6 +6,7 @@ import { vehicle } from "../vehicle/vehicle";
|
|||
import { equipment } from "../equipment/equipment";
|
||||
import { inspectionPointResult } from "./inspectionPointResult";
|
||||
import { wearable } from "../wearable/wearable";
|
||||
import { user } from "../../management/user";
|
||||
|
||||
@Entity()
|
||||
export class inspection {
|
||||
|
@ -18,9 +19,15 @@ export class inspection {
|
|||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
||||
@Column({ type: getTypeByORM("date").type as ColumnType, nullable: true, default: null })
|
||||
@Column({ type: getTypeByORM("datetime").type as ColumnType, nullable: true, default: null })
|
||||
finishedAt?: Date;
|
||||
|
||||
@Column({ nullable: true, default: null })
|
||||
finishedById?: string;
|
||||
|
||||
@Column({ type: "varchar", length: 255, nullable: true, default: null })
|
||||
finishedByString?: string;
|
||||
|
||||
@Column({ type: getTypeByORM("date").type as ColumnType, nullable: true, default: null })
|
||||
nextInspection?: Date;
|
||||
|
||||
|
@ -42,6 +49,13 @@ export class inspection {
|
|||
@Column({ nullable: true, default: null })
|
||||
wearableId?: string;
|
||||
|
||||
@ManyToOne(() => user, {
|
||||
nullable: true,
|
||||
onDelete: "SET NULL",
|
||||
onUpdate: "RESTRICT",
|
||||
})
|
||||
finishedBy?: user;
|
||||
|
||||
@ManyToOne(() => inspectionPlan, {
|
||||
nullable: false,
|
||||
onDelete: "RESTRICT",
|
||||
|
|
|
@ -4,6 +4,7 @@ import { wearable } from "./wearable/wearable";
|
|||
import { vehicle } from "./vehicle/vehicle";
|
||||
import { damageReport } from "./damageReport";
|
||||
import { getTypeByORM } from "../../migrations/ormHelper";
|
||||
import { user } from "../management/user";
|
||||
|
||||
@Entity()
|
||||
export class maintenance {
|
||||
|
@ -16,6 +17,12 @@ export class maintenance {
|
|||
@Column({ type: getTypeByORM("datetime").type as ColumnType, nullable: true, default: null })
|
||||
finishedAt?: Date;
|
||||
|
||||
@Column({ nullable: true, default: null })
|
||||
finishedById?: string;
|
||||
|
||||
@Column({ type: "varchar", length: 255, nullable: true, default: null })
|
||||
finishedByString?: string;
|
||||
|
||||
@Column({ type: "varchar", length: 255 })
|
||||
status: string;
|
||||
|
||||
|
@ -31,6 +38,13 @@ export class maintenance {
|
|||
@Column({ nullable: true, default: null })
|
||||
wearableId?: string;
|
||||
|
||||
@ManyToOne(() => user, {
|
||||
nullable: true,
|
||||
onDelete: "SET NULL",
|
||||
onUpdate: "RESTRICT",
|
||||
})
|
||||
finishedBy?: user;
|
||||
|
||||
@ManyToOne(() => equipment, (e) => e.maintenances, {
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
|
|
|
@ -4,6 +4,7 @@ import { wearable } from "./wearable/wearable";
|
|||
import { vehicle } from "./vehicle/vehicle";
|
||||
import { damageReport } from "./damageReport";
|
||||
import { getTypeByORM } from "../../migrations/ormHelper";
|
||||
import { user } from "../management/user";
|
||||
|
||||
@Entity()
|
||||
export class repair {
|
||||
|
@ -16,11 +17,14 @@ export class repair {
|
|||
@Column({ type: getTypeByORM("datetime").type as ColumnType, nullable: true, default: null })
|
||||
finishedAt?: Date;
|
||||
|
||||
@Column({ type: "varchar", length: 255 })
|
||||
status: string;
|
||||
@Column({ nullable: true, default: null })
|
||||
finishedById?: string;
|
||||
|
||||
@Column({ type: "varchar", length: 255, nullable: true, default: null })
|
||||
finishedByString?: string;
|
||||
|
||||
@Column({ type: "varchar", length: 255 })
|
||||
responsible: string;
|
||||
status: string;
|
||||
|
||||
@Column({ type: "varchar", length: 255 })
|
||||
title: string;
|
||||
|
@ -28,8 +32,13 @@ export class repair {
|
|||
@Column({ type: "text" })
|
||||
description: string;
|
||||
|
||||
@Column({ type: "varchar", length: 255, nullable: true, default: null })
|
||||
responsible: string;
|
||||
|
||||
@Column({
|
||||
type: "text",
|
||||
nullable: true,
|
||||
default: null,
|
||||
transformer: {
|
||||
from(value: string): Array<string> {
|
||||
return (value ?? "").split(",").filter((i) => !!i);
|
||||
|
@ -53,6 +62,13 @@ export class repair {
|
|||
@Column({ nullable: true, default: null })
|
||||
wearableId?: string;
|
||||
|
||||
@ManyToOne(() => user, {
|
||||
nullable: true,
|
||||
onDelete: "SET NULL",
|
||||
onUpdate: "RESTRICT",
|
||||
})
|
||||
finishedBy?: user;
|
||||
|
||||
@ManyToOne(() => equipment, (e) => e.maintenances, {
|
||||
nullable: true,
|
||||
onDelete: "CASCADE",
|
||||
|
|
|
@ -44,7 +44,8 @@ export default abstract class DamageReportFactory {
|
|||
id: record.id,
|
||||
reportedAt: record.reportedAt,
|
||||
status: record.status,
|
||||
done: record.done,
|
||||
closedAt: record.closedAt,
|
||||
closedBy: record?.closedBy ? record.closedBy.firstname + " " + record.closedBy.lastname : record.closedByString,
|
||||
title: record.title,
|
||||
description: record.description,
|
||||
location: record.location,
|
||||
|
|
|
@ -64,7 +64,10 @@ export default abstract class InspectionFactory {
|
|||
inspectionVersionedPlan: InspectionVersionedPlanFactory.mapToSingle(record.inspectionVersionedPlan),
|
||||
context: record.context,
|
||||
created: record.createdAt,
|
||||
finished: record?.finishedAt,
|
||||
finishedAt: record?.finishedAt,
|
||||
finishedBy: record?.finishedBy
|
||||
? record.finishedBy.firstname + " " + record.finishedBy.lastname
|
||||
: record.finishedByString,
|
||||
isOpen: record?.finishedAt == undefined,
|
||||
nextInspection: record?.nextInspection,
|
||||
checks: InspectionPointResultFactory.mapToBase(record.pointResults),
|
||||
|
|
|
@ -43,6 +43,9 @@ export default abstract class RepairFactory {
|
|||
id: record.id,
|
||||
createdAt: record.createdAt,
|
||||
finishedAt: record.finishedAt,
|
||||
finishedBy: record?.finishedBy
|
||||
? record.finishedBy.firstname + " " + record.finishedBy.lastname
|
||||
: record.finishedByString,
|
||||
status: record.status,
|
||||
responsible: record.responsible,
|
||||
title: record.title,
|
||||
|
|
|
@ -93,7 +93,9 @@ export const inspection_table = new Table({
|
|||
{ name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary },
|
||||
{ name: "context", ...getTypeByORM("text") },
|
||||
{ name: "createdAt", ...getTypeByORM("datetime"), default: getDefaultByORM("currentTimestamp") },
|
||||
{ name: "finishedAt", ...getTypeByORM("date", true) },
|
||||
{ name: "finishedAt", ...getTypeByORM("datetime", true) },
|
||||
{ name: "finishedById", ...getTypeByORM("uuid", true) },
|
||||
{ name: "finishedByString", ...getTypeByORM("varchar", true) },
|
||||
{ name: "nextInspection", ...getTypeByORM("date", true) },
|
||||
{ name: "hasNewer", ...getTypeByORM("boolean"), default: getDefaultByORM("boolean", false) },
|
||||
{ name: "inspectionPlanId", ...getTypeByORM("uuid") },
|
||||
|
@ -103,6 +105,13 @@ export const inspection_table = new Table({
|
|||
{ name: "wearableId", ...getTypeByORM("uuid", true) },
|
||||
],
|
||||
foreignKeys: [
|
||||
new TableForeignKey({
|
||||
columnNames: ["finishedById"],
|
||||
referencedColumnNames: ["id"],
|
||||
referencedTableName: "user",
|
||||
onDelete: "SET NULL",
|
||||
onUpdate: "RESTRICT",
|
||||
}),
|
||||
new TableForeignKey({
|
||||
columnNames: ["inspectionPlanId"],
|
||||
referencedColumnNames: ["id"],
|
||||
|
|
|
@ -6,21 +6,30 @@ export const damage_report_table = new Table({
|
|||
columns: [
|
||||
{ name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary },
|
||||
{ name: "reportedAt", ...getTypeByORM("datetime"), default: getDefaultByORM("currentTimestamp") },
|
||||
{ name: "closedAt", ...getTypeByORM("datetime", true) },
|
||||
{ name: "closedById", ...getTypeByORM("uuid", true) },
|
||||
{ name: "closedByString", ...getTypeByORM("varchar", true) },
|
||||
{ name: "status", ...getTypeByORM("varchar") },
|
||||
{ name: "done", ...getTypeByORM("boolean"), default: getDefaultByORM("boolean", false) },
|
||||
{ name: "title", ...getTypeByORM("varchar") },
|
||||
{ name: "description", ...getTypeByORM("text") },
|
||||
{ name: "location", ...getTypeByORM("text") },
|
||||
{ name: "noteByReporter", ...getTypeByORM("text") },
|
||||
{ name: "noteByWorker", ...getTypeByORM("text") },
|
||||
{ name: "reportedBy", ...getTypeByORM("varchar") },
|
||||
{ name: "images", ...getTypeByORM("text") },
|
||||
{ name: "location", ...getTypeByORM("text", true) },
|
||||
{ name: "noteByReporter", ...getTypeByORM("text", true) },
|
||||
{ name: "noteByWorker", ...getTypeByORM("text", true) },
|
||||
{ name: "reportedBy", ...getTypeByORM("varchar", true) },
|
||||
{ name: "images", ...getTypeByORM("text", true) },
|
||||
{ name: "equipmentId", ...getTypeByORM("uuid", true) },
|
||||
{ name: "vehicleId", ...getTypeByORM("uuid", true) },
|
||||
{ name: "wearableId", ...getTypeByORM("uuid", true) },
|
||||
{ name: "repairId", ...getTypeByORM("uuid", true) },
|
||||
],
|
||||
foreignKeys: [
|
||||
new TableForeignKey({
|
||||
columnNames: ["closedById"],
|
||||
referencedColumnNames: ["id"],
|
||||
referencedTableName: "user",
|
||||
onDelete: "SET NULL",
|
||||
onUpdate: "RESTRICT",
|
||||
}),
|
||||
new TableForeignKey({
|
||||
columnNames: ["equipmentId"],
|
||||
referencedColumnNames: ["id"],
|
||||
|
@ -58,6 +67,8 @@ export const maintenance_table = new Table({
|
|||
{ name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary },
|
||||
{ name: "createdAt", ...getTypeByORM("datetime"), default: getDefaultByORM("currentTimestamp") },
|
||||
{ name: "finishedAt", ...getTypeByORM("datetime", true) },
|
||||
{ name: "finishedById", ...getTypeByORM("uuid", true) },
|
||||
{ name: "finishedByString", ...getTypeByORM("varchar", true) },
|
||||
{ name: "status", ...getTypeByORM("varchar") },
|
||||
{ name: "description", ...getTypeByORM("text") },
|
||||
{ name: "equipmentId", ...getTypeByORM("uuid", true) },
|
||||
|
@ -65,6 +76,13 @@ export const maintenance_table = new Table({
|
|||
{ name: "wearableId", ...getTypeByORM("uuid", true) },
|
||||
],
|
||||
foreignKeys: [
|
||||
new TableForeignKey({
|
||||
columnNames: ["finishedById"],
|
||||
referencedColumnNames: ["id"],
|
||||
referencedTableName: "user",
|
||||
onDelete: "SET NULL",
|
||||
onUpdate: "RESTRICT",
|
||||
}),
|
||||
new TableForeignKey({
|
||||
columnNames: ["equipmentId"],
|
||||
referencedColumnNames: ["id"],
|
||||
|
@ -95,17 +113,26 @@ export const repair_table = new Table({
|
|||
{ name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary },
|
||||
{ name: "createdAt", ...getTypeByORM("datetime"), default: getDefaultByORM("currentTimestamp") },
|
||||
{ name: "finishedAt", ...getTypeByORM("datetime", true) },
|
||||
{ name: "finishedById", ...getTypeByORM("uuid", true) },
|
||||
{ name: "finishedByString", ...getTypeByORM("varchar", true) },
|
||||
{ name: "status", ...getTypeByORM("varchar") },
|
||||
{ name: "responsible", ...getTypeByORM("varchar") },
|
||||
{ name: "title", ...getTypeByORM("varchar") },
|
||||
{ name: "description", ...getTypeByORM("text") },
|
||||
{ name: "images", ...getTypeByORM("text") },
|
||||
{ name: "responsible", ...getTypeByORM("varchar", true) },
|
||||
{ name: "images", ...getTypeByORM("text", true) },
|
||||
{ name: "reportDocument", ...getTypeByORM("varchar", true) },
|
||||
{ name: "equipmentId", ...getTypeByORM("uuid", true) },
|
||||
{ name: "vehicleId", ...getTypeByORM("uuid", true) },
|
||||
{ name: "wearableId", ...getTypeByORM("uuid", true) },
|
||||
],
|
||||
foreignKeys: [
|
||||
new TableForeignKey({
|
||||
columnNames: ["finishedById"],
|
||||
referencedColumnNames: ["id"],
|
||||
referencedTableName: "user",
|
||||
onDelete: "SET NULL",
|
||||
onUpdate: "RESTRICT",
|
||||
}),
|
||||
new TableForeignKey({
|
||||
columnNames: ["equipmentId"],
|
||||
referencedColumnNames: ["id"],
|
||||
|
|
|
@ -15,6 +15,7 @@ import {
|
|||
provideDamageReportImageUpload,
|
||||
updateDamageReportById,
|
||||
} from "../../../controller/admin/unit/damageReportController";
|
||||
import preventWebapiAccess from "../../../middleware/preventWebApiAccess";
|
||||
|
||||
var router = express.Router({ mergeParams: true });
|
||||
|
||||
|
@ -51,6 +52,7 @@ router.get("/:id/:filename", async (req: Request, res: Response) => {
|
|||
|
||||
router.patch(
|
||||
"/:id",
|
||||
preventWebapiAccess,
|
||||
PermissionHelper.passCheckMiddleware("update", "unit", "damage_report"),
|
||||
async (req: Request, res: Response) => {
|
||||
await updateDamageReportById(req, res);
|
||||
|
|
|
@ -14,6 +14,7 @@ import {
|
|||
getInspectionPointUpload,
|
||||
} from "../../../controller/admin/unit/inspectionController";
|
||||
import { inspectionFileUpload } from "../../../middleware/multer";
|
||||
import preventWebapiAccess from "../../../middleware/preventWebApiAccess";
|
||||
|
||||
var router = express.Router({ mergeParams: true });
|
||||
|
||||
|
@ -79,6 +80,7 @@ router.patch(
|
|||
|
||||
router.patch(
|
||||
"/:id/finish",
|
||||
preventWebapiAccess,
|
||||
PermissionHelper.passCheckMiddleware("update", "unit", "inspection"),
|
||||
async (req: Request, res: Response) => {
|
||||
await finishInspection(req, res);
|
||||
|
|
|
@ -9,6 +9,7 @@ import {
|
|||
updateRepairReportsById,
|
||||
updateRepairStatusById,
|
||||
} from "../../../controller/admin/unit/repairController";
|
||||
import preventWebapiAccess from "../../../middleware/preventWebApiAccess";
|
||||
|
||||
var router = express.Router({ mergeParams: true });
|
||||
|
||||
|
@ -61,6 +62,7 @@ router.patch(
|
|||
|
||||
router.patch(
|
||||
"/:id/status",
|
||||
preventWebapiAccess,
|
||||
PermissionHelper.passCheckMiddleware("update", "unit", "repair"),
|
||||
async (req: Request, res: Response) => {
|
||||
await updateRepairStatusById(req, res);
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import { In } from "typeorm";
|
||||
import { In, IsNull, Not } from "typeorm";
|
||||
import { dataSource } from "../../data-source";
|
||||
import { damageReport } from "../../entity/unit/damageReport";
|
||||
import DatabaseActionException from "../../exceptions/databaseActionException";
|
||||
|
@ -11,7 +11,9 @@ export default abstract class DamageReportService {
|
|||
.leftJoinAndSelect("damageReport.equipment", "equipment")
|
||||
.leftJoinAndSelect("damageReport.vehicle", "vehicle")
|
||||
.leftJoinAndSelect("damageReport.wearable", "wearable")
|
||||
.leftJoinAndSelect("damageReport.repair", "repair");
|
||||
.leftJoinAndSelect("damageReport.repair", "repair")
|
||||
.leftJoinAndSelect("damageReport.closedBy", "user");
|
||||
|
||||
/**
|
||||
* @description get all damageReports By done
|
||||
* @returns {Promise<[Array<damageReport>, number]>}
|
||||
|
@ -64,7 +66,7 @@ export default abstract class DamageReportService {
|
|||
noLimit?: boolean;
|
||||
}
|
||||
): Promise<[Array<damageReport>, number]> {
|
||||
let query = this.query().where({ done });
|
||||
let query = this.query().where({ closedAt: done ? Not(IsNull()) : IsNull() });
|
||||
|
||||
if (!noLimit) {
|
||||
query = query.offset(offset).limit(count);
|
||||
|
|
|
@ -18,7 +18,8 @@ export default abstract class InspectionService {
|
|||
.leftJoinAndSelect("pointResults.inspectionPoint", "inspectionPoint")
|
||||
.leftJoinAndSelect("inspection.equipment", "equipment")
|
||||
.leftJoinAndSelect("inspection.vehicle", "vehicle")
|
||||
.leftJoinAndSelect("inspection.wearable", "wearable");
|
||||
.leftJoinAndSelect("inspection.wearable", "wearable")
|
||||
.leftJoinAndSelect("inspection.finishedBy", "user");
|
||||
|
||||
private static minifiedQuery = () =>
|
||||
dataSource
|
||||
|
|
|
@ -10,13 +10,14 @@ export default abstract class MaintenanceService {
|
|||
.createQueryBuilder("maintenance")
|
||||
.leftJoinAndSelect("maintenance.equipment", "equipment")
|
||||
.leftJoinAndSelect("maintenance.vehicle", "vehicle")
|
||||
.leftJoinAndSelect("maintenance.wearable", "wearable");
|
||||
.leftJoinAndSelect("maintenance.wearable", "wearable")
|
||||
.leftJoinAndSelect("maintenance.finishedBy", "user");
|
||||
|
||||
/**
|
||||
* @description get all maintenances
|
||||
* @returns {Promise<[Array<maintenance>, number]>}
|
||||
*/
|
||||
static async getAll(
|
||||
static async getAllByDone(
|
||||
done = false,
|
||||
{
|
||||
offset = 0,
|
||||
|
|
|
@ -11,13 +11,14 @@ export default abstract class RepairService {
|
|||
.leftJoinAndSelect("repair.equipment", "equipment")
|
||||
.leftJoinAndSelect("repair.vehicle", "vehicle")
|
||||
.leftJoinAndSelect("repair.wearable", "wearable")
|
||||
.leftJoinAndSelect("repair.reports", "reports");
|
||||
.leftJoinAndSelect("repair.reports", "reports")
|
||||
.leftJoinAndSelect("repair.finishedBy", "user");
|
||||
|
||||
/**
|
||||
* @description get all repairs
|
||||
* @returns {Promise<[Array<repair>, number]>}
|
||||
*/
|
||||
static async getAll(
|
||||
static async getAllByDone(
|
||||
done = false,
|
||||
{
|
||||
offset = 0,
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
import { EquipmentViewModel } from "./equipment/equipment.models";
|
||||
import { MaintenanceViewModel } from "./maintenance.models";
|
||||
import { RepairViewModel } from "./repair.models";
|
||||
import { VehicleViewModel } from "./vehicle/vehicle.models";
|
||||
import { WearableViewModel } from "./wearable/wearable.models";
|
||||
|
@ -25,8 +24,9 @@ export type DamageReportViewModel = {
|
|||
id: string;
|
||||
title: string;
|
||||
reportedAt: Date;
|
||||
closedAt?: Date;
|
||||
closedBy?: string;
|
||||
status: string;
|
||||
done: boolean;
|
||||
description: string;
|
||||
location: string;
|
||||
noteByReporter: string;
|
||||
|
|
|
@ -32,7 +32,8 @@ export type InspectionViewModel = {
|
|||
inspectionVersionedPlan: InspectionVersionedPlanViewModel;
|
||||
context: string;
|
||||
created: Date;
|
||||
finished?: Date;
|
||||
finishedAt?: Date;
|
||||
finishedBy?: string;
|
||||
isOpen: boolean;
|
||||
nextInspection?: Date;
|
||||
checks: Array<InspectionPointResultViewModel>;
|
||||
|
|
|
@ -24,6 +24,7 @@ export type RepairViewModel = {
|
|||
id: string;
|
||||
createdAt: Date;
|
||||
finishedAt?: Date;
|
||||
finishedBy?: string;
|
||||
status: string;
|
||||
responsible: string;
|
||||
title: string;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue