From 75f25665331050a01e4386cbfce838e734016e27 Mon Sep 17 00:00:00 2001 From: Bhaskar Date: Thu, 22 Aug 2024 12:33:59 +0530 Subject: [PATCH 1/4] notification --- src/controllers/tanksController.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index f4b5e9e9..20db95ff 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -1307,6 +1307,33 @@ admin.initializeApp({ credential: admin.credential.cert(serviceAccount), }); +const sendPushNotification = async (registrationToken, title, body) => { + const message = { + notification: { + title: title, + body: body, + }, + data: { + title: title, + body: body, + }, + }; + + const options = { + priority: "high", + timeToLive: 60 * 60 * 24, + }; + + try { + const response = await admin.messaging().sendToDevice(registrationToken, message, options); + console.log('FCM response:', response); // Log the FCM response + return response; // Return the FCM response object + } catch (error) { + console.error('FCM error:', error); + throw error; // Throw the error to handle it further up the call stack + } +}; + exports.motorAction = async (req, reply) => { try { const customerId = req.params.customerId; From d02394b8273417c6d3086c228cece1505e34351b Mon Sep 17 00:00:00 2001 From: varun Date: Thu, 22 Aug 2024 03:37:45 -0400 Subject: [PATCH 2/4] get blocks --- src/controllers/tanksController.js | 35 +++++++++++++++++++++++++----- src/models/tanks.js | 1 + src/routes/tanksRoute.js | 30 +++++++++++++++++++++++++ 3 files changed, 61 insertions(+), 5 deletions(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index f4b5e9e9..07d9023d 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -942,15 +942,17 @@ let supplier_tanks = []; exports.consumption = async (request, reply) => { try { const { customerId } = request.params; - const { startDate, stopDate, block, typeofwater } = request.body; - + const { startDate, stopDate, block } = req.body; + let { typeofwater } = req.body; + // Convert typeofwater to lowercase + typeofwater = typeofwater.toLowerCase(); const start = startDate; const end = stopDate; // Construct the query object based on block and typeofwater inputs const tankQuery = { customerId, tankLocation: "overhead" }; - if (block !== "all") { + if (block !== "All") { tankQuery.blockName = block; // Filter by specific block if not "all" } @@ -975,7 +977,7 @@ exports.consumption = async (request, reply) => { $gte: start, $lte: end }, - ...(block !== "all" && { block: tank.blockName }), // Ensure correct field names + ...(block !== "All" && { block: tank.blockName }), // Ensure correct field names ...(typeofwater !== "all" && { typeofwater: tank.typeOfWater }) // Ensure correct field names }); @@ -3131,4 +3133,27 @@ setInterval(storeWaterLevels, 15 * 60 * 1000); -console.log('Cron job scheduled to update water levels at midnight'); \ No newline at end of file +console.log('Cron job scheduled to update water levels at midnight'); + + +exports.getBlockData = async (req, reply) => { + try { + const customerId = req.params.customerId; + + // Get all tank documents for the current customerId + const tanks = await Tank.find({ customerId }); + + // Extract the blockName from each tank + const blockNames = tanks.map(tank => tank.blockName); + + // Remove duplicates by converting the array to a Set and then back to an array + const uniqueBlockNames = [...new Set(blockNames)]; + + // Send the unique blockNames in the response + reply.code(200).send({ blockNames: uniqueBlockNames }); + + } catch (err) { + // Send an error response + reply.code(500).send({ error: err.message }); + } +}; diff --git a/src/models/tanks.js b/src/models/tanks.js index 487eec58..67469115 100644 --- a/src/models/tanks.js +++ b/src/models/tanks.js @@ -107,6 +107,7 @@ const motordataSchema = new mongoose.Schema({ receiverfinalwaterlevel: { type: String, default: "0" }, startTime: { type: String, default: null }, stopTime: { type: String, default: null }, + runtime:{type:String, default:"0"}, supplier_type: { type: String, default: null }, receiver_type: { type: String, default: null }, quantity_delivered:{ type: String, default: null }, diff --git a/src/routes/tanksRoute.js b/src/routes/tanksRoute.js index eeb66d6d..f51c7fea 100644 --- a/src/routes/tanksRoute.js +++ b/src/routes/tanksRoute.js @@ -935,6 +935,36 @@ module.exports = function (fastify, opts, next) { //preHandler: fastify.auth([fastify.authenticate]), handler: tanksController.update_auto_percentage, }); + + + fastify.route({ + method: "GET", + url: "/api/getBlockData/:customerId", + schema: { + tags: ["Tank"], + summary: "This is for get blocks under particular user", + params: { + required: ["customerId"], + type: "object", + properties: { + customerId: { + type: "string", + description: "customerId", + }, + }, + }, + // querystring: { + // tankName: {type: 'string'} + // }, + security: [ + { + basicAuth: [], + }, + ], + }, + //preHandler: fastify.auth([fastify.authenticate]), + handler: tanksController.getBlockData, + }); next(); } From bfe7fda84bdb75dbd38d55c37da163f1a7742bc5 Mon Sep 17 00:00:00 2001 From: Bhaskar Date: Thu, 22 Aug 2024 14:49:40 +0530 Subject: [PATCH 3/4] maximum alert --- src/controllers/tanksController.js | 467 +++++++++++++++++++++++------ 1 file changed, 371 insertions(+), 96 deletions(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 1bf5364c..84737073 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -1342,7 +1342,6 @@ exports.motorAction = async (req, reply) => { const action = req.body.action; const motorId = req.body.motor_id; const start_instance_id = req.body.start_instance_id; - //const fcmIds = req.body.fcmIds; // Assume this is provided in the request to notify users // Ensure motor_id is provided if (!motorId) { @@ -1358,6 +1357,7 @@ exports.motorAction = async (req, reply) => { } else { throw new Error("Invalid action provided."); } + const users = await User.find({ customerId: customerId }); const fcmIds = users.map(user => user.fcmId).filter(fcmId => fcmId); @@ -1366,8 +1366,8 @@ exports.motorAction = async (req, reply) => { // Update the motor stop status and other fields await Tank.updateOne( { customerId, "connections.inputConnections.motor_id": motorId }, - { - $set: { + { + $set: { "connections.inputConnections.$.motor_stop_status": "1", "connections.inputConnections.$.stopTime": req.body.stopTime, "connections.inputConnections.$.threshold_type": null, @@ -1414,8 +1414,8 @@ exports.motorAction = async (req, reply) => { await MotorData.updateOne( { customerId, motor_id: motorId, start_instance_id: start_instance_id }, - { - $set: { + { + $set: { stopTime: req.body.stopTime, receiverfinalwaterlevel: receiverFinalWaterLevel.toString(), quantity_delivered: quantityDelivered.toString() @@ -1533,120 +1533,395 @@ exports.motorAction = async (req, reply) => { { customerId, motor_id: motorId, start_instance_id: start_instance_id }, { $set: { - stopTime: req.body.stopTime, + stopTime: formatDate(new Date()), receiverfinalwaterlevel: receiverFinalWaterLevel.toString(), quantity_delivered: quantityDelivered.toString() } } ); } - } - }, 60000); // Check every minute - } else if (req.body.threshold_type === "litres") { - console.log("entered litres") - const receiver_tank_info7 = await Tank.findOne({ customerId, tankName: req.body.to, tankLocation: req.body.to_type.toLowerCase() }); + } else { + // Monitor the receiver tank's water level and send notification if max capacity is reached + const receiverTank = await Tank.findOne({ customerId, tankName: req.body.to, tankLocation: req.body.to_type.toLowerCase() }); + const currentWaterLevel = parseInt(receiverTank.waterlevel, 10); + const receiverTankCapacity = parseInt(receiverTank.capacity, 10); + + if (currentWaterLevel >= receiverTankCapacity) { + // Send a notification for maximum water level reached + for (const fcmId of fcmIds) { + try { + const response = await sendPushNotification(fcmId, 'Maximum Water Level Alert', `The receiver tank has reached its maximum capacity.`); + console.log('Notification sent successfully:', response); + + if (response.results[0].error === 'NotRegistered') { + await User.updateOne({ fcmId: fcmId }, { $unset: { fcmId: "" } }); + console.log(`Removed unregistered FCM ID: ${fcmId}`); + } + } catch (error) { + console.error('Error sending notification:', error); + } + } - const newMotorData = new MotorData({ - customerId: customerId, - motor_id: motorId, - start_instance_id: start_instance_id, - supplierTank: req.body.from, - receiverTank: req.body.to, - supplier_type: req.body.from_type, - receiver_type: req.body.to_type, - startTime: req.body.startTime, - receiverInitialwaterlevel:parseInt(receiver_tank_info7.waterlevel, 10) - }); - await newMotorData.save(); - // If threshold type is percentage, calculate percentage threshold - const receiver_tank_info = await Tank.findOne({ customerId, tankName: req.body.to, tankLocation: req.body.to_type.toLowerCase() }); - const supplier_tank_info = await Tank.findOne({ customerId, tankName: req.body.from, tankLocation: req.body.from_type.toLowerCase() }); - if (!receiver_tank_info) { - throw new Error("Receiver tank not found."); - } - if (!supplier_tank_info) { - throw new Error("Supplierr tank not found."); - } - const supplier_capacity = parseInt(supplier_tank_info.capacity, 10); - const supplier_waterLevel = parseInt(supplier_tank_info.waterlevel, 10); + // Stop the motor + await Tank.updateOne( + { customerId, "connections.inputConnections.motor_id": motorId }, + { + $set: { + "connections.inputConnections.$.motor_stop_status": "1", + "connections.inputConnections.$.threshold_type": null, + "connections.inputConnections.$.manual_threshold_time": null, + "connections.inputConnections.$.manual_threshold_percentage": null + } + } + ); - const capacity = parseInt(receiver_tank_info.capacity, 10); - const waterLevel = parseInt(receiver_tank_info.waterlevel, 10); - const desired_percentage = parseInt(req.body.manual_threshold_litres.replace(/,/g, ''), 10); + clearInterval(intervalId); // Stop monitoring - console.log(desired_percentage) - const threshold_water_level = waterLevel+desired_percentage; + await delay(300000); - const supplier_threshold = supplier_waterLevel-desired_percentage - console.log(supplier_threshold,"supplier_threshold") + const motorData = await MotorData.findOne({ customerId, motor_id: motorId, start_instance_id: start_instance_id }); + if (motorData) { + const receiverFinalWaterLevel = currentWaterLevel; + const quantityDelivered = receiverFinalWaterLevel - parseInt(motorData.receiverInitialwaterlevel, 10); - for await (const tank of Tank.find({ "connections.inputConnections.motor_id": motorId })) { - const index = tank.connections.inputConnections.findIndex(connection => connection.motor_id === motorId); - if (index !== -1) { - await Tank.updateOne( - { customerId, "connections.inputConnections.motor_id": motorId }, - { $set: { [`connections.inputConnections.${index}.manual_threshold_percentage`]: supplier_threshold.toString(), [`connections.inputConnections.${index}.startTime`]: req.body.startTime } } - ); + const stopTime = formatDate(new Date()); + + await MotorData.updateOne( + { customerId, motor_id: motorId, start_instance_id: start_instance_id }, + { + $set: { + stopTime: stopTime, + receiverfinalwaterlevel: receiverFinalWaterLevel.toString(), + quantity_delivered: quantityDelivered.toString() + } + } + ); + } + } } - } + }, 20000); // Check every 20 seconds + } + } + + reply.code(200).send({ message: "Motor action processed successfully." }); + } catch (error) { + console.error(error); + reply.code(500).send({ error: error.message }); + } +}; + + +// exports.motorAction = async (req, reply) => { +// try { +// const customerId = req.params.customerId; +// const action = req.body.action; +// const motorId = req.body.motor_id; +// const start_instance_id = req.body.start_instance_id; +// //const fcmIds = req.body.fcmIds; // Assume this is provided in the request to notify users + +// // Ensure motor_id is provided +// if (!motorId) { +// throw new Error("Motor ID is required."); +// } + +// // Determine the motor stop status based on the action +// let motorStopStatus; +// if (action === "start") { +// motorStopStatus = "2"; // If action is start, set stop status to "2" +// } else if (action === "stop") { +// motorStopStatus = "1"; // If action is stop, set stop status to "1" +// } else { +// throw new Error("Invalid action provided."); +// } +// const users = await User.find({ customerId: customerId }); +// const fcmIds = users.map(user => user.fcmId).filter(fcmId => fcmId); + +// // Handle motor stop action +// if (action === "stop") { +// // Update the motor stop status and other fields +// await Tank.updateOne( +// { customerId, "connections.inputConnections.motor_id": motorId }, +// { +// $set: { +// "connections.inputConnections.$.motor_stop_status": "1", +// "connections.inputConnections.$.stopTime": req.body.stopTime, +// "connections.inputConnections.$.threshold_type": null, +// "connections.inputConnections.$.manual_threshold_time": null, +// "connections.inputConnections.$.manual_threshold_percentage": null +// } +// } +// ); + +// // Send immediate response to the client +// reply.code(200).send({ message: "Motor stopped successfully." }); + +// // Send notification for motor stop +// for (const fcmId of fcmIds) { +// try { +// const response = await sendPushNotification(fcmId, 'Motor Stopped', `Motor has stopped at ${req.body.stopTime}.`); +// console.log('Notification sent successfully:', response); + +// if (response.results[0].error === 'NotRegistered') { +// await User.updateOne({ fcmId: fcmId }, { $unset: { fcmId: "" } }); +// console.log(`Removed unregistered FCM ID: ${fcmId}`); +// } +// } catch (error) { +// console.error('Error sending notification:', error); +// } +// } + +// // Perform stop operations in the background +// (async () => { +// await delay(300000); + +// // Update the existing motor data entry with stop details +// const motorData = await MotorData.findOne({ customerId, motor_id: motorId, start_instance_id: start_instance_id }); +// if (motorData) { +// const receiverTank = await Tank.findOne({ customerId, tankName: motorData.receiverTank, tankLocation: motorData.receiver_type.toLowerCase() }); +// const receiverFinalWaterLevel = parseInt(receiverTank.waterlevel, 10); +// const quantityDelivered = receiverFinalWaterLevel - parseInt(motorData.receiverInitialwaterlevel, 10); +// const water_pumped_till_now = parseInt(receiverTank.total_water_added_from_midnight, 10); +// const totalwaterpumped = quantityDelivered + water_pumped_till_now; +// await Tank.findOneAndUpdate( +// { customerId, tankName: motorData.receiverTank, tankLocation: motorData.receiver_type.toLowerCase() }, +// { $set: { total_water_added_from_midnight: totalwaterpumped } } +// ); + +// await MotorData.updateOne( +// { customerId, motor_id: motorId, start_instance_id: start_instance_id }, +// { +// $set: { +// stopTime: req.body.stopTime, +// receiverfinalwaterlevel: receiverFinalWaterLevel.toString(), +// quantity_delivered: quantityDelivered.toString() +// } +// } +// ); +// } +// })(); + +// // Return here to ensure the rest of the code is not executed for the stop action +// return; +// } else { +// // Update the motor stop status to "2" for start action +// await Tank.updateOne( +// { customerId, "connections.inputConnections.motor_id": motorId }, +// { $set: { "connections.inputConnections.$.motor_stop_status": "2" } } +// ); + +// // Send notification for motor start +// for (const fcmId of fcmIds) { +// try { +// const response = await sendPushNotification(fcmId, 'Motor Started', `Motor has started at ${req.body.startTime}.`); +// console.log('Notification sent successfully:', response); + +// if (response.results[0].error === 'NotRegistered') { +// await User.updateOne({ fcmId: fcmId }, { $unset: { fcmId: "" } }); +// console.log(`Removed unregistered FCM ID: ${fcmId}`); +// } +// } catch (error) { +// console.error('Error sending notification:', error); +// } +// } +// } + +// // Check threshold settings if action is start +// if (action === "start") { +// if (req.body.threshold_type === "time") { +// const receiver_tank_info7 = await Tank.findOne({ customerId, tankName: req.body.to, tankLocation: req.body.to_type.toLowerCase() }); + +// const newMotorData = new MotorData({ +// customerId: customerId, +// motor_id: motorId, +// start_instance_id: start_instance_id, +// supplierTank: req.body.from, +// receiverTank: req.body.to, +// supplier_type: req.body.from_type, +// receiver_type: req.body.to_type, +// startTime: req.body.startTime, +// receiverInitialwaterlevel: parseInt(receiver_tank_info7.waterlevel, 10) +// }); +// await newMotorData.save(); + +// for await (const tank of Tank.find({ "connections.inputConnections.motor_id": motorId })) { +// const index = tank.connections.inputConnections.findIndex(connection => connection.motor_id === motorId); +// if (index !== -1) { +// await Tank.updateOne( +// { customerId, "connections.inputConnections.motor_id": motorId }, +// { $set: { [`connections.inputConnections.${index}.manual_threshold_time`]: req.body.manual_threshold_time, [`connections.inputConnections.${index}.startTime`]: req.body.startTime, [`connections.inputConnections.${index}.start_instance_id`]: start_instance_id } } +// ); +// } +// } + +// // Start monitoring water level based on threshold time +// const thresholdTime = moment().add(req.body.manual_threshold_time, 'minutes').toDate(); +// const intervalId = setInterval(async () => { +// const splr_tank_info3 = await Tank.findOne({ customerId, tankName: req.body.from, tankLocation: req.body.from_type.toLowerCase() }); +// const splr_tank_info3_waterlevel = parseInt(splr_tank_info3.waterlevel, 10); +// const splr_tank_info3_capacity = parseInt(splr_tank_info3.capacity.replace(/,/g, ''), 10); +// const splr_tank_info3_percentage = (splr_tank_info3_waterlevel / splr_tank_info3_capacity) * 100; + +// if (new Date() >= thresholdTime || splr_tank_info3_percentage <= 20) { +// // Send notification for low supplier tank percentage +// for (const fcmId of fcmIds) { +// try { +// const response = await sendPushNotification(fcmId, 'Low Water Level Alert', `Supplier tank water level is below 20% (${splr_tank_info3_percentage.toFixed(2)}%).`); +// console.log('Notification sent successfully:', response); + +// if (response.results[0].error === 'NotRegistered') { +// await User.updateOne({ fcmId: fcmId }, { $unset: { fcmId: "" } }); +// console.log(`Removed unregistered FCM ID: ${fcmId}`); +// } +// } catch (error) { +// console.error('Error sending notification:', error); +// } +// } + +// await Tank.updateOne( +// { customerId, "connections.inputConnections.motor_id": motorId }, +// { +// $set: { +// "connections.inputConnections.$.motor_stop_status": "1", +// "connections.inputConnections.$.threshold_type": null, +// "connections.inputConnections.$.manual_threshold_time": null, +// "connections.inputConnections.$.manual_threshold_percentage": null +// } +// } +// ); +// clearInterval(intervalId); + +// await delay(300000); + +// const motorData = await MotorData.findOne({ customerId, motor_id: motorId, start_instance_id: start_instance_id }); +// if (motorData) { +// const receiverTank = await Tank.findOne({ customerId, tankName: motorData.receiverTank, tankLocation: motorData.receiver_type.toLowerCase() }); +// const receiverFinalWaterLevel = parseInt(receiverTank.waterlevel, 10); +// const quantityDelivered = receiverFinalWaterLevel - parseInt(motorData.receiverInitialwaterlevel, 10); +// const water_pumped_till_now = parseInt(receiverTank.total_water_added_from_midnight, 10); +// const totalwaterpumped = quantityDelivered + water_pumped_till_now; +// await Tank.findOneAndUpdate( +// { customerId, tankName: motorData.receiverTank, tankLocation: motorData.receiver_type.toLowerCase() }, +// { $set: { total_water_added_from_midnight: totalwaterpumped } } +// ); + +// await MotorData.updateOne( +// { customerId, motor_id: motorId, start_instance_id: start_instance_id }, +// { +// $set: { +// stopTime: req.body.stopTime, +// receiverfinalwaterlevel: receiverFinalWaterLevel.toString(), +// quantity_delivered: quantityDelivered.toString() +// } +// } +// ); +// } +// } +// }, 60000); // Check every minute +// } else if (req.body.threshold_type === "litres") { +// console.log("entered litres") +// const receiver_tank_info7 = await Tank.findOne({ customerId, tankName: req.body.to, tankLocation: req.body.to_type.toLowerCase() }); + +// const newMotorData = new MotorData({ +// customerId: customerId, +// motor_id: motorId, +// start_instance_id: start_instance_id, +// supplierTank: req.body.from, +// receiverTank: req.body.to, +// supplier_type: req.body.from_type, +// receiver_type: req.body.to_type, +// startTime: req.body.startTime, +// receiverInitialwaterlevel:parseInt(receiver_tank_info7.waterlevel, 10) +// }); +// await newMotorData.save(); +// // If threshold type is percentage, calculate percentage threshold +// const receiver_tank_info = await Tank.findOne({ customerId, tankName: req.body.to, tankLocation: req.body.to_type.toLowerCase() }); +// const supplier_tank_info = await Tank.findOne({ customerId, tankName: req.body.from, tankLocation: req.body.from_type.toLowerCase() }); +// if (!receiver_tank_info) { +// throw new Error("Receiver tank not found."); +// } +// if (!supplier_tank_info) { +// throw new Error("Supplierr tank not found."); +// } +// const supplier_capacity = parseInt(supplier_tank_info.capacity, 10); +// const supplier_waterLevel = parseInt(supplier_tank_info.waterlevel, 10); + +// const capacity = parseInt(receiver_tank_info.capacity, 10); +// const waterLevel = parseInt(receiver_tank_info.waterlevel, 10); +// const desired_percentage = parseInt(req.body.manual_threshold_litres.replace(/,/g, ''), 10); + +// console.log(desired_percentage) +// const threshold_water_level = waterLevel+desired_percentage; + +// const supplier_threshold = supplier_waterLevel-desired_percentage +// console.log(supplier_threshold,"supplier_threshold") + +// for await (const tank of Tank.find({ "connections.inputConnections.motor_id": motorId })) { +// const index = tank.connections.inputConnections.findIndex(connection => connection.motor_id === motorId); +// if (index !== -1) { +// await Tank.updateOne( +// { customerId, "connections.inputConnections.motor_id": motorId }, +// { $set: { [`connections.inputConnections.${index}.manual_threshold_percentage`]: supplier_threshold.toString(), [`connections.inputConnections.${index}.startTime`]: req.body.startTime } } +// ); +// } +// } - // Start monitoring water level based on threshold percentage - const intervalId = setInterval(async () => { - // Check if water level has reached the threshold percentage - const supplier_tank_info1 = await Tank.findOne({ customerId, tankName: req.body.from, tankLocation: req.body.from_type.toLowerCase() }); - const current_water_level = parseInt(supplier_tank_info1.waterlevel, 10); - if (current_water_level <= supplier_threshold) { - // Stop the motor pump - await Tank.updateOne( - { customerId, "connections.inputConnections.motor_id": motorId }, - { - $set: { - "connections.inputConnections.$.motor_stop_status": "1", +// // Start monitoring water level based on threshold percentage +// const intervalId = setInterval(async () => { +// // Check if water level has reached the threshold percentage +// const supplier_tank_info1 = await Tank.findOne({ customerId, tankName: req.body.from, tankLocation: req.body.from_type.toLowerCase() }); +// const current_water_level = parseInt(supplier_tank_info1.waterlevel, 10); +// if (current_water_level <= supplier_threshold) { +// // Stop the motor pump +// await Tank.updateOne( +// { customerId, "connections.inputConnections.motor_id": motorId }, +// { +// $set: { +// "connections.inputConnections.$.motor_stop_status": "1", - "connections.inputConnections.$.threshold_type": null, - "connections.inputConnections.$.manual_threshold_time": null, - "connections.inputConnections.$.manual_threshold_percentage": null - } - } - ); - clearInterval(intervalId); // Stop monitoring water level - await delay(300000); +// "connections.inputConnections.$.threshold_type": null, +// "connections.inputConnections.$.manual_threshold_time": null, +// "connections.inputConnections.$.manual_threshold_percentage": null +// } +// } +// ); +// clearInterval(intervalId); // Stop monitoring water level +// await delay(300000); - const motorData = await MotorData.findOne({ customerId, motor_id: motorId, start_instance_id: start_instance_id }); - if (motorData) { - const receiverTank = await Tank.findOne({ customerId, tankName: motorData.receiverTank, tankLocation: motorData.receiver_type.toLowerCase() }); - const receiverFinalWaterLevel = parseInt(receiverTank.waterlevel, 10); - const quantityDelivered = receiverFinalWaterLevel - parseInt(motorData.receiverInitialwaterlevel, 10); +// const motorData = await MotorData.findOne({ customerId, motor_id: motorId, start_instance_id: start_instance_id }); +// if (motorData) { +// const receiverTank = await Tank.findOne({ customerId, tankName: motorData.receiverTank, tankLocation: motorData.receiver_type.toLowerCase() }); +// const receiverFinalWaterLevel = parseInt(receiverTank.waterlevel, 10); +// const quantityDelivered = receiverFinalWaterLevel - parseInt(motorData.receiverInitialwaterlevel, 10); - const stopTime = formatDate(new Date()); +// const stopTime = formatDate(new Date()); - await MotorData.updateOne( - { customerId, motor_id: motorId, start_instance_id: start_instance_id }, - { - $set: { - stopTime:stopTime, - receiverfinalwaterlevel: receiverFinalWaterLevel.toString(), - quantity_delivered: quantityDelivered.toString() - } - } - ); - } - } - }, 20000); - } - } +// await MotorData.updateOne( +// { customerId, motor_id: motorId, start_instance_id: start_instance_id }, +// { +// $set: { +// stopTime:stopTime, +// receiverfinalwaterlevel: receiverFinalWaterLevel.toString(), +// quantity_delivered: quantityDelivered.toString() +// } +// } +// ); +// } +// } +// }, 20000); +// } +// } - reply.code(200).send({ message: `Motor ${action === "start" ? "started" : "stopped"} successfully.` }); - } catch (err) { - // Handle errors - throw boom.boomify(err); - } -}; +// reply.code(200).send({ message: `Motor ${action === "start" ? "started" : "stopped"} successfully.` }); +// } catch (err) { +// // Handle errors +// throw boom.boomify(err); +// } +// }; const motorActionAuto = async (req, reply) => { try { From 1506c839a28b8cc4155e738362328df7d404709e Mon Sep 17 00:00:00 2001 From: Bhaskar Date: Fri, 23 Aug 2024 14:49:49 +0530 Subject: [PATCH 4/4] ADD tank and add bore changes --- src/controllers/tankersController.js | 9 +++++---- src/controllers/tanksController.js | 7 +++---- src/routes/tankersRoute.js | 10 +++++----- src/routes/tanksRoute.js | 12 ++++++------ 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/controllers/tankersController.js b/src/controllers/tankersController.js index 8f4c1082..b1335bbb 100644 --- a/src/controllers/tankersController.js +++ b/src/controllers/tankersController.js @@ -388,13 +388,14 @@ exports.addBores = async (req, reply) => { try { - var InstallerId = req.params.InstallerId; + var customerId = req.params.customerId; //console.log(customerId); //const username = loginObject.user.username; boresData = { - InstallerId:InstallerId, - customerId:req.body.customerId, + // InstallerId:InstallerId, + // customerId:req.body.customerId, + customerId:customerId, boreName: req.body.boreName, capacity: req.body.capacity, typeofwater: req.body.typeofwater, @@ -416,7 +417,7 @@ exports.addBores = async (req, reply) => { usertobeInserted = checkFormEncoding.bores; console.log("thsi true url string"); - bores.InstallerId = usertobeInserted.InstallerId + // bores.InstallerId = usertobeInserted.InstallerId bores.customerId = usertobeInserted.customerId bores.boreName = usertobeInserted.boreName; diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 84737073..0ce4bfa6 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -88,11 +88,10 @@ async function deleteOldRecords() { exports.addTanks = async (req, reply) => { try { - const InstallerId = req.params.InstallerId; - const { customerId,hardwareId, tankhardwareId,tankName,tankLocation } = req.body; + const customerId = req.params.customerId; + const { hardwareId, tankhardwareId,tankName,tankLocation } = req.body; - // Check if the combination of hardwareId and tankhardwareId already exists const existingTank = await Tank.findOne({ customerId: customerId, hardwareId: hardwareId, @@ -106,7 +105,7 @@ exports.addTanks = async (req, reply) => { } const tankData = { - InstallerId:InstallerId, + // InstallerId:InstallerId, customerId: customerId, hardwareId: hardwareId, tankhardwareId: tankhardwareId, diff --git a/src/routes/tankersRoute.js b/src/routes/tankersRoute.js index 9640dbf5..2e5b00a5 100644 --- a/src/routes/tankersRoute.js +++ b/src/routes/tankersRoute.js @@ -269,18 +269,18 @@ module.exports = function (fastify, opts, next) { fastify.route({ method: "POST", - url: "/api/addBores/:InstallerId", + url: "/api/addBores/:customerId", schema: { tags: ["Install"], description: "This is to cretae New Bore", summary: "This is to Create New Bore.", params: { - required: ["InstallerId"], + // required: ["InstallerId"], type: "object", properties: { - InstallerId: { + customerId: { type: "string", - description: "InstallerId", + description: "customerId", }, }, }, @@ -288,7 +288,7 @@ module.exports = function (fastify, opts, next) { type: "object", properties: { boreName: { type: "string" }, - customerId: { type: "string" }, + // customerId: { type: "string" }, capacity: { type: "string" }, typeofwater: { type: "string" }, description: { type: "string" }, diff --git a/src/routes/tanksRoute.js b/src/routes/tanksRoute.js index f51c7fea..9ba0bb58 100644 --- a/src/routes/tanksRoute.js +++ b/src/routes/tanksRoute.js @@ -6,18 +6,18 @@ module.exports = function (fastify, opts, next) { fastify.route({ method: "POST", - url: "/api/addTanks/:InstallerId", + url: "/api/addTanks/:customerId", schema: { tags: ["Install"], description: "This is for cretae New Tank", summary: "This is for Create New Tank.", params: { - required: ["InstallerId"], + // required: ["InstallerId"], type: "object", properties: { - InstallerId: { + customerId: { type: "string", - description: "InstallerId", + description: "customerId", }, }, }, @@ -29,7 +29,7 @@ module.exports = function (fastify, opts, next) { tankName: { type: "string" }, blockName: { type: "string"}, capacity: { type: "string" }, - customerId: { type: "string" }, + // customerId: { type: "string" }, typeOfWater: { type: "string" }, waterCapacityPerCm:{ type: "string" }, tankLocation: { type: "string" }, @@ -43,7 +43,7 @@ module.exports = function (fastify, opts, next) { ], }, - // preHandler: fastify.auth([fastify.authenticate]), + preHandler: fastify.auth([fastify.authenticate]), handler: tanksController.addTanks, // onResponse: (request, reply) => { // validationHandler.sendPhoneVerificationCode(request, reply);