From 938fed7ffce891e70631ee5c4a0e1345f8e9a404 Mon Sep 17 00:00:00 2001 From: karol Date: Thu, 4 Jun 2026 20:39:54 +0000 Subject: [PATCH] =?UTF-8?q?Implementaci=C3=B3n=20CRUD=20de=20modulo=20de?= =?UTF-8?q?=20Precios=20de=20combustible?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- backend/src/app.ts | 2 + .../modules/fuel-types/fuelType.controller.ts | 2 + .../fuel_prices/fuelPrices.controller.ts | 64 +++++++++++++++++++ .../fuel_prices/fuelPrices.interface.ts | 12 ++++ .../modules/fuel_prices/fuelPrices.model.ts | 43 +++++++++++++ .../modules/fuel_prices/fuelPrices.routes.ts | 20 ++++++ .../modules/fuel_prices/fuelPrices.service.ts | 49 ++++++++++++++ 7 files changed, 192 insertions(+) create mode 100644 backend/src/modules/fuel_prices/fuelPrices.controller.ts create mode 100644 backend/src/modules/fuel_prices/fuelPrices.interface.ts create mode 100644 backend/src/modules/fuel_prices/fuelPrices.model.ts create mode 100644 backend/src/modules/fuel_prices/fuelPrices.routes.ts create mode 100644 backend/src/modules/fuel_prices/fuelPrices.service.ts diff --git a/backend/src/app.ts b/backend/src/app.ts index 920d059..11caecf 100644 --- a/backend/src/app.ts +++ b/backend/src/app.ts @@ -5,6 +5,7 @@ import roleRouter from "./modules/roles/role.routes"; import userRouter from "./modules/user/user.routes"; import authRouter from "./modules/auth/auth.routes"; import fuelRoutes from "./modules/fuel-types/fuelType.routes"; +import fuelPriceRoute from "./modules/fuel_prices/fuelPrices.routes"; @@ -17,6 +18,7 @@ app.use("/api/roles", roleRouter); app.use("/api/user", userRouter); app.use("/api/fuel", fuelRoutes); app.use("/api/auth", authRouter); +app.use("/api/fuelprice", fuelPriceRoute) app.use(express.urlencoded({ diff --git a/backend/src/modules/fuel-types/fuelType.controller.ts b/backend/src/modules/fuel-types/fuelType.controller.ts index f2cadc9..3e3243a 100644 --- a/backend/src/modules/fuel-types/fuelType.controller.ts +++ b/backend/src/modules/fuel-types/fuelType.controller.ts @@ -43,6 +43,7 @@ export class FuelTypeController { res.status(201).json(fuelType); } + //Actualizar tipo de combustible async update( req:Request, res:Response @@ -56,6 +57,7 @@ export class FuelTypeController { res.json(fuelType); } + //Eliminar tipo de combustible async delete ( req:Request, res:Response diff --git a/backend/src/modules/fuel_prices/fuelPrices.controller.ts b/backend/src/modules/fuel_prices/fuelPrices.controller.ts new file mode 100644 index 0000000..3ec3727 --- /dev/null +++ b/backend/src/modules/fuel_prices/fuelPrices.controller.ts @@ -0,0 +1,64 @@ +import { Request, Response } from "express"; +import { FuelPriceService } from "./fuelPrices.service"; + +const fuelPriceService = new FuelPriceService(); + +export class FuelPriceController { + + async getAll( + req:Request, + res:Response + ){ + const fuelPrices = await fuelPriceService.getAll(); + + res.json(fuelPrices); + } + + async getById( + req:Request, + res:Response + ){ + const fuelPrice = await fuelPriceService.getById( + req.params.id as string + ); + + res.json(fuelPrice); + } + + async create ( + req:Request, + res:Response + ){ + const fuelPrice = await fuelPriceService.create( + req.body + ); + + res.status(201).json(fuelPrice); + } + + async update( + req:Request, + res:Response + ){ + + const fuelPrice = await fuelPriceService.update( + req.params.id as string, + req.body + ) + + res.json(fuelPrice); + } + + async delete ( + req:Request, + res:Response + ){ + const fuelPrice = await fuelPriceService.delete( + req.params.id as string + ) + + res.json({ + message:"Precio eliminado"} + ); + } +} diff --git a/backend/src/modules/fuel_prices/fuelPrices.interface.ts b/backend/src/modules/fuel_prices/fuelPrices.interface.ts new file mode 100644 index 0000000..7a252f0 --- /dev/null +++ b/backend/src/modules/fuel_prices/fuelPrices.interface.ts @@ -0,0 +1,12 @@ +import mongoose, { mongo, ObjectId } from "mongoose"; + +export interface IFuelPrince { + + fueltypeId:ObjectId; + + pricePerGallon:number; + effectiveFrom:Date; + effectiveTo:Date; + active:boolean; + createBy:ObjectId; +} \ No newline at end of file diff --git a/backend/src/modules/fuel_prices/fuelPrices.model.ts b/backend/src/modules/fuel_prices/fuelPrices.model.ts new file mode 100644 index 0000000..f4161f2 --- /dev/null +++ b/backend/src/modules/fuel_prices/fuelPrices.model.ts @@ -0,0 +1,43 @@ +import mongoose, { mongo } from "mongoose"; + +const fuelPriceSchema = new mongoose.Schema({ + + fuelTypeId:{ + type:mongoose.Types.ObjectId, + ref:"FuelType", + required:true, + + }, + + pricePerGallon:{ + type:Number, + required:true + }, + + effetiveFrom:{ + type:Date, + required:true + }, + + effetiveTo:{ + type:Date, + required:true + }, + + active:{ + type:Boolean, + default:true + }, + + createBy:{ + type:mongoose.Types.ObjectId, + ref:"User", + required:true + } +}, +{ + timestamps:true +} +); + +export default mongoose.model("FuelPrices", fuelPriceSchema) \ No newline at end of file diff --git a/backend/src/modules/fuel_prices/fuelPrices.routes.ts b/backend/src/modules/fuel_prices/fuelPrices.routes.ts new file mode 100644 index 0000000..2e46918 --- /dev/null +++ b/backend/src/modules/fuel_prices/fuelPrices.routes.ts @@ -0,0 +1,20 @@ +import { Router } from "express"; +import { FuelPriceController } from "./fuelPrices.controller"; +import { authMiddleware } from "../auth/auth.middleware"; + +const fuelPriceRoute = Router(); + +const controller = new FuelPriceController(); + +fuelPriceRoute.get("/", authMiddleware, controller.getAll); + +fuelPriceRoute.get("/id", authMiddleware, controller.getById); + +fuelPriceRoute.post("/", authMiddleware, controller.create); + +fuelPriceRoute.put("/id", authMiddleware, controller.update); + +fuelPriceRoute.delete("/id", authMiddleware, controller.delete); + + +export default fuelPriceRoute; \ No newline at end of file diff --git a/backend/src/modules/fuel_prices/fuelPrices.service.ts b/backend/src/modules/fuel_prices/fuelPrices.service.ts new file mode 100644 index 0000000..633414b --- /dev/null +++ b/backend/src/modules/fuel_prices/fuelPrices.service.ts @@ -0,0 +1,49 @@ +import fuelPricesModel from "./fuelPrices.model"; + +export class FuelPriceService { + + async getAll(){ + return await fuelPricesModel + .find() + .populate("fuelTypeId"); + } + + async getById ( + id:string + ) { + return await fuelPricesModel + .findById() + .populate("fuelTypeId"); + } + + async create ( + data:any + ){ + + return await fuelPricesModel.create( + data + ); + } + + async update ( + id:string, + data:any + + ){ + return await fuelPricesModel.findByIdAndUpdate( + id, + data, + { + new:true + } + ); + } + + async delete ( + id:string + ){ + return await fuelPricesModel.findByIdAndDelete( + id + ); + } +} \ No newline at end of file