Actualización CRUD asignación de vehículo

This commit is contained in:
2026-07-03 14:55:53 +00:00
parent 89dfea7e0e
commit cdd6227423
7 changed files with 128 additions and 40 deletions

View File

@ -7,7 +7,7 @@ import authRouter from "./modules/auth/auth.routes";
import fuelRoutes from "./modules/fuel-types/fuelType.routes"; import fuelRoutes from "./modules/fuel-types/fuelType.routes";
import fuelPriceRoute from "./modules/fuel_prices/fuelPrices.routes"; import fuelPriceRoute from "./modules/fuel_prices/fuelPrices.routes";
import fuelPumpRouter from "./modules/fuel_pumps/fuelPump.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 vAssigRouter from "./modules/vehicle-assignments/vehicleassig.routes";
import fuelRequestRouter from "./modules/fuel-requests/fuelRequest.routes"; import fuelRequestRouter from "./modules/fuel-requests/fuelRequest.routes";
import approvalrouter from "./modules/approvals/approval.routes"; import approvalrouter from "./modules/approvals/approval.routes";

View File

@ -1,5 +1,4 @@
import {Request, Response } from "express"; import {Request, Response } from "express";
import { VehicleAssigService } from "./vehicleassig.service"; import { VehicleAssigService } from "./vehicleassig.service";
const vehicleAssigService = new VehicleAssigService(); const vehicleAssigService = new VehicleAssigService();
@ -11,9 +10,17 @@ export class VehicleAssigController {
res:Response 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( async getById(
@ -21,46 +28,96 @@ export class VehicleAssigController {
res:Response res:Response
){ ){
try{
const vAssig = await vehicleAssigService.getById( const vAssig = await vehicleAssigService.getById(
req.params.id as string req.params.id as string
); );
if(!vAssig){
return res.status(404).json({
message:"Asignación de vehículo no encontrada"
});
}
res.json(vAssig); res.json(vAssig);
} catch(error){
res.status(500).json({
message:"Error al obtener asignación de vehículo",
error
});
}
} }
async create( async create(
req:Request, req:Request,
res:Response res:Response
){ ){
try{
const vAssig = await vehicleAssigService.create( const vAssig = await vehicleAssigService.create(
req.body req.body
); );
res.status(201).json(vAssig); res.status(201).json(vAssig);
}catch(error){
res.status(500).json({
message:"Error al crear asignación de vehículo",
error
});
}
} }
async update( async update(
req:Request, req:Request,
res:Response res:Response
){ ){
try{
const vAssig = await vehicleAssigService.update( const vAssig = await vehicleAssigService.update(
req.params.id as string, req.params.id as string,
req.body 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 ( async delete (
req:Request, req:Request,
res:Response res:Response
){ ){
try{
const vAssig = await vehicleAssigService.delete( const vAssig = await vehicleAssigService.delete(
req.params.id as string req.params.id as string
) );
if(!vAssig){
return res.status(404).json({
message:"Asignación de vehículo no encontrada"
});
}
res.json({ res.json({
message:"Assignación eliminada" message:"Asignación eliminada correctamente"
});
} catch(error){
res.status(500).json({
message:"Error al eliminar asignación de vehículo",
error
}); });
} }
} }
}

View File

@ -1,11 +1,16 @@
import { ObjectId } from "mongoose"; import { Types } from "mongoose";
export interface IVehicleAssig { export interface IVehicleAssig {
vehicleNumber:number; vehicleNumber:number;
exployeeId:number;
assigmentDate:Date; employeeId:number;
unassigmentDate:Date;
assignmentDate:Date;
unassignmentDate:Date;
active:boolean active:boolean
createdBy:ObjectId;
createdBy:Types.ObjectId;
} }

View File

@ -1,4 +1,4 @@
import mongoose, { mongo } from "mongoose"; import mongoose from "mongoose";
const vehicleAssigSchema = new mongoose.Schema({ const vehicleAssigSchema = new mongoose.Schema({
@ -7,17 +7,17 @@ const vehicleAssigSchema = new mongoose.Schema({
required:true required:true
}, },
exployeeId:{ employeeId:{
type:Number, type:Number,
required:true required:true
}, },
assigmentDate:{ assignmentDate:{
type:Date, type:Date,
required:true required:true
}, },
unassigmentDate:{ unassignmentDate:{
type:Date type:Date
}, },
@ -38,4 +38,4 @@ const vehicleAssigSchema = new mongoose.Schema({
} }
); );
export default mongoose.model("VehicleAssig", vehicleAssigSchema) export default mongoose.model("VehicleAssig", vehicleAssigSchema);

View File

@ -7,12 +7,12 @@ const controller = new VehicleAssigController();
vAssigRouter.get("/", authMiddleware, controller.getAll) vAssigRouter.get("/", authMiddleware, controller.getAll)
vAssigRouter.get("/id", authMiddleware, controller.getById); vAssigRouter.get("/:id", authMiddleware, controller.getById);
vAssigRouter.post("/", authMiddleware, controller.create); 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; export default vAssigRouter;

View File

@ -1,9 +1,12 @@
import vehicleassigModel from "./vehicleassig.model"; import vehicleassigModel from "./vehicleassig.model";
import { IVehicleAssig } from './vehicleassig.interface';
export class VehicleAssigService { export class VehicleAssigService {
async getAll() async getAll()
{ {
return await vehicleassigModel return await vehicleassigModel
.find() .find()
.populate( .populate(
@ -24,9 +27,18 @@ export class VehicleAssigService {
} }
async create( 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( return await vehicleassigModel.create(
data data
); );
@ -34,8 +46,22 @@ export class VehicleAssigService {
async update( async update(
id:string, id:string,
data:any data:Partial<IVehicleAssig>
){ ){
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( return await vehicleassigModel.findByIdAndUpdate(
id, id,
data, data,

View File

@ -1,9 +1,9 @@
import { ObjectId } from "mongoose"; import { Types } from "mongoose";
export interface IVehicleConfig { export interface IVehicleConfig {
vehicleId:number; vehicleId:number;
fuelTypeId:ObjectId; fuelTypeId:Types.ObjectId;
tankCapacity:number; tankCapacity:number;
currentMileage:number; currentMileage:number;
odometerWorking:boolean; odometerWorking:boolean;