From 4e6c6b138c8d1132d93d4c0d6df51241407dcbed Mon Sep 17 00:00:00 2001 From: Julian Krauser Date: Wed, 19 Feb 2025 12:57:22 +0100 Subject: [PATCH] finish base data --- .../equipment/equipmentCommandHandler.ts | 20 +++++++++++++++++ .../force/forceCommandHandler.ts | 20 +++++++++++++++++ .../vehicle/vehicleCommandHandler.ts | 20 +++++++++++++++++ .../configuration/equipmentController.ts | 22 +++++++++++++++---- .../admin/configuration/forceController.ts | 22 +++++++++++++++---- .../admin/configuration/vehicleController.ts | 22 +++++++++++++++---- src/data-source.ts | 4 +++- src/routes/admin/configuration/equipment.ts | 9 ++++++++ src/routes/admin/configuration/force.ts | 9 ++++++++ src/routes/admin/configuration/vehicle.ts | 9 ++++++++ 10 files changed, 144 insertions(+), 13 deletions(-) diff --git a/src/command/configuration/equipment/equipmentCommandHandler.ts b/src/command/configuration/equipment/equipmentCommandHandler.ts index 4d43368..8e6bda2 100644 --- a/src/command/configuration/equipment/equipmentCommandHandler.ts +++ b/src/command/configuration/equipment/equipmentCommandHandler.ts @@ -54,6 +54,26 @@ export default abstract class EquipmentCommandHandler { }); } + /** + * @description decommission equipment + * @param {string} equipmentId + * @returns {Promise} + */ + static async decommission(equipmentId: string): Promise { + return await dataSource + .createQueryBuilder() + .update(equipment) + .set({ + decommissioned: new Date(), + }) + .where("id = :id", { id: equipmentId }) + .execute() + .then(() => {}) + .catch((err) => { + throw new DatabaseActionException("UPDATE", "equipment", err); + }); + } + /** * @description delete equipment * @param {DeleteEquipmentCommand} deleteEquipment diff --git a/src/command/configuration/force/forceCommandHandler.ts b/src/command/configuration/force/forceCommandHandler.ts index 59fda38..fff8989 100644 --- a/src/command/configuration/force/forceCommandHandler.ts +++ b/src/command/configuration/force/forceCommandHandler.ts @@ -56,6 +56,26 @@ export default abstract class ForceCommandHandler { }); } + /** + * @description decommission force + * @param {string} forceId + * @returns {Promise} + */ + static async decommission(forceId: string): Promise { + return await dataSource + .createQueryBuilder() + .update(force) + .set({ + decommissioned: new Date(), + }) + .where("id = :id", { id: forceId }) + .execute() + .then(() => {}) + .catch((err) => { + throw new DatabaseActionException("UPDATE", "force", err); + }); + } + /** * @description delete force * @param {DeleteForceCommand} deleteForce diff --git a/src/command/configuration/vehicle/vehicleCommandHandler.ts b/src/command/configuration/vehicle/vehicleCommandHandler.ts index 1fe4eb7..7922a38 100644 --- a/src/command/configuration/vehicle/vehicleCommandHandler.ts +++ b/src/command/configuration/vehicle/vehicleCommandHandler.ts @@ -54,6 +54,26 @@ export default abstract class VehicleCommandHandler { }); } + /** + * @description decommission vehicle + * @param {string} vehicleId + * @returns {Promise} + */ + static async decommission(vehicleId: string): Promise { + return await dataSource + .createQueryBuilder() + .update(vehicle) + .set({ + decommissioned: new Date(), + }) + .where("id = :id", { id: vehicleId }) + .execute() + .then(() => {}) + .catch((err) => { + throw new DatabaseActionException("UPDATE", "vehicle", err); + }); + } + /** * @description delete vehicle * @param {DeleteVehicleCommand} deleteVehicle diff --git a/src/controller/admin/configuration/equipmentController.ts b/src/controller/admin/configuration/equipmentController.ts index 8529665..933ed4d 100644 --- a/src/controller/admin/configuration/equipmentController.ts +++ b/src/controller/admin/configuration/equipmentController.ts @@ -73,8 +73,8 @@ export async function createEquipment(req: Request, res: Response): Promise const code = req.body.code || null; const type = req.body.type || null; const name = req.body.name; - const commissioned = req.body.commissioned || undefined; - const decommissioned = req.body.decommissioned || undefined; + const commissioned = req.body.commissioned || null; + const decommissioned = req.body.decommissioned || null; let createEquipment: CreateEquipmentCommand = { code, @@ -99,8 +99,8 @@ export async function updateEquipmentById(req: Request, res: Response): Promise< const code = req.body.code || null; const type = req.body.type || null; const name = req.body.name; - const commissioned = req.body.commissioned || undefined; - const decommissioned = req.body.decommissioned || undefined; + const commissioned = req.body.commissioned || null; + const decommissioned = req.body.decommissioned || null; let updateEquipment: UpdateEquipmentCommand = { id: equipmentId, @@ -115,6 +115,20 @@ export async function updateEquipmentById(req: Request, res: Response): Promise< res.sendStatus(204); } +/** + * @description decommission equipment by id + * @param req {Request} Express req object + * @param res {Response} Express res object + * @returns {Promise<*>} + */ +export async function decommissionEquipmentById(req: Request, res: Response): Promise { + const equipmentId = req.params.id; + + await EquipmentCommandHandler.decommission(equipmentId); + + res.sendStatus(204); +} + /** * @description delete equipment by id * @param req {Request} Express req object diff --git a/src/controller/admin/configuration/forceController.ts b/src/controller/admin/configuration/forceController.ts index 789de1e..9e1123f 100644 --- a/src/controller/admin/configuration/forceController.ts +++ b/src/controller/admin/configuration/forceController.ts @@ -74,8 +74,8 @@ export async function createForce(req: Request, res: Response): Promise { const firstname = req.body.firstname; const lastname = req.body.lastname; const nameaffix = req.body.nameaffix; - const commissioned = req.body.commissioned || undefined; - const decommissioned = req.body.decommissioned || undefined; + const commissioned = req.body.commissioned || null; + const decommissioned = req.body.decommissioned || null; let createForce: CreateForceCommand = { firstname, @@ -102,8 +102,8 @@ export async function updateForceById(req: Request, res: Response): Promise const firstname = req.body.firstname; const lastname = req.body.lastname; const nameaffix = req.body.nameaffix; - const commissioned = req.body.commissioned || undefined; - const decommissioned = req.body.decommissioned || undefined; + const commissioned = req.body.commissioned || null; + const decommissioned = req.body.decommissioned || null; let updateForce: UpdateForceCommand = { id: forceId, @@ -119,6 +119,20 @@ export async function updateForceById(req: Request, res: Response): Promise res.sendStatus(204); } +/** + * @description decommission force by id + * @param req {Request} Express req object + * @param res {Response} Express res object + * @returns {Promise<*>} + */ +export async function decommissionForceById(req: Request, res: Response): Promise { + const forceId = req.params.id; + + await ForceCommandHandler.decommission(forceId); + + res.sendStatus(204); +} + /** * @description delete force by id * @param req {Request} Express req object diff --git a/src/controller/admin/configuration/vehicleController.ts b/src/controller/admin/configuration/vehicleController.ts index ac17265..67101d4 100644 --- a/src/controller/admin/configuration/vehicleController.ts +++ b/src/controller/admin/configuration/vehicleController.ts @@ -73,8 +73,8 @@ export async function createVehicle(req: Request, res: Response): Promise { const code = req.body.code || null; const type = req.body.type || null; const name = req.body.name; - const commissioned = req.body.commissioned || undefined; - const decommissioned = req.body.decommissioned || undefined; + const commissioned = req.body.commissioned || null; + const decommissioned = req.body.decommissioned || null; let createVehicle: CreateVehicleCommand = { code, @@ -99,8 +99,8 @@ export async function updateVehicleById(req: Request, res: Response): Promise} + */ +export async function decommissionVehicleById(req: Request, res: Response): Promise { + const vehicleId = req.params.id; + + await VehicleCommandHandler.decommission(vehicleId); + + res.sendStatus(204); +} + /** * @description delete vehicle by id * @param req {Request} Express req object diff --git a/src/data-source.ts b/src/data-source.ts index 6fe9083..c82df98 100644 --- a/src/data-source.ts +++ b/src/data-source.ts @@ -13,6 +13,8 @@ import { force } from "./entity/configuration/force"; import { reset } from "./entity/reset"; import { CreateSchema1739697068682 } from "./migrations/1739697068682-CreateSchema"; +import { vehicle } from "./entity/configuration/vehicle"; +import { equipment } from "./entity/configuration/equipment"; const dataSource = new DataSource({ type: DB_TYPE as any, @@ -24,7 +26,7 @@ const dataSource = new DataSource({ synchronize: false, logging: process.env.NODE_ENV ? true : ["schema", "error", "warn", "log", "migration"], bigNumberStrings: false, - entities: [user, refresh, invite, reset, userPermission, role, rolePermission, force], + entities: [user, refresh, invite, reset, userPermission, role, rolePermission, force, vehicle, equipment], migrations: [CreateSchema1739697068682], migrationsRun: true, migrationsTransactionMode: "each", diff --git a/src/routes/admin/configuration/equipment.ts b/src/routes/admin/configuration/equipment.ts index 1441e01..02da2f9 100644 --- a/src/routes/admin/configuration/equipment.ts +++ b/src/routes/admin/configuration/equipment.ts @@ -1,6 +1,7 @@ import express, { Request, Response } from "express"; import { createEquipment, + decommissionEquipmentById, deleteEquipmentById, getAllEquipments, getEquipmentById, @@ -39,6 +40,14 @@ router.patch( } ); +router.patch( + "/:id/decommission", + PermissionHelper.passCheckMiddleware("update", "operation", "equipment"), + async (req: Request, res: Response) => { + await decommissionEquipmentById(req, res); + } +); + router.delete( "/:id", PermissionHelper.passCheckMiddleware("delete", "operation", "equipment"), diff --git a/src/routes/admin/configuration/force.ts b/src/routes/admin/configuration/force.ts index cf7f78b..b1b4540 100644 --- a/src/routes/admin/configuration/force.ts +++ b/src/routes/admin/configuration/force.ts @@ -1,6 +1,7 @@ import express, { Request, Response } from "express"; import { createForce, + decommissionForceById, deleteForceById, getAllForces, getForceById, @@ -39,6 +40,14 @@ router.patch( } ); +router.patch( + "/:id/decommission", + PermissionHelper.passCheckMiddleware("update", "operation", "force"), + async (req: Request, res: Response) => { + await decommissionForceById(req, res); + } +); + router.delete( "/:id", PermissionHelper.passCheckMiddleware("delete", "operation", "force"), diff --git a/src/routes/admin/configuration/vehicle.ts b/src/routes/admin/configuration/vehicle.ts index 22427e8..746e97e 100644 --- a/src/routes/admin/configuration/vehicle.ts +++ b/src/routes/admin/configuration/vehicle.ts @@ -1,6 +1,7 @@ import express, { Request, Response } from "express"; import { createVehicle, + decommissionVehicleById, deleteVehicleById, getAllVehicles, getVehicleById, @@ -39,6 +40,14 @@ router.patch( } ); +router.patch( + "/:id/decommission", + PermissionHelper.passCheckMiddleware("update", "operation", "vehicle"), + async (req: Request, res: Response) => { + await decommissionVehicleById(req, res); + } +); + router.delete( "/:id", PermissionHelper.passCheckMiddleware("delete", "operation", "vehicle"),