extend inspection_plan by wearable and enable optional interval
This commit is contained in:
parent
9b38c6a5e9
commit
063b949ae1
7 changed files with 31 additions and 17 deletions
|
@ -5,7 +5,7 @@ export interface CreateInspectionPlanCommand {
|
|||
inspectionInterval: PlanTimeDefinition;
|
||||
remindTime: PlanTimeDefinition;
|
||||
relatedId: string;
|
||||
assigned: "vehicle" | "equipment";
|
||||
assigned: "vehicle" | "equipment" | "wearable";
|
||||
}
|
||||
|
||||
export interface UpdateInspectionPlanCommand {
|
||||
|
|
|
@ -24,6 +24,7 @@ export default abstract class InspectionPlanCommandHandler {
|
|||
remindTime: createInspectionPlan.remindTime,
|
||||
equipmentTypeId: createInspectionPlan.assigned == "equipment" ? createInspectionPlan.relatedId : null,
|
||||
vehicleTypeId: createInspectionPlan.assigned == "vehicle" ? createInspectionPlan.relatedId : null,
|
||||
wearableTypeId: createInspectionPlan.assigned == "wearable" ? createInspectionPlan.relatedId : null,
|
||||
})
|
||||
.execute()
|
||||
.then((result) => {
|
||||
|
|
|
@ -18,6 +18,7 @@ import { PdfExport } from "../../../helpers/pdfExport";
|
|||
import { PDFDocument } from "pdf-lib";
|
||||
import sharp from "sharp";
|
||||
import InspectionPointResultService from "../../../service/unit/inspection/inspectionPointResultService";
|
||||
import InspectionPlanService from "../../../service/unit/inspection/inspectionPlanService";
|
||||
|
||||
/**
|
||||
* @description get all inspections sorted by id not having newer inspection
|
||||
|
@ -168,9 +169,15 @@ export async function createInspection(req: Request, res: Response): Promise<any
|
|||
const assigned = req.body.assigned;
|
||||
const nextInspection = req.body.nextInspection || null;
|
||||
|
||||
let inspectionPlan = await InspectionPlanService.getById(inspectionPlanId);
|
||||
if (inspectionPlan.inspectionInterval && !nextInspection)
|
||||
throw new BadRequestException("inspection has to have nextInspection date");
|
||||
|
||||
if (assigned != "equipment" && assigned != "vehicle" && assigned != "wearable")
|
||||
throw new BadRequestException("set assigned to equipment or vehicle or wearable");
|
||||
|
||||
if (relatedId == null) throw new BadRequestException("provide related equipment or vehicle or wearable");
|
||||
|
||||
let existsUnfinished = await InspectionService.existsUnfinishedInspectionToPlan(
|
||||
inspectionPlanId,
|
||||
assigned,
|
||||
|
|
|
@ -123,16 +123,18 @@ export async function getInspectionPlanById(req: Request, res: Response): Promis
|
|||
*/
|
||||
export async function createInspectionPlan(req: Request, res: Response): Promise<any> {
|
||||
const title = req.body.title;
|
||||
const inspectionInterval = req.body.inspectionInterval;
|
||||
const remindTime = req.body.remindTime;
|
||||
const inspectionInterval = req.body.inspectionInterval || null;
|
||||
const remindTime = req.body.remindTime || null;
|
||||
const relatedId = req.body.relatedId;
|
||||
const assigned = req.body.assigned;
|
||||
|
||||
TypeTester.testPlanTimeDefinition(inspectionInterval, "inspectionInterval", true);
|
||||
TypeTester.testPlanTimeDefinition(remindTime, "remindTime", true);
|
||||
TypeTester.testPlanTimeDefinition(inspectionInterval, { key: "inspectionInterval", throwErr: true, allowNull: true });
|
||||
TypeTester.testPlanTimeDefinition(remindTime, { key: "inspectionInterval", throwErr: true, allowNull: true });
|
||||
|
||||
if (assigned != "equipment" && assigned != "vehicle" && assigned != "wearable")
|
||||
throw new BadRequestException("set assigned to equipment or vehicle or wearable");
|
||||
throw new BadRequestException("set assigned to equipmenttype or vehicletype or wearabletype");
|
||||
|
||||
if (relatedId == null) throw new BadRequestException("provide related equipmenttype or vehicletype or wearabletype");
|
||||
|
||||
let createInspectionPlan: CreateInspectionPlanCommand = {
|
||||
title,
|
||||
|
@ -155,11 +157,11 @@ export async function createInspectionPlan(req: Request, res: Response): Promise
|
|||
export async function updateInspectionPlanById(req: Request, res: Response): Promise<any> {
|
||||
const inspectionPlanId = req.params.id;
|
||||
const title = req.body.title;
|
||||
const inspectionInterval = req.body.inspectionInterval;
|
||||
const remindTime = req.body.remindTime;
|
||||
const inspectionInterval = req.body.inspectionInterval || null;
|
||||
const remindTime = req.body.remindTime || null;
|
||||
|
||||
TypeTester.testPlanTimeDefinition(inspectionInterval, "inspectionInterval", true);
|
||||
TypeTester.testPlanTimeDefinition(remindTime, "remindTime", true);
|
||||
TypeTester.testPlanTimeDefinition(inspectionInterval, { key: "inspectionInterval", throwErr: true, allowNull: true });
|
||||
TypeTester.testPlanTimeDefinition(remindTime, { key: "inspectionInterval", throwErr: true, allowNull: true });
|
||||
|
||||
let updateInspectionPlan: UpdateInspectionPlanCommand = {
|
||||
id: inspectionPlanId,
|
||||
|
|
|
@ -13,11 +13,11 @@ export class inspectionPlan {
|
|||
@Column({ type: "varchar", length: 255 })
|
||||
title: string;
|
||||
|
||||
@Column({ type: "varchar", length: 255 })
|
||||
inspectionInterval: PlanTimeDefinition;
|
||||
@Column({ type: "varchar", length: 255, nullable: true, default: null })
|
||||
inspectionInterval?: PlanTimeDefinition;
|
||||
|
||||
@Column({ type: "varchar", length: 255 })
|
||||
remindTime: PlanTimeDefinition;
|
||||
@Column({ type: "varchar", length: 255, nullable: true, default: null })
|
||||
remindTime?: PlanTimeDefinition;
|
||||
|
||||
@CreateDateColumn()
|
||||
createdAt: Date;
|
||||
|
|
|
@ -1,7 +1,11 @@
|
|||
import { PlanTimeDefinition } from "../viewmodel/admin/unit/inspection/inspectionPlan.models";
|
||||
|
||||
export default abstract class TypeTester {
|
||||
static testPlanTimeDefinition(val: string, key: string = "", throwErr: boolean = false): PlanTimeDefinition | null {
|
||||
static testPlanTimeDefinition(
|
||||
val: string | null,
|
||||
{ key = "", throwErr = false, allowNull = false }: { key?: string; throwErr?: boolean; allowNull?: boolean }
|
||||
): PlanTimeDefinition | null {
|
||||
if (val == null && allowNull) return null;
|
||||
if (/^(\d+-(d|m|y)|\d+\/(\d+|\*))$/.test(val)) {
|
||||
return val as PlanTimeDefinition;
|
||||
} else if (throwErr) {
|
||||
|
|
|
@ -6,8 +6,8 @@ export const inspection_plan_table = new Table({
|
|||
columns: [
|
||||
{ name: "id", ...getTypeByORM("uuid"), ...isUUIDPrimary },
|
||||
{ name: "title", ...getTypeByORM("varchar") },
|
||||
{ name: "inspectionInterval", ...getTypeByORM("varchar") },
|
||||
{ name: "remindTime", ...getTypeByORM("varchar") },
|
||||
{ name: "inspectionInterval", ...getTypeByORM("varchar", true) },
|
||||
{ name: "remindTime", ...getTypeByORM("varchar", true) },
|
||||
{ name: "createdAt", ...getTypeByORM("datetime"), default: getDefaultByORM("currentTimestamp") },
|
||||
{ name: "equipmentTypeId", ...getTypeByORM("uuid", true) },
|
||||
{ name: "vehicleTypeId", ...getTypeByORM("uuid", true) },
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue