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 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";

View File

@ -1,5 +1,4 @@
import {Request, Response } from "express";
import { VehicleAssigService } from "./vehicleassig.service";
const vehicleAssigService = new VehicleAssigService();
@ -11,9 +10,17 @@ export class VehicleAssigController {
res:Response
){
try{
const vAssigs = await vehicleAssigService.getAll();
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
){
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
});
}
}
async create(
req:Request,
res:Response
){
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
});
}
}
async update(
req:Request,
res:Response
){
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
){
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
});
}
}
}

View File

@ -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;
}

View File

@ -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)
export default mongoose.model("VehicleAssig", vehicleAssigSchema);

View File

@ -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;

View File

@ -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<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(
id,
data,

View File

@ -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;