ff-admin-server/src/controller/admin/unit/repairController.ts

169 lines
5.1 KiB
TypeScript
Raw Normal View History

2025-07-19 11:02:07 +02:00
import { Request, Response } from "express";
import RepairService from "../../../service/unit/repairService";
import RepairFactory from "../../../factory/admin/unit/repair";
2025-07-22 13:10:13 +02:00
import {
CreateRepairCommand,
UpdateRepairCommand,
UpdateRepairStatusCommand,
} from "../../../command/unit/repairCommand";
2025-07-19 11:02:07 +02:00
import RepairCommandHandler from "../../../command/unit/repairCommandHandler";
import BadRequestException from "../../../exceptions/badRequestException";
import { FileSystemHelper } from "../../../helpers/fileSystemHelper";
2025-07-22 13:10:13 +02:00
import { UpdateDamageReportRelatedRepairCommand } from "../../../command/unit/damageReportCommand";
import DamageReportCommandHandler from "../../../command/unit/damageReportCommandHandler";
2025-07-19 11:02:07 +02:00
/**
* @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> {
2025-07-21 12:58:19 +02:00
const title = req.body.title;
2025-07-19 11:02:07 +02:00
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 = {
2025-07-21 12:58:19 +02:00
title,
2025-07-19 11:02:07 +02:00
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;
2025-07-21 12:58:19 +02:00
const title = req.body.title;
2025-07-19 11:02:07 +02:00
const description = req.body.description;
const responsible = req.body.responsible;
let updateRepair: UpdateRepairCommand = {
id: repairId,
2025-07-21 12:58:19 +02:00
title,
2025-07-19 11:02:07 +02:00
description,
responsible,
};
await RepairCommandHandler.update(updateRepair);
res.sendStatus(204);
}
2025-07-22 13:10:13 +02:00
/**
* @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);
}