From 6af9949a285302ca9b93b09199e5171d4f5d90f3 Mon Sep 17 00:00:00 2001 From: varun Date: Thu, 9 Mar 2023 05:07:23 -0500 Subject: [PATCH 01/13] removed percentages growth and decrease system in start and stop,update tank levels, created desired tank level system,and written bore to overhead --- src/controllers/tanksController.js | 116 ++++++++++++++++------------- src/routes/tanksRoute.js | 1 + 2 files changed, 67 insertions(+), 50 deletions(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 1b11b2a9..c9b66618 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -154,20 +154,23 @@ exports.updateTanklevels = async (req, reply) => { let waterLevel = capacity - 100; // initial water level const intervalId = setInterval(async function () { - const newWaterLevel = Math.floor(waterLevel / 1.5); - + const newWaterLevel = Math.floor(waterLevel - 200); + + if (newWaterLevel <= 0) { + clearInterval(intervals[tankId]); + console.log(`Stopped updating tank with ID ${tankId}`); + return; + } + else{ const result = await Tank.findOneAndUpdate( { _id: tankId }, { $set: { waterlevel: newWaterLevel } } ); + } - console.log(result); + // console.log(result); - if (newWaterLevel === 0) { - clearInterval(intervals[tankId]); - console.log(`Stopped updating tank with ID ${tankId}`); - return; - } + waterLevel = newWaterLevel; }, 2000); @@ -197,14 +200,14 @@ exports.updateTanklevels1 = async (req, reply) => { let waterLevel = capacity - 100; // initial water level const intervalId = setInterval(async function () { - const newWaterLevel = Math.floor(waterLevel / 1.5); - + const newWaterLevel = Math.floor(waterLevel - 200); + console.log(tank.tankName,newWaterLevel) const result = await Tank.findOneAndUpdate( { customerId, tankName, }, { $set: { waterlevel: newWaterLevel } } ); - console.log(result); + // console.log(result); if (newWaterLevel === 0) { clearInterval(intervals[tankName]); @@ -250,59 +253,64 @@ exports.getTanklevels = async (req, reply) => { exports.motorAction = async (req, reply) => { try { + //let start_time,stop_time const customerId = req.params.customerId; const action = req.body.action const receiver_tank = req.body.to const receiver_tank_info = await Tank.findOne({ customerId ,tankName:receiver_tank}); const receiver_capacity = receiver_tank_info.capacity + const desired_water_percentage = parseInt((req.body.percentage).replace(/,/g, ''), 10) + if(action === "start"){ + // start_time = new Date().toLocaleString('en-US', {timeZone: 'Asia/Kolkata'}) + supplier_tank = req.body.from supplier_tank_type = req.body.from_type receiver_type = req.body.to_type - // if(supplier_tank_type==="sump" && receiver_type === "overhead"){ - // const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); - // initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)-200; - // await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); - // const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); - - //await changingfrom_tankwaterlevel(customerId,initial_update,supplier_tank_info); - // let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) - // let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) - // intervalId = setInterval(async function () { + if(supplier_tank_type==="sump" && receiver_type === "overhead"){ + const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); + initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)-200; + await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); + const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); + + // await changingfrom_tankwaterlevel(customerId,initial_update,supplier_tank_info); + let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) + let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) + intervalId = setInterval(async function () { // Calculate new water levels - // const newWaterLevel = receiver_waterlevel + Math.floor(supplier_waterlevel * 0.1); - // const newSupplierWaterLevel = supplier_waterlevel - Math.floor(supplier_waterlevel * 0.1); - // const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) + const newWaterLevel = receiver_waterlevel + 200//Math.floor(supplier_waterlevel * 0.1); + const newSupplierWaterLevel = supplier_waterlevel - 200//Math.floor(supplier_waterlevel * 0.1); + const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) // Check if updating should stop - // if ((newSupplierWaterLevel/supplier_capacity)*100 <= 5 || (newWaterLevel/receiver_capacity)*100 >= 95) { - // clearInterval(intervalId) - // console.log("end"); - // } else { + if ((newSupplierWaterLevel/supplier_capacity)*100 <= 5 || (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage) { + clearInterval(intervalId) + console.log("end"); + } else { // Update water levels in database - // supplier_waterlevel = newSupplierWaterLevel; - // receiver_waterlevel = newWaterLevel; - // console.log((newSupplierWaterLevel/supplier_capacity)*100) - // console.log((newWaterLevel/receiver_capacity)*100) - // await Promise.all([ - // Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), - // Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: newSupplierWaterLevel } }) - // ]); - // } - //}, 2000); - - // } + supplier_waterlevel = newSupplierWaterLevel; + receiver_waterlevel = newWaterLevel; + console.log((newSupplierWaterLevel/supplier_capacity)*100) + console.log((newWaterLevel/receiver_capacity)*100) + await Promise.all([ + Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), + Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: newSupplierWaterLevel } }) + ]); + } + }, 2000); + + } if(supplier_tank_type==="bore" && receiver_type === "sump"){ const receiver_capacity = receiver_tank_info.capacity let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) intervalId = setInterval(async function () { // Calculate new water levels - const newWaterLevel = receiver_waterlevel+225; + const newWaterLevel = receiver_waterlevel+200; // Check if updating should stop - if ((newWaterLevel/receiver_capacity)*100 >= 97) { + if ((newWaterLevel/receiver_capacity)*100 >= 97 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage ) { clearInterval(intervalId) console.log("end"); } else { @@ -321,10 +329,10 @@ exports.motorAction = async (req, reply) => { - if(supplier_tank_type==="sump" && receiver_type === "overhead"){ + if(supplier_tank_type==="bore" && receiver_type === "overhead"){ const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); - initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)/2; - await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); + // initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)/2; + // await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) @@ -332,19 +340,21 @@ exports.motorAction = async (req, reply) => { intervalId = setInterval(async function () { const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) // Calculate new water levels - const newWaterLevel = receiver_waterlevel + Math.floor(supplier_waterlevel * 0.1); - const newSupplierWaterLevel = Math.min(supplier_capacity, supplier_waterlevel + Math.floor(supplier_waterlevel * 0.15)); + const newWaterLevel = receiver_waterlevel + 200//Math.floor(supplier_waterlevel * 0.1); + const newSupplierWaterLevel = Math.min(supplier_capacity, supplier_waterlevel + 350);// Math.floor(supplier_waterlevel * 0.15)); + console.log(newWaterLevel) + console.log(newSupplierWaterLevel) // Check if updating should stop - if ((newSupplierWaterLevel/supplier_capacity)*100 <= 5 || (newWaterLevel/receiver_capacity)*100 >= 95) { + if ( (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage ) { clearInterval(intervalId) console.log("end"); } else { // Update water levels in database supplier_waterlevel = newSupplierWaterLevel; receiver_waterlevel = newWaterLevel; - console.log((newSupplierWaterLevel/supplier_capacity)*100) - console.log((newWaterLevel/receiver_capacity)*100) + // console.log((newSupplierWaterLevel/supplier_capacity)*100) + // console.log((newWaterLevel/receiver_capacity)*100) await Promise.all([ Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: newSupplierWaterLevel } }) @@ -354,16 +364,22 @@ exports.motorAction = async (req, reply) => { } + // reply.send({ status_code: 200, "start time": start_time}); + //console.log(start_time) } else if (action === "stop") { + // stop_time = new Date().toLocaleString('en-US', {timeZone: 'Asia/Kolkata'}) + // console.log(stop_time) clearInterval(intervalId); + // reply.send({ status_code: 200, "stop time": stop_time}); } else { throw new Error("Invalid action"); } return { message: 'Water level updates started' }; + } catch (err) { throw new Error(`Failed to start/stop water level updates: ${err.message}`); diff --git a/src/routes/tanksRoute.js b/src/routes/tanksRoute.js index 572f939e..11ca0a57 100644 --- a/src/routes/tanksRoute.js +++ b/src/routes/tanksRoute.js @@ -231,6 +231,7 @@ module.exports = function (fastify, opts, next) { from_type: { type: "string" }, to_type: { type: "string" }, action: { type: "string" }, + percentage: { type: "string" }, }, }, From b6286cf82cd836851302fe14a9a8fd9509e6c126 Mon Sep 17 00:00:00 2001 From: varun Date: Fri, 10 Mar 2023 01:31:45 -0500 Subject: [PATCH 02/13] made changes in create connections and tanks controllers regarding start and stop --- src/controllers/createConnectionController.js | 65 +++++++++++++++++- src/controllers/tanksController.js | 68 +++++++++---------- 2 files changed, 98 insertions(+), 35 deletions(-) diff --git a/src/controllers/createConnectionController.js b/src/controllers/createConnectionController.js index 1f282ba5..27e1d0e3 100644 --- a/src/controllers/createConnectionController.js +++ b/src/controllers/createConnectionController.js @@ -13,14 +13,52 @@ const fastify = require("fastify")({ exports.createConnections = async (req, body) => { try { const customerId = req.params.customerId; - var tankname = req.body.tankname; + const tankname = req.body.tankname; const tankInfo = await Tank.findOne({ customerId: customerId.toString(),tankName:tankname }) const usertobeInserted = req.body; tankInfo.connections.source = tankInfo.tankName; if (usertobeInserted.inputConnections) tankInfo.connections.inputConnections = usertobeInserted.inputConnections; if (usertobeInserted.outputConnections) tankInfo.connections.outputConnections = usertobeInserted.outputConnections; + + const connection_data = req.body.outputConnections + for (const data of connection_data){ + if(data['output_type'] === "overhead"){ + const tankName = data['outputConnections'] + const tank_info = await Tank.findOne({ customerId: customerId.toString(),tankName:tankName }) + const connection_data_check =tank_info.connections.inputConnections + const sump_names=[] + for(const d of connection_data_check){ + if (sump_names.includes(d.inputConnections)) { + console.log(`${d.inputConnections} exists in ${sump_names}`); + } else { + sump_names.push(d.inputConnections) + } + + } + console.log(sump_names) + //tank_info.connections.inputConnections = tankname.toString() + if (sump_names.includes(tankname)) { + console.log(`${tankname} exists in ${sump_names}`); + } else { + const tankConnections = await Tank.findOneAndUpdate( + { customerId: customerId.toString(), tankName: tankName }, + { $addToSet: { 'connections.inputConnections': { $each: [{ inputConnections: tankname, input_type: 'sump' }] } } }, + { new: true } + ); + } + + + //console.log(tankConnections) + + } + + } + + const tank_connections = await tankInfo.save(); + + return tank_connections; } catch (err) { throw boom.boomify(err); @@ -83,4 +121,29 @@ exports.getConnections = async (req, reply) => { + // exports.createConnectionsforOh = async (req, body) => { + // try { + // const customerId = req.params.customerId; + // var tankname = req.body.tankname; + + // const tankInfo = await Tank.findOne({ customerId: customerId.toString(),tankName:tankname ,tankLocation:"sump"}) + // const connection_data = tankinfo.connections.outputConnections + // for (data in connection_data) { + // console.log(data) + + + // } + // // const usertobeInserted = req.body; + // //tankInfo.connections.source = tankInfo.tankName; + // //if (usertobeInserted.inputConnections) tankInfo.connections.inputConnections = usertobeInserted.inputConnections; + // //if (usertobeInserted.outputConnections) tankInfo.connections.outputConnections = usertobeInserted.outputConnections; + // //const tank_connections = await tankInfo.save(); + // // return tank_connections; + // } catch (err) {. + // throw boom.boomify(err); + // } + // }; + + + diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index c9b66618..3dfbcdaa 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -329,41 +329,41 @@ exports.motorAction = async (req, reply) => { - if(supplier_tank_type==="bore" && receiver_type === "overhead"){ - const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); - // initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)/2; - // await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); - const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); + // if(supplier_tank_type==="bore" && receiver_type === "overhead"){ + // const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); + // // initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)/2; + // // await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); + // const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); - let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) - let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) - intervalId = setInterval(async function () { - const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) - // Calculate new water levels - const newWaterLevel = receiver_waterlevel + 200//Math.floor(supplier_waterlevel * 0.1); - const newSupplierWaterLevel = Math.min(supplier_capacity, supplier_waterlevel + 350);// Math.floor(supplier_waterlevel * 0.15)); - console.log(newWaterLevel) - console.log(newSupplierWaterLevel) - - // Check if updating should stop - if ( (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage ) { - clearInterval(intervalId) - console.log("end"); - } else { - // Update water levels in database - supplier_waterlevel = newSupplierWaterLevel; - receiver_waterlevel = newWaterLevel; - // console.log((newSupplierWaterLevel/supplier_capacity)*100) - // console.log((newWaterLevel/receiver_capacity)*100) - await Promise.all([ - Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), - Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: newSupplierWaterLevel } }) - ]); - } - }, 2000); - - - } + // let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) + // let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) + // intervalId = setInterval(async function () { + // const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) + // // Calculate new water levels + // const newWaterLevel = receiver_waterlevel + 200//Math.floor(supplier_waterlevel * 0.1); + // const newSupplierWaterLevel = Math.min(supplier_capacity, supplier_waterlevel + 350);// Math.floor(supplier_waterlevel * 0.15)); + // console.log(newWaterLevel) + // console.log(newSupplierWaterLevel) + + // // Check if updating should stop + // if ( (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage ) { + // clearInterval(intervalId) + // console.log("end"); + // } else { + // // Update water levels in database + // supplier_waterlevel = newSupplierWaterLevel; + // receiver_waterlevel = newWaterLevel; + // // console.log((newSupplierWaterLevel/supplier_capacity)*100) + // // console.log((newWaterLevel/receiver_capacity)*100) + // await Promise.all([ + // Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), + // Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: newSupplierWaterLevel } }) + // ]); + // } + // }, 2000); + + + // } // reply.send({ status_code: 200, "start time": start_time}); //console.log(start_time) From a1be104b6168686ebdd64e7a3ac21e2aac6c16fa Mon Sep 17 00:00:00 2001 From: varun Date: Fri, 10 Mar 2023 02:13:33 -0500 Subject: [PATCH 03/13] created schema for start and stop in tanks.js and made changes start and stop to store data --- src/controllers/tanksController.js | 33 +++++++++++++++++++++++++++++- src/models/tanks.js | 20 +++++++++++++++++- 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 3dfbcdaa..be2a3b3d 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -1,4 +1,6 @@ -const Tank = require("../models/tanks"); +//const Tank = require("../models/tanks"); +const { Tank, MotorData } = require('../models/tanks') + const User = require("../models/User"); const boom = require("boom"); const fastify = require("fastify")({ @@ -326,6 +328,35 @@ exports.motorAction = async (req, reply) => { }, 2000); } + console.log(customerId,req.body.from,req.body.from_type,receiver_tank,req.body.to_type,) + motorData = { + + customerId:customerId, + supplierTank : req.body.from, + supplier_type: req.body.from_type, + receiverTank: receiver_tank, + receiver_type: req.body.to_type, + + + + }; + var motorData = new MotorData(motorData); + + checkFormEncoding = isUserFormUrlEncoded(req); + if (checkFormEncoding.isUserFormUrlEncoded) { + usertobeInserted = checkFormEncoding.motorData; + console.log("thsi true url string"); + motorData.customerId = customerId; + motorData.supplierTank = req.body.from; + motorData.receiverTank = receiver_tank; + motorData.supplier_type = req.body.from_type; + motorData.receiver_type = req.body.to_type; + + + } + const motor_data = await motorData.save(); + reply.send({ status_code: 200, data: motor_data }); + return motor_data diff --git a/src/models/tanks.js b/src/models/tanks.js index 93065055..6e70f6df 100644 --- a/src/models/tanks.js +++ b/src/models/tanks.js @@ -24,4 +24,22 @@ const tanksSchema = new mongoose.Schema({ }); -module.exports = mongoose.model("Tank", tanksSchema); \ No newline at end of file + +const motordataSchema = new mongoose.Schema({ + customerId: { type: String, default: null }, + supplierTank: { type: String, default: null }, + receiverTank: { type: String, default: null }, + date: { type: String, default: null }, + time: { type: String, default: null }, + supplier_type: { type: String, default: null }, + receiver_type: { type: String, default: null }, + + +}); + +const Tank = mongoose.model("Tank", tanksSchema); +const MotorData = mongoose.model("MotorData", motordataSchema); + +module.exports = { + Tank, MotorData +} From 3b6f227fbf4f272d4923d6139fa869425b4a7442 Mon Sep 17 00:00:00 2001 From: varun Date: Fri, 10 Mar 2023 04:31:00 -0500 Subject: [PATCH 04/13] madce changes in create connections --- src/controllers/createConnectionController.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/controllers/createConnectionController.js b/src/controllers/createConnectionController.js index 27e1d0e3..28540979 100644 --- a/src/controllers/createConnectionController.js +++ b/src/controllers/createConnectionController.js @@ -1,5 +1,7 @@ //const Connections = require("../models/CreateConnections"); -const Tank = require("../models/tanks"); +//const Tank = require("../models/tanks"); +const { Tank, MotorData } = require('../models/tanks') + const User = require("../models/User"); const boom = require("boom"); From 4d22f4605bbdfc6534ba84536253c6887998f9d8 Mon Sep 17 00:00:00 2001 From: varun Date: Fri, 10 Mar 2023 05:15:33 -0500 Subject: [PATCH 05/13] motor on and off status functionality --- src/controllers/tanksController.js | 11 +++++++++++ src/models/tanks.js | 1 + 2 files changed, 12 insertions(+) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index be2a3b3d..95cfcee2 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -270,9 +270,12 @@ exports.motorAction = async (req, reply) => { supplier_tank = req.body.from supplier_tank_type = req.body.from_type receiver_type = req.body.to_type + console.log(supplier_tank) + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 1 } }); if(supplier_tank_type==="sump" && receiver_type === "overhead"){ const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); + console.log(supplier_tank_info1) initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)-200; await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); @@ -289,6 +292,8 @@ exports.motorAction = async (req, reply) => { // Check if updating should stop if ((newSupplierWaterLevel/supplier_capacity)*100 <= 5 || (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage) { clearInterval(intervalId) + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 0 } }); + console.log("end"); } else { // Update water levels in database @@ -307,6 +312,8 @@ exports.motorAction = async (req, reply) => { if(supplier_tank_type==="bore" && receiver_type === "sump"){ const receiver_capacity = receiver_tank_info.capacity + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 1 } }); + let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) intervalId = setInterval(async function () { // Calculate new water levels @@ -314,6 +321,8 @@ exports.motorAction = async (req, reply) => { // Check if updating should stop if ((newWaterLevel/receiver_capacity)*100 >= 97 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage ) { clearInterval(intervalId) + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 0 } }); + console.log("end"); } else { // Update water levels in database @@ -404,6 +413,8 @@ exports.motorAction = async (req, reply) => { // stop_time = new Date().toLocaleString('en-US', {timeZone: 'Asia/Kolkata'}) // console.log(stop_time) clearInterval(intervalId); + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 0 } }); + // reply.send({ status_code: 200, "stop time": stop_time}); } else { throw new Error("Invalid action"); diff --git a/src/models/tanks.js b/src/models/tanks.js index 6e70f6df..b804b6df 100644 --- a/src/models/tanks.js +++ b/src/models/tanks.js @@ -16,6 +16,7 @@ const tanksSchema = new mongoose.Schema({ typeOfWater: { type: String, default: null }, waterlevel: { type: String, default: "0" }, tankLocation: { type: String, default: null }, + motor_status: { type: String, default: 0 }, connections: { source: { type: String}, inputConnections: [{ inputConnections: String,input_type:String }], From 9db0671b49aaf3ea8eef599ce77f6befb84ab8f0 Mon Sep 17 00:00:00 2001 From: varun Date: Fri, 10 Mar 2023 05:40:06 -0500 Subject: [PATCH 06/13] made changes in customer id and changed tank location to lower case while creating them --- src/controllers/tanksController.js | 4 ++-- src/controllers/userController.js | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 95cfcee2..bd1a8858 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -35,7 +35,7 @@ console.log(req.params); capacity: req.body.capacity, typeOfWater: req.body.typeOfWater, - tankLocation:req.body.tankLocation, + tankLocation:(req.body.tankLocation).toLowerCase(), }; var tank_name = req.body.tankName @@ -58,7 +58,7 @@ console.log(req.params); tank.capacity = usertobeInserted.capacity; tank.typeOfWater = usertobeInserted.typeOfWater; - tank.tankLocation = usertobeInserted.tankLocation; + tank.tankLocation = (usertobeInserted.tankLocation).toLowerCase(); } } const insertedTank = await tank.save(); diff --git a/src/controllers/userController.js b/src/controllers/userController.js index a147bc89..0e52cae9 100644 --- a/src/controllers/userController.js +++ b/src/controllers/userController.js @@ -168,7 +168,7 @@ exports.addUser = async (req, reply) => { // await resetCounter();//to set customer id back to 0 var c_id = await generateCustomerId() var building= ((req.body.buildingName).slice(0, 3)).toUpperCase(); - var customer_id = `AWS${building}${c_id}` + var customer_id = `AWSU${building}${c_id}` // console.log("This is the reply in the handler after the validations", reply); userData = { customerId: customer_id, From 7f0673053084700b4d012ed17c7971ddd7e280d4 Mon Sep 17 00:00:00 2001 From: varun Date: Fri, 10 Mar 2023 05:53:04 -0500 Subject: [PATCH 07/13] changes in motor status --- src/controllers/tanksController.js | 1 - src/models/tanks.js | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index bd1a8858..75129b46 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -240,7 +240,6 @@ exports.getTanklevels = async (req, reply) => { reply.send({ status_code: 200, data: updated_data}); - return { message: 'success' }; } diff --git a/src/models/tanks.js b/src/models/tanks.js index b804b6df..0214b63d 100644 --- a/src/models/tanks.js +++ b/src/models/tanks.js @@ -23,6 +23,7 @@ const tanksSchema = new mongoose.Schema({ outputConnections: [{ outputConnections: String,output_type:String }] } + }); From aeba3d8af587abe075a56ccb565f6ec8c28de9eb Mon Sep 17 00:00:00 2001 From: varun Date: Mon, 13 Mar 2023 00:06:20 -0400 Subject: [PATCH 08/13] changes in tanks and start and stop --- src/controllers/tanksController.js | 106 ++++++++++++++++------------- src/models/tanks.js | 6 +- src/routes/tanksRoute.js | 3 +- 3 files changed, 62 insertions(+), 53 deletions(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 75129b46..caac9c4c 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -272,34 +272,71 @@ exports.motorAction = async (req, reply) => { console.log(supplier_tank) await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 1 } }); - if(supplier_tank_type==="sump" && receiver_type === "overhead"){ - const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); - console.log(supplier_tank_info1) - initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)-200; + // if(supplier_tank_type==="sump" && receiver_type === "overhead"){ + // const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); + // console.log(supplier_tank_info1) + // initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)-200; + // await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); + // const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); + + // // await changingfrom_tankwaterlevel(customerId,initial_update,supplier_tank_info); + // let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) + // let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) + // intervalId = setInterval(async function () { + // // Calculate new water levels + // const newWaterLevel = receiver_waterlevel + 200//Math.floor(supplier_waterlevel * 0.1); + // const newSupplierWaterLevel = supplier_waterlevel - 200//Math.floor(supplier_waterlevel * 0.1); + // const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) + + // // Check if updating should stop + // if ((newSupplierWaterLevel/supplier_capacity)*100 <= 5 || (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage) { + // clearInterval(intervalId) + // await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 0 } }); + + // console.log("end"); + // } else { + // // Update water levels in database + // supplier_waterlevel = newSupplierWaterLevel; + // receiver_waterlevel = newWaterLevel; + // console.log((newSupplierWaterLevel/supplier_capacity)*100) + // console.log((newWaterLevel/receiver_capacity)*100) + // await Promise.all([ + // Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), + // Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: newSupplierWaterLevel } }) + // ]); + // } + // }, 2000); + + // } + + + + if(supplier_tank_type==="sump" && receiver_type === "overhead"){ + const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); + initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)/2; await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); - - // await changingfrom_tankwaterlevel(customerId,initial_update,supplier_tank_info); + let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) intervalId = setInterval(async function () { + const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) // Calculate new water levels const newWaterLevel = receiver_waterlevel + 200//Math.floor(supplier_waterlevel * 0.1); - const newSupplierWaterLevel = supplier_waterlevel - 200//Math.floor(supplier_waterlevel * 0.1); - const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) - + const newSupplierWaterLevel = Math.min(supplier_capacity, supplier_waterlevel + 350);// Math.floor(supplier_waterlevel * 0.15)); + console.log(newWaterLevel) + console.log(newSupplierWaterLevel) + // Check if updating should stop - if ((newSupplierWaterLevel/supplier_capacity)*100 <= 5 || (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage) { + if ( (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage ) { clearInterval(intervalId) - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 0 } }); - console.log("end"); } else { // Update water levels in database supplier_waterlevel = newSupplierWaterLevel; receiver_waterlevel = newWaterLevel; - console.log((newSupplierWaterLevel/supplier_capacity)*100) - console.log((newWaterLevel/receiver_capacity)*100) + // console.log((newSupplierWaterLevel/supplier_capacity)*100) + // console.log((newWaterLevel/receiver_capacity)*100) await Promise.all([ Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: newSupplierWaterLevel } }) @@ -307,6 +344,7 @@ exports.motorAction = async (req, reply) => { } }, 2000); + } if(supplier_tank_type==="bore" && receiver_type === "sump"){ @@ -344,6 +382,8 @@ exports.motorAction = async (req, reply) => { supplier_type: req.body.from_type, receiverTank: receiver_tank, receiver_type: req.body.to_type, + startTime: req.body.startTime, + stopTime: req.body.stopTime, @@ -359,6 +399,8 @@ exports.motorAction = async (req, reply) => { motorData.receiverTank = receiver_tank; motorData.supplier_type = req.body.from_type; motorData.receiver_type = req.body.to_type; + motorData.startTime = usertobeInserted.startTime; + motorData.stopTime = usertobeInserted.stopTime; } @@ -368,41 +410,7 @@ exports.motorAction = async (req, reply) => { - // if(supplier_tank_type==="bore" && receiver_type === "overhead"){ - // const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); - // // initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)/2; - // // await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); - // const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); - - // let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) - // let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) - // intervalId = setInterval(async function () { - // const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) - // // Calculate new water levels - // const newWaterLevel = receiver_waterlevel + 200//Math.floor(supplier_waterlevel * 0.1); - // const newSupplierWaterLevel = Math.min(supplier_capacity, supplier_waterlevel + 350);// Math.floor(supplier_waterlevel * 0.15)); - // console.log(newWaterLevel) - // console.log(newSupplierWaterLevel) - - // // Check if updating should stop - // if ( (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage ) { - // clearInterval(intervalId) - // console.log("end"); - // } else { - // // Update water levels in database - // supplier_waterlevel = newSupplierWaterLevel; - // receiver_waterlevel = newWaterLevel; - // // console.log((newSupplierWaterLevel/supplier_capacity)*100) - // // console.log((newWaterLevel/receiver_capacity)*100) - // await Promise.all([ - // Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), - // Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: newSupplierWaterLevel } }) - // ]); - // } - // }, 2000); - - - // } + // reply.send({ status_code: 200, "start time": start_time}); //console.log(start_time) diff --git a/src/models/tanks.js b/src/models/tanks.js index 0214b63d..b1edeb69 100644 --- a/src/models/tanks.js +++ b/src/models/tanks.js @@ -23,7 +23,7 @@ const tanksSchema = new mongoose.Schema({ outputConnections: [{ outputConnections: String,output_type:String }] } - + }); @@ -31,8 +31,8 @@ const motordataSchema = new mongoose.Schema({ customerId: { type: String, default: null }, supplierTank: { type: String, default: null }, receiverTank: { type: String, default: null }, - date: { type: String, default: null }, - time: { type: String, default: null }, + startTime: { type: String, default: null }, + stopTime: { type: String, default: null }, supplier_type: { type: String, default: null }, receiver_type: { type: String, default: null }, diff --git a/src/routes/tanksRoute.js b/src/routes/tanksRoute.js index 11ca0a57..9d753174 100644 --- a/src/routes/tanksRoute.js +++ b/src/routes/tanksRoute.js @@ -232,7 +232,8 @@ module.exports = function (fastify, opts, next) { to_type: { type: "string" }, action: { type: "string" }, percentage: { type: "string" }, - + startTime:{ type: "string" }, + stopTime:{ type: "string" }, }, }, security: [ From 79b11363e6310f6c8b5876f1564e0fbf1019eabd Mon Sep 17 00:00:00 2001 From: varun Date: Mon, 13 Mar 2023 07:33:55 -0400 Subject: [PATCH 09/13] changes in tanks and start and stop regarding bore to sump --- src/controllers/tanksController.js | 34 +++++++++++++++++++++--------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index caac9c4c..13bedafe 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -270,7 +270,7 @@ exports.motorAction = async (req, reply) => { supplier_tank_type = req.body.from_type receiver_type = req.body.to_type console.log(supplier_tank) - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 1 } }); + // if(supplier_tank_type==="sump" && receiver_type === "overhead"){ // const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); @@ -312,24 +312,34 @@ exports.motorAction = async (req, reply) => { if(supplier_tank_type==="sump" && receiver_type === "overhead"){ + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: "true" } }); + + // console.log(rcvr_info.motor_status) const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)/2; + await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) intervalId = setInterval(async function () { + const rcvr_info = await Tank.findOne({ customerId ,tankName:receiver_tank}); const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) // Calculate new water levels const newWaterLevel = receiver_waterlevel + 200//Math.floor(supplier_waterlevel * 0.1); const newSupplierWaterLevel = Math.min(supplier_capacity, supplier_waterlevel + 350);// Math.floor(supplier_waterlevel * 0.15)); console.log(newWaterLevel) console.log(newSupplierWaterLevel) + console.log(rcvr_info.motor_status) + console.log(rcvr_info.tankName) // Check if updating should stop - if ( (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage ) { + if ( (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === "false") { + clearInterval(intervalId) + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: "false" } }); + console.log("end"); } else { // Update water levels in database @@ -348,25 +358,29 @@ exports.motorAction = async (req, reply) => { } if(supplier_tank_type==="bore" && receiver_type === "sump"){ - const receiver_capacity = receiver_tank_info.capacity - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 1 } }); + const receiver_capacity = parseInt(receiver_tank_info.capacity.replace(/,/g, ''), 10) + console.log(receiver_capacity,"0") + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: "true" } }); let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) + console.log(receiver_waterlevel,"1") intervalId = setInterval(async function () { // Calculate new water levels + const rcvr_info = await Tank.findOne({ customerId ,tankName:receiver_tank}); const newWaterLevel = receiver_waterlevel+200; + console.log(newWaterLevel,"2") // Check if updating should stop - if ((newWaterLevel/receiver_capacity)*100 >= 97 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage ) { + if ((newWaterLevel/receiver_capacity)*100 >= 97 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === "false" ) { + + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: "false" } }); clearInterval(intervalId) - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 0 } }); - console.log("end"); } else { // Update water levels in database receiver_waterlevel = newWaterLevel; - console.log((newWaterLevel/receiver_capacity)*100) + console.log((newWaterLevel/receiver_capacity)*100,"4") await Promise.all([ Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), ]); @@ -419,8 +433,8 @@ exports.motorAction = async (req, reply) => { else if (action === "stop") { // stop_time = new Date().toLocaleString('en-US', {timeZone: 'Asia/Kolkata'}) // console.log(stop_time) - clearInterval(intervalId); - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 0 } }); + // clearInterval(intervalId); + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: "false" } }); // reply.send({ status_code: 200, "stop time": stop_time}); } else { From 68f92cee982860f604bc5e0678417e2a88670252 Mon Sep 17 00:00:00 2001 From: varun Date: Tue, 14 Mar 2023 01:13:13 -0400 Subject: [PATCH 10/13] changes in tanks and start and stop regarding bore to sump --- src/controllers/tanksController.js | 147 +++++++++++++++-------------- 1 file changed, 75 insertions(+), 72 deletions(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 13bedafe..cf053bee 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -258,7 +258,7 @@ exports.motorAction = async (req, reply) => { const customerId = req.params.customerId; const action = req.body.action const receiver_tank = req.body.to - const receiver_tank_info = await Tank.findOne({ customerId ,tankName:receiver_tank}); + const receiver_tank_info = await Tank.findOne({ customerId ,tankName:receiver_tank,tankLocation:req.body.to_type}); const receiver_capacity = receiver_tank_info.capacity const desired_water_percentage = parseInt((req.body.percentage).replace(/,/g, ''), 10) @@ -272,107 +272,110 @@ exports.motorAction = async (req, reply) => { console.log(supplier_tank) - // if(supplier_tank_type==="sump" && receiver_type === "overhead"){ - // const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); - // console.log(supplier_tank_info1) - // initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)-200; - // await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); - // const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); - - // // await changingfrom_tankwaterlevel(customerId,initial_update,supplier_tank_info); - // let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) - // let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) - // intervalId = setInterval(async function () { - // // Calculate new water levels - // const newWaterLevel = receiver_waterlevel + 200//Math.floor(supplier_waterlevel * 0.1); - // const newSupplierWaterLevel = supplier_waterlevel - 200//Math.floor(supplier_waterlevel * 0.1); - // const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) - - // // Check if updating should stop - // if ((newSupplierWaterLevel/supplier_capacity)*100 <= 5 || (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage) { - // clearInterval(intervalId) - // await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 0 } }); - - // console.log("end"); - // } else { - // // Update water levels in database - // supplier_waterlevel = newSupplierWaterLevel; - // receiver_waterlevel = newWaterLevel; - // console.log((newSupplierWaterLevel/supplier_capacity)*100) - // console.log((newWaterLevel/receiver_capacity)*100) - // await Promise.all([ - // Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), - // Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: newSupplierWaterLevel } }) - // ]); - // } - // }, 2000); - - // } - - - - if(supplier_tank_type==="sump" && receiver_type === "overhead"){ - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: "true" } }); - - // console.log(rcvr_info.motor_status) - const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); - initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)/2; + if(supplier_tank_type==="sump" && receiver_type === "overhead"){ + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: 1 } }); - await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); - const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); - + const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank,tankLocation:supplier_tank_type}); + console.log(supplier_tank_info1) + initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)-200; + await Tank.findOneAndUpdate({customerId, tankName: supplier_tank,tankLocation:supplier_tank_type}, { $set: { waterlevel: initial_update } }); + const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank,tankLocation:supplier_tank_type}); + + // await changingfrom_tankwaterlevel(customerId,initial_update,supplier_tank_info); let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) intervalId = setInterval(async function () { - const rcvr_info = await Tank.findOne({ customerId ,tankName:receiver_tank}); - const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) // Calculate new water levels + const rcvr_info = await Tank.findOne({ customerId ,tankName:receiver_tank,tankLocation:receiver_type}); const newWaterLevel = receiver_waterlevel + 200//Math.floor(supplier_waterlevel * 0.1); - const newSupplierWaterLevel = Math.min(supplier_capacity, supplier_waterlevel + 350);// Math.floor(supplier_waterlevel * 0.15)); - console.log(newWaterLevel) - console.log(newSupplierWaterLevel) - console.log(rcvr_info.motor_status) - console.log(rcvr_info.tankName) - + const newSupplierWaterLevel = supplier_waterlevel - 200//Math.floor(supplier_waterlevel * 0.1); + const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) + // Check if updating should stop - if ( (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === "false") { - + if ((newSupplierWaterLevel/supplier_capacity)*100 <= 5 || (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === 0) { clearInterval(intervalId) - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: "false" } }); - + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: 0 } }); + console.log("end"); } else { // Update water levels in database supplier_waterlevel = newSupplierWaterLevel; receiver_waterlevel = newWaterLevel; - // console.log((newSupplierWaterLevel/supplier_capacity)*100) - // console.log((newWaterLevel/receiver_capacity)*100) + console.log((newSupplierWaterLevel/supplier_capacity)*100) + console.log((newWaterLevel/receiver_capacity)*100) await Promise.all([ - Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), - Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: newSupplierWaterLevel } }) + Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { waterlevel: newWaterLevel } }), + Tank.findOneAndUpdate({customerId, tankName: supplier_tank,tankLocation:supplier_tank_type}, { $set: { waterlevel: newSupplierWaterLevel } }) ]); } }, 2000); - } + + + // if(supplier_tank_type==="sump" && receiver_type === "overhead"){ + // await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 1 } }); + + // // console.log(rcvr_info.motor_status) + // const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank}); + // initial_update = parseInt(supplier_tank_info1.capacity.replace(/,/g, ''), 10)/2; + + // await Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: initial_update } }); + // const supplier_tank_info = await Tank.findOne({ customerId ,tankName:supplier_tank}); + + // let supplier_waterlevel = parseInt(supplier_tank_info.waterlevel.replace(/,/g, ''), 10) + // let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) + // intervalId = setInterval(async function () { + // const rcvr_info = await Tank.findOne({ customerId ,tankName:receiver_tank}); + // const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) + // // Calculate new water levels + // const newWaterLevel = receiver_waterlevel + 200//Math.floor(supplier_waterlevel * 0.1); + // const newSupplierWaterLevel = Math.min(supplier_capacity, supplier_waterlevel + 350);// Math.floor(supplier_waterlevel * 0.15)); + // // console.log(newWaterLevel) + // // console.log(newSupplierWaterLevel) + // // console.log(rcvr_info.motor_status) + // // console.log(rcvr_info.tankName) + + // // Check if updating should stop + // if ( (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === 0) { + + // clearInterval(intervalId) + // await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: 0 } }); + + // console.log("end"); + // } else { + // // Update water levels in database + // supplier_waterlevel = newSupplierWaterLevel; + // receiver_waterlevel = newWaterLevel; + // // console.log((newSupplierWaterLevel/supplier_capacity)*100) + // // console.log((newWaterLevel/receiver_capacity)*100) + // await Promise.all([ + // Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), + // Tank.findOneAndUpdate({customerId, tankName: supplier_tank}, { $set: { waterlevel: newSupplierWaterLevel } }) + // ]); + // } + // }, 2000); + + + // } + if(supplier_tank_type==="bore" && receiver_type === "sump"){ const receiver_capacity = parseInt(receiver_tank_info.capacity.replace(/,/g, ''), 10) console.log(receiver_capacity,"0") - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: "true" } }); + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: 1 } }); let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) console.log(receiver_waterlevel,"1") intervalId = setInterval(async function () { // Calculate new water levels - const rcvr_info = await Tank.findOne({ customerId ,tankName:receiver_tank}); + const rcvr_info = await Tank.findOne({ customerId ,tankName:receiver_tank,tankLocation:receiver_type}); const newWaterLevel = receiver_waterlevel+200; console.log(newWaterLevel,"2") // Check if updating should stop - if ((newWaterLevel/receiver_capacity)*100 >= 97 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === "false" ) { + if ((newWaterLevel/receiver_capacity)*100 >= 97 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === 0 ) { - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: "false" } }); + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: 0 } }); clearInterval(intervalId) console.log("end"); } else { @@ -382,7 +385,7 @@ exports.motorAction = async (req, reply) => { console.log((newWaterLevel/receiver_capacity)*100,"4") await Promise.all([ - Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { waterlevel: newWaterLevel } }), + Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { waterlevel: newWaterLevel } }), ]); } }, 2000); @@ -434,7 +437,7 @@ exports.motorAction = async (req, reply) => { // stop_time = new Date().toLocaleString('en-US', {timeZone: 'Asia/Kolkata'}) // console.log(stop_time) // clearInterval(intervalId); - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank}, { $set: { motor_status: "false" } }); + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:req.body.to_type}, { $set: { motor_status: 0 } }); // reply.send({ status_code: 200, "stop time": stop_time}); } else { From d88bb6578a4e9521440c5f02877d266d86442873 Mon Sep 17 00:00:00 2001 From: varun Date: Tue, 14 Mar 2023 01:35:29 -0400 Subject: [PATCH 11/13] changes in tanks and start and stop regarding bore to sump --- src/controllers/tanksController.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index cf053bee..79d1ac66 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -292,7 +292,7 @@ exports.motorAction = async (req, reply) => { const supplier_capacity = parseInt(supplier_tank_info.capacity.replace(/,/g, ''), 10) // Check if updating should stop - if ((newSupplierWaterLevel/supplier_capacity)*100 <= 5 || (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === 0) { + if ((newSupplierWaterLevel/supplier_capacity)*100 <= 5 || (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === "0") { clearInterval(intervalId) await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: 0 } }); @@ -370,10 +370,11 @@ exports.motorAction = async (req, reply) => { intervalId = setInterval(async function () { // Calculate new water levels const rcvr_info = await Tank.findOne({ customerId ,tankName:receiver_tank,tankLocation:receiver_type}); + console.log(rcvr_info.motor_status) const newWaterLevel = receiver_waterlevel+200; console.log(newWaterLevel,"2") // Check if updating should stop - if ((newWaterLevel/receiver_capacity)*100 >= 97 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === 0 ) { + if ((newWaterLevel/receiver_capacity)*100 >= 97 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === "0" ) { await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: 0 } }); clearInterval(intervalId) From ef291f20e77c71185934fd1c9517876e8c1e25de Mon Sep 17 00:00:00 2001 From: varun Date: Tue, 14 Mar 2023 01:43:46 -0400 Subject: [PATCH 12/13] changes in tanks and start and stop regarding bore to sump --- src/controllers/tanksController.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 79d1ac66..1aae06e6 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -273,7 +273,7 @@ exports.motorAction = async (req, reply) => { if(supplier_tank_type==="sump" && receiver_type === "overhead"){ - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: 1 } }); + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: "1" } }); const supplier_tank_info1 = await Tank.findOne({ customerId ,tankName:supplier_tank,tankLocation:supplier_tank_type}); console.log(supplier_tank_info1) @@ -294,7 +294,7 @@ exports.motorAction = async (req, reply) => { // Check if updating should stop if ((newSupplierWaterLevel/supplier_capacity)*100 <= 5 || (newWaterLevel/receiver_capacity)*100 >= 95 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === "0") { clearInterval(intervalId) - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: 0 } }); + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: "0" } }); console.log("end"); } else { @@ -363,7 +363,7 @@ exports.motorAction = async (req, reply) => { if(supplier_tank_type==="bore" && receiver_type === "sump"){ const receiver_capacity = parseInt(receiver_tank_info.capacity.replace(/,/g, ''), 10) console.log(receiver_capacity,"0") - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: 1 } }); + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: "1" } }); let receiver_waterlevel = parseInt(receiver_tank_info.waterlevel.replace(/,/g, ''), 10) console.log(receiver_waterlevel,"1") @@ -376,7 +376,7 @@ exports.motorAction = async (req, reply) => { // Check if updating should stop if ((newWaterLevel/receiver_capacity)*100 >= 97 || (newWaterLevel/receiver_capacity)*100 >= desired_water_percentage || rcvr_info.motor_status === "0" ) { - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: 0 } }); + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:receiver_type}, { $set: { motor_status: "0" } }); clearInterval(intervalId) console.log("end"); } else { @@ -438,7 +438,7 @@ exports.motorAction = async (req, reply) => { // stop_time = new Date().toLocaleString('en-US', {timeZone: 'Asia/Kolkata'}) // console.log(stop_time) // clearInterval(intervalId); - await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:req.body.to_type}, { $set: { motor_status: 0 } }); + await Tank.findOneAndUpdate({customerId, tankName: receiver_tank,tankLocation:req.body.to_type}, { $set: { motor_status: "0" } }); // reply.send({ status_code: 200, "stop time": stop_time}); } else { From caf6686afb1a54ff0e3a4b6704eb6290ad515fc5 Mon Sep 17 00:00:00 2001 From: varun Date: Tue, 14 Mar 2023 02:05:27 -0400 Subject: [PATCH 13/13] changes in tanks and start and stop regarding bore to sump --- src/routes/tanksRoute.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/tanksRoute.js b/src/routes/tanksRoute.js index 9d753174..e96e30ec 100644 --- a/src/routes/tanksRoute.js +++ b/src/routes/tanksRoute.js @@ -231,7 +231,7 @@ module.exports = function (fastify, opts, next) { from_type: { type: "string" }, to_type: { type: "string" }, action: { type: "string" }, - percentage: { type: "string" }, + percentage: { type: "string",default: "100" }, startTime:{ type: "string" }, stopTime:{ type: "string" }, },