From cdd62274233ccdb0c5fab639c689a4eb8888b378 Mon Sep 17 00:00:00 2001 From: karol Date: Fri, 3 Jul 2026 14:55:53 +0000 Subject: [PATCH] =?UTF-8?q?Actualizaci=C3=B3n=20CRUD=20asignaci=C3=B3n=20d?= =?UTF-8?q?e=20veh=C3=ADculo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/app.ts | 2 +- .../vehicleassig.controller.ts | 101 ++++++++++++++---- .../vehicleassig.interface.ts | 15 ++- .../vehicle-assignments/vehicleassig.model.ts | 10 +- .../vehicleassig.routes.ts | 6 +- .../vehicleassig.service.ts | 30 +++++- .../vehiclesConfig.interface.ts | 4 +- 7 files changed, 128 insertions(+), 40 deletions(-) diff --git a/backend/src/app.ts b/backend/src/app.ts index 6868769..0e2d980 100644 --- a/backend/src/app.ts +++ b/backend/src/app.ts @@ -7,7 +7,7 @@ import authRouter from "./modules/auth/auth.routes"; import fuelRoutes from "./modules/fuel-types/fuelType.routes"; import fuelPriceRoute from "./modules/fuel_prices/fuelPrices.routes"; import fuelPumpRouter from "./modules/fuel_pumps/fuelPump.routes"; -import vehicleConfigRouter from "./modules/vehicles-config/vehiclesConfigs.routes"; +import vehicleConfigRouter from "./modules/vehicles-config/vehiclesConfig.routes"; import vAssigRouter from "./modules/vehicle-assignments/vehicleassig.routes"; import fuelRequestRouter from "./modules/fuel-requests/fuelRequest.routes"; import approvalrouter from "./modules/approvals/approval.routes"; diff --git a/backend/src/modules/vehicle-assignments/vehicleassig.controller.ts b/backend/src/modules/vehicle-assignments/vehicleassig.controller.ts index 5370c39..5a69895 100644 --- a/backend/src/modules/vehicle-assignments/vehicleassig.controller.ts +++ b/backend/src/modules/vehicle-assignments/vehicleassig.controller.ts @@ -1,5 +1,4 @@ import {Request, Response } from "express"; - import { VehicleAssigService } from "./vehicleassig.service"; const vehicleAssigService = new VehicleAssigService(); @@ -10,10 +9,18 @@ export class VehicleAssigController { req:Request, res:Response ){ + + try{ + const vAssigs = await vehicleAssigService.getAll(); - const vAssigs = await vehicleAssigService.getAll(); + res.json(vAssigs); - res.json(vAssigs); + }catch(error){ + res.status(500).json({ + message:"Error al obtener asiganación de vehículo", + error + }); + } } async getById( @@ -21,46 +28,96 @@ export class VehicleAssigController { res:Response ){ - const vAssig = await vehicleAssigService.getById( - req.params.id as string - ); + try{ + const vAssig = await vehicleAssigService.getById( + req.params.id as string + ); + + if(!vAssig){ + return res.status(404).json({ + message:"Asignación de vehículo no encontrada" + }); + } + + res.json(vAssig); + + } catch(error){ + res.status(500).json({ + message:"Error al obtener asignación de vehículo", + error + }); + } - res.json(vAssig); } async create( req:Request, res:Response ){ - const vAssig = await vehicleAssigService.create( - req.body - ); + try{ + const vAssig = await vehicleAssigService.create( + req.body + ); + + res.status(201).json(vAssig); + + }catch(error){ + res.status(500).json({ + message:"Error al crear asignación de vehículo", + error + }); + } - res.status(201).json(vAssig); } async update( req:Request, res:Response ){ - const vAssig = await vehicleAssigService.update( - req.params.id as string, - req.body - ); + try{ + const vAssig = await vehicleAssigService.update( + req.params.id as string, + req.body + ); + if (!vAssig){ + return res.status(404).json({ + message:"Asignación de vehículo no encontrada" + }); + } - res.json(vAssig); + res.status(200).json(vAssig); + }catch(error){ + res.status(500).json({ + message:"Error al actualizar asignación de vehículo", + error + }) + } } async delete ( req:Request, res:Response ){ - const vAssig = await vehicleAssigService.delete( - req.params.id as string - ) + try{ + const vAssig = await vehicleAssigService.delete( + req.params.id as string + ); - res.json({ - message:"Assignación eliminada" - }); + if(!vAssig){ + return res.status(404).json({ + message:"Asignación de vehículo no encontrada" + }); + } + + res.json({ + message:"Asignación eliminada correctamente" + }); + + } catch(error){ + res.status(500).json({ + message:"Error al eliminar asignación de vehículo", + error + }); + } } } \ No newline at end of file diff --git a/backend/src/modules/vehicle-assignments/vehicleassig.interface.ts b/backend/src/modules/vehicle-assignments/vehicleassig.interface.ts index 25fa63c..5e78ae1 100644 --- a/backend/src/modules/vehicle-assignments/vehicleassig.interface.ts +++ b/backend/src/modules/vehicle-assignments/vehicleassig.interface.ts @@ -1,11 +1,16 @@ -import { ObjectId } from "mongoose"; +import { Types } from "mongoose"; export interface IVehicleAssig { vehicleNumber:number; - exployeeId:number; - assigmentDate:Date; - unassigmentDate:Date; + + employeeId:number; + + assignmentDate:Date; + + unassignmentDate:Date; + active:boolean - createdBy:ObjectId; + + createdBy:Types.ObjectId; } \ No newline at end of file diff --git a/backend/src/modules/vehicle-assignments/vehicleassig.model.ts b/backend/src/modules/vehicle-assignments/vehicleassig.model.ts index f58f67f..153f491 100644 --- a/backend/src/modules/vehicle-assignments/vehicleassig.model.ts +++ b/backend/src/modules/vehicle-assignments/vehicleassig.model.ts @@ -1,4 +1,4 @@ -import mongoose, { mongo } from "mongoose"; +import mongoose from "mongoose"; const vehicleAssigSchema = new mongoose.Schema({ @@ -7,17 +7,17 @@ const vehicleAssigSchema = new mongoose.Schema({ required:true }, - exployeeId:{ + employeeId:{ type:Number, required:true }, - assigmentDate:{ + assignmentDate:{ type:Date, required:true }, - unassigmentDate:{ + unassignmentDate:{ type:Date }, @@ -38,4 +38,4 @@ const vehicleAssigSchema = new mongoose.Schema({ } ); -export default mongoose.model("VehicleAssig", vehicleAssigSchema) \ No newline at end of file +export default mongoose.model("VehicleAssig", vehicleAssigSchema); \ No newline at end of file diff --git a/backend/src/modules/vehicle-assignments/vehicleassig.routes.ts b/backend/src/modules/vehicle-assignments/vehicleassig.routes.ts index 88d3902..2ab993a 100644 --- a/backend/src/modules/vehicle-assignments/vehicleassig.routes.ts +++ b/backend/src/modules/vehicle-assignments/vehicleassig.routes.ts @@ -7,12 +7,12 @@ const controller = new VehicleAssigController(); vAssigRouter.get("/", authMiddleware, controller.getAll) -vAssigRouter.get("/id", authMiddleware, controller.getById); +vAssigRouter.get("/:id", authMiddleware, controller.getById); vAssigRouter.post("/", authMiddleware, controller.create); -vAssigRouter.put("/id", authMiddleware, controller.update); +vAssigRouter.put("/:id", authMiddleware, controller.update); -vAssigRouter.delete("/id", authMiddleware, controller.delete); +vAssigRouter.delete("/:id", authMiddleware, controller.delete); export default vAssigRouter; diff --git a/backend/src/modules/vehicle-assignments/vehicleassig.service.ts b/backend/src/modules/vehicle-assignments/vehicleassig.service.ts index 25cc510..a733d2e 100644 --- a/backend/src/modules/vehicle-assignments/vehicleassig.service.ts +++ b/backend/src/modules/vehicle-assignments/vehicleassig.service.ts @@ -1,9 +1,12 @@ import vehicleassigModel from "./vehicleassig.model"; +import { IVehicleAssig } from './vehicleassig.interface'; + export class VehicleAssigService { async getAll() { + return await vehicleassigModel .find() .populate( @@ -24,9 +27,18 @@ export class VehicleAssigService { } async create( - data:any + data:IVehicleAssig ){ + const assig = await vehicleassigModel.findOne({ + vehicleNumber: data.vehicleNumber, + active:true + }); + + if(assig){ + throw new Error ("El vehículo ya tiene una asignación activa"); + } + return await vehicleassigModel.create( data ); @@ -34,8 +46,22 @@ export class VehicleAssigService { async update( id:string, - data:any + data:Partial ){ + + if(data.vehicleNumber !== undefined){ + + const assig = await vehicleassigModel.findOne({ + vehicleNumber: data.vehicleNumber, + active:true, + _id: { $ne: id } + }); + + if(assig){ + throw new Error("El vehículo ya tiene asignación activa"); + } + } + return await vehicleassigModel.findByIdAndUpdate( id, data, diff --git a/backend/src/modules/vehicles-config/vehiclesConfig.interface.ts b/backend/src/modules/vehicles-config/vehiclesConfig.interface.ts index 2fe1428..48816e6 100644 --- a/backend/src/modules/vehicles-config/vehiclesConfig.interface.ts +++ b/backend/src/modules/vehicles-config/vehiclesConfig.interface.ts @@ -1,9 +1,9 @@ -import { ObjectId } from "mongoose"; +import { Types } from "mongoose"; export interface IVehicleConfig { vehicleId:number; - fuelTypeId:ObjectId; + fuelTypeId:Types.ObjectId; tankCapacity:number; currentMileage:number; odometerWorking:boolean;