Actualización CRUD módulo lectura de bombas
This commit is contained in:
@ -117,44 +117,28 @@ export class PumpReadingController {
|
||||
async calculateDispensedGallons(
|
||||
|
||||
req: Request,
|
||||
|
||||
res: Response
|
||||
|
||||
) {
|
||||
|
||||
try {
|
||||
|
||||
const gallons =
|
||||
|
||||
await service.calculateDispensedGallons(
|
||||
|
||||
const gallons = await service.calculateDispensedGallons(
|
||||
req.params.id as string
|
||||
|
||||
);
|
||||
|
||||
res.json({
|
||||
|
||||
gallonsDispensed: gallons
|
||||
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
|
||||
res.status(500).json({
|
||||
|
||||
message: "Error al calcular galones despachados.",
|
||||
|
||||
error
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Calcular galones registrados por el sistema
|
||||
|
||||
|
||||
async calculateSystemDispensed(
|
||||
|
||||
req: Request,
|
||||
@ -163,68 +147,43 @@ export class PumpReadingController {
|
||||
) {
|
||||
|
||||
try {
|
||||
|
||||
const gallons = await service.calculateSystemDispensed(
|
||||
|
||||
req.params.id as string
|
||||
|
||||
);
|
||||
|
||||
res.json({
|
||||
|
||||
systemDispensed: gallons
|
||||
|
||||
});
|
||||
|
||||
} catch (error) {
|
||||
|
||||
res.status(500).json({
|
||||
|
||||
message: "Error al calcular galones del sistema.",
|
||||
error
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Calcular diferencia
|
||||
|
||||
async calculateDifference(
|
||||
|
||||
req: Request,
|
||||
res: Response
|
||||
|
||||
) {
|
||||
|
||||
try {
|
||||
|
||||
const difference = await service.calculateDifference(
|
||||
|
||||
req.params.id as string
|
||||
|
||||
);
|
||||
|
||||
res.json({
|
||||
|
||||
difference
|
||||
|
||||
});
|
||||
res.json({difference});
|
||||
|
||||
} catch (error) {
|
||||
|
||||
res.status(500).json({
|
||||
|
||||
message: "Error al calcular la diferencia.",
|
||||
|
||||
error
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Actualizar estado
|
||||
@ -235,25 +194,15 @@ export class PumpReadingController {
|
||||
res: Response
|
||||
|
||||
) {
|
||||
|
||||
try {
|
||||
|
||||
const status = await service.updateStatus(
|
||||
|
||||
req.params.id as string
|
||||
|
||||
);
|
||||
|
||||
res.json({
|
||||
|
||||
status
|
||||
|
||||
});
|
||||
res.json({status});
|
||||
|
||||
} catch (error) {
|
||||
|
||||
res.status(500).json({
|
||||
|
||||
message: "Error al actualizar el estado.",
|
||||
error
|
||||
|
||||
@ -264,96 +213,62 @@ export class PumpReadingController {
|
||||
}
|
||||
|
||||
//Actualizar Fuel Request relacionadas
|
||||
|
||||
|
||||
async updateFuelRequests(
|
||||
|
||||
req: Request,
|
||||
res: Response
|
||||
|
||||
) {
|
||||
|
||||
try {
|
||||
|
||||
const requests = await service.updateFuelRequests(
|
||||
|
||||
req.params.id as string
|
||||
|
||||
);
|
||||
|
||||
res.json(requests);
|
||||
|
||||
} catch (error) {
|
||||
|
||||
res.status(500).json({
|
||||
|
||||
message: "Error al actualizar las Fuel Request.",
|
||||
error
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Crear anomalía por diferencia
|
||||
|
||||
async createDifferenceAnomaly(
|
||||
|
||||
req: Request,
|
||||
res: Response
|
||||
|
||||
) {
|
||||
|
||||
try {
|
||||
|
||||
const anomaly = await service.creataDifferenceAnomaly(
|
||||
|
||||
req.params.id as string
|
||||
|
||||
);
|
||||
|
||||
res.json(anomaly);
|
||||
|
||||
} catch (error) {
|
||||
|
||||
res.status(500).json({
|
||||
|
||||
message: "Error al crear la anomalía.",
|
||||
|
||||
error
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Cerrar lectura
|
||||
|
||||
async closeReading(
|
||||
|
||||
req: Request,
|
||||
res: Response
|
||||
|
||||
) {
|
||||
|
||||
try {
|
||||
|
||||
const reading = await service.closeReading(
|
||||
|
||||
req.params.id as string
|
||||
|
||||
);
|
||||
|
||||
res.json(reading);
|
||||
|
||||
} catch (error) {
|
||||
|
||||
res.status(500).json({
|
||||
|
||||
message: "Error al cerrar la lectura.",
|
||||
|
||||
error
|
||||
|
||||
});
|
||||
|
||||
@ -79,11 +79,5 @@ const pumpReadingSchema = new mongoose.Schema({
|
||||
|
||||
);
|
||||
|
||||
pumpReadingSchema.pre("save",
|
||||
function(){
|
||||
|
||||
this.gallonsDispensed = this.finalReading-this.initialReading;
|
||||
}
|
||||
);
|
||||
|
||||
export default mongoose.model("PumpReading",pumpReadingSchema);
|
||||
@ -6,23 +6,41 @@ const pumpReadingRouter = Router();
|
||||
|
||||
const controller = new PumpReadingController();
|
||||
|
||||
|
||||
// Obtener todas las lecturas
|
||||
pumpReadingRouter.get("/", authMiddleware, controller.getAll);
|
||||
|
||||
// Obtener una lectura por ID
|
||||
// Obtener lectura por ID
|
||||
pumpReadingRouter.get("/:id", authMiddleware, controller.getById);
|
||||
|
||||
// Crear una nueva lectura
|
||||
pumpReadingRouter.post("/", authMiddleware, controller.create);
|
||||
// Crear lectura
|
||||
pumpReadingRouter.post("/",authMiddleware, controller.create
|
||||
);
|
||||
|
||||
// Actualizar una lectura
|
||||
// Actualizar lectura
|
||||
pumpReadingRouter.put("/:id", authMiddleware, controller.update);
|
||||
|
||||
// Eliminar una lectura
|
||||
// Eliminar lectura
|
||||
pumpReadingRouter.delete("/:id", authMiddleware, controller.delete);
|
||||
|
||||
// Cerrar lectura y realizar el cuadre
|
||||
// Calcular galones despachados
|
||||
pumpReadingRouter.post("/:id/calculate-dispensed", authMiddleware, controller.calculateDispensedGallons);
|
||||
|
||||
// Calcular galones registrados en el sistema
|
||||
pumpReadingRouter.post("/:id/calculate-system", authMiddleware, controller.calculateSystemDispensed);
|
||||
|
||||
// Calcular diferencia
|
||||
pumpReadingRouter.post("/:id/calculate-difference", authMiddleware, controller.calculateDifference);
|
||||
|
||||
// Actualizar estado
|
||||
pumpReadingRouter.post("/:id/update-status",authMiddleware,controller.updateStatus);
|
||||
|
||||
// Actualizar Fuel Requests relacionadas
|
||||
pumpReadingRouter.post("/:id/update-requests", authMiddleware, controller.updateFuelRequests);
|
||||
|
||||
// Crear anomalía por diferencia
|
||||
pumpReadingRouter.post("/:id/create-anomaly", authMiddleware, controller.createDifferenceAnomaly);
|
||||
|
||||
// Cerrar lectura (realiza todo el proceso)
|
||||
pumpReadingRouter.post("/:id/close", authMiddleware, controller.closeReading);
|
||||
|
||||
export default pumpReadingRouter;
|
||||
@ -2,23 +2,11 @@ import pumpReadingModel from "./pumpReading.model";
|
||||
import { IPumpReading } from "./pumpReading.interface";
|
||||
import fuelRequestModel from "../fuel-requests/fuelRequest.model";
|
||||
import anomalyModel from "../anomalies/anomaly.model";
|
||||
import { generatePumpReadingNumber } from "../../utils/requestNumber";
|
||||
|
||||
|
||||
export class PumpReadingService{
|
||||
|
||||
//Crear nueva lectura de bomba
|
||||
|
||||
async create(
|
||||
data:IPumpReading
|
||||
){
|
||||
data.gallonsDispensed=
|
||||
data.finalReading-
|
||||
data.initialReading;
|
||||
|
||||
const pumpReading = new pumpReadingModel(data);
|
||||
|
||||
return await pumpReading.save();
|
||||
}
|
||||
|
||||
//Obtener todas las lecturas
|
||||
|
||||
@ -45,24 +33,86 @@ export class PumpReadingService{
|
||||
.populate("createdBy")
|
||||
}
|
||||
|
||||
async update (
|
||||
id:string,
|
||||
data:Partial<IPumpReading>
|
||||
//Crear nueva lectura de bomba
|
||||
async create(
|
||||
data: IPumpReading
|
||||
){
|
||||
if(
|
||||
data.initialReading !== undefined&&
|
||||
data.finalReading !== undefined
|
||||
){
|
||||
data.gallonsDispensed =
|
||||
data.finalReading -
|
||||
data.initialReading;
|
||||
// Validar lectura inicial
|
||||
if (data.initialReading < 0) {
|
||||
throw new Error("La lectura inicial no puede ser menor que 0.");
|
||||
}
|
||||
|
||||
// Validar lectura final
|
||||
if (data.finalReading < data.initialReading) {
|
||||
throw new Error("La lectura final no puede ser menor que la lectura inicial.");
|
||||
}
|
||||
|
||||
data.readingNumber = generatePumpReadingNumber();
|
||||
|
||||
// Calcular galones despachados
|
||||
data.gallonsDispensed = data.finalReading - data.initialReading;
|
||||
|
||||
// Inicializar valores
|
||||
data.systemDispensed = 0;
|
||||
|
||||
data.difference = 0;
|
||||
|
||||
data.status = "ABIERTA";
|
||||
|
||||
// Guardar lectura
|
||||
const pumpReading = new pumpReadingModel(data);
|
||||
|
||||
return await pumpReading.save();
|
||||
}
|
||||
|
||||
async update(
|
||||
id: string,
|
||||
data: Partial<IPumpReading>
|
||||
){
|
||||
|
||||
// Buscar la lectura actual
|
||||
const reading = await pumpReadingModel.findById(id);
|
||||
|
||||
if (!reading) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Tomar los nuevos valores o conservar los existentes
|
||||
const initialReading = data.initialReading ?? reading.initialReading;
|
||||
|
||||
const finalReading = data.finalReading ?? reading.finalReading;
|
||||
|
||||
// Validar lecturas
|
||||
if (initialReading < 0) {
|
||||
throw new Error("La lectura inicial no puede ser menor que 0.");
|
||||
}
|
||||
|
||||
if (finalReading < initialReading) {
|
||||
throw new Error("La lectura final no puede ser menor que la lectura inicial.");
|
||||
}
|
||||
|
||||
// Recalcular galones despachados
|
||||
data.gallonsDispensed = finalReading - initialReading;
|
||||
|
||||
// Mantener actualizado el total del sistema
|
||||
const systemDispensed = data.systemDispensed ?? reading.systemDispensed;
|
||||
|
||||
// Recalcular diferencia
|
||||
data.difference = data.gallonsDispensed - systemDispensed;
|
||||
|
||||
// Actualizar estado automáticamente
|
||||
if (data.difference === 0) {
|
||||
data.status = "CUADRADA";
|
||||
} else {
|
||||
data.status = "CON_DIFERENCIA";
|
||||
}
|
||||
|
||||
// Actualizar la lectura
|
||||
return await pumpReadingModel.findByIdAndUpdate(
|
||||
id,
|
||||
data,
|
||||
{
|
||||
new:true
|
||||
new: true
|
||||
}
|
||||
);
|
||||
}
|
||||
@ -70,8 +120,7 @@ export class PumpReadingService{
|
||||
async delete (
|
||||
id:string
|
||||
){
|
||||
return await pumpReadingModel
|
||||
.findByIdAndDelete
|
||||
return await pumpReadingModel.findByIdAndDelete(id);
|
||||
}
|
||||
|
||||
//Calcular galones despachados
|
||||
@ -83,14 +132,11 @@ export class PumpReadingService{
|
||||
await pumpReadingModel.findById(id);
|
||||
|
||||
if(!reading){
|
||||
throw new Error(
|
||||
"Lectura no encontrado"
|
||||
);
|
||||
throw new Error("Lectura no encontrado");
|
||||
}
|
||||
|
||||
reading.gallonsDispensed =
|
||||
reading.finalReading -
|
||||
reading.initialReading;
|
||||
reading.gallonsDispensed = reading.finalReading - reading.initialReading;
|
||||
|
||||
await reading.save();
|
||||
return reading.gallonsDispensed;
|
||||
}
|
||||
@ -142,9 +188,8 @@ export class PumpReadingService{
|
||||
);
|
||||
}
|
||||
|
||||
reading.difference =
|
||||
reading.gallonsDispensed -
|
||||
reading.systemDispensed;
|
||||
reading.difference = reading.gallonsDispensed - reading.systemDispensed;
|
||||
|
||||
await reading.save();
|
||||
return reading.difference;
|
||||
}
|
||||
@ -210,7 +255,6 @@ export class PumpReadingService{
|
||||
}
|
||||
|
||||
//Crear anomalía por diferencencia
|
||||
|
||||
async creataDifferenceAnomaly(
|
||||
id:string
|
||||
){
|
||||
|
||||
Reference in New Issue
Block a user