diff --git a/src/controllers/tanksController.js b/src/controllers/tanksController.js index 6b633ec7..b9cdc799 100644 --- a/src/controllers/tanksController.js +++ b/src/controllers/tanksController.js @@ -318,9 +318,38 @@ exports.getTanklevels = async (req, reply) => { updated_data.forEach((tank) => { const waterlevel = parseInt(tank.waterlevel.replace(/,/g, ''), 10); const capacity = parseInt(tank.capacity.replace(/,/g, ''), 10); + const waterlevelPercentage = ((waterlevel / capacity) * 100).toFixed(2); + tank.waterlevelPercentage = waterlevelPercentage; // Add water level percentage to each tank object console.log(`Processing tank: ${tank.tankName}`); - console.log(`Type of Water: ${tank.typeOfWater}, Location: ${tank.tankLocation}, Waterlevel: ${waterlevel}, Capacity: ${capacity}`); + console.log(`Type of Water: ${tank.typeOfWater}, Location: ${tank.tankLocation}, Waterlevel: ${waterlevel}, Capacity: ${capacity}, Waterlevel Percentage: ${waterlevelPercentage}%`); + + // Calculate and add water level percentages for inputConnections + if (tank.connections.inputConnections) { + tank.connections.inputConnections.forEach(inputConnection => { + if (inputConnection.water_level && inputConnection.capacity) { + const inputWaterLevel = parseInt(inputConnection.water_level.replace(/,/g, ''), 10); + const inputCapacity = parseInt(inputConnection.capacity.replace(/,/g, ''), 10); + inputConnection.waterlevelPercentage = ((inputWaterLevel / inputCapacity) * 100).toFixed(2); + } else { + inputConnection.waterlevelPercentage = null; + } + }); + } + + // Calculate and add water level percentages for outputConnections + if (tank.connections.outputConnections) { + tank.connections.outputConnections.forEach(outputConnection => { + if (outputConnection.water_level && outputConnection.capacity) { + const outputWaterLevel = parseInt(outputConnection.water_level.replace(/,/g, ''), 10); + const outputCapacity = parseInt(outputConnection.capacity.replace(/,/g, ''), 10); + outputConnection.waterlevelPercentage = ((outputWaterLevel / outputCapacity) * 100).toFixed(2); + } else { + outputConnection.waterlevelPercentage = null; + } + }); + } + // Summing up the total water levels and capacities if (tank.tankLocation === 'sump' && tank.typeOfWater === 'Drinking Water') { sumSumpDrinkingWater += waterlevel; sumSumpDrinkingWaterCapacity += capacity; diff --git a/src/models/tanks.js b/src/models/tanks.js index d5dc5b16..c0bba543 100644 --- a/src/models/tanks.js +++ b/src/models/tanks.js @@ -32,67 +32,68 @@ const RoleSchema = new Schema({ name: String }); const tanksSchema = new mongoose.Schema({ - hardwareId: { type: String }, - InstallerId: { type: String, default: null }, - tankhardwareId: { type: String }, - hardwareId_type: { type: String }, - hardwareId_company: { type: String }, - customerId: { type: String, default: null }, - tankName: { type: String, default: null }, - blockName: { type: String, default: null }, - capacity: { type: String, default: "0" }, - height: { type: String, default: "0" }, - tankLocation: { type: String, default: null }, - waterCapacityPerCm:{ type: String, default: "0" }, - typeOfWater: { type: String, default: null }, - waterlevel: { type: String, default: "0" }, - waterlevel_at_midnight:{ type: String,default:"0" }, - total_water_added_from_midnight:{ type: String,default:"0" }, - auto_min_percentage :{ type: String, default: "20" }, - reserved_percentage:{type: String,default:"20"}, - auto_max_percentage :{ type: String, default: "80" }, - - connections: { - source: { type: String }, - inputConnections: [ - { - inputConnections: { type: String }, - input_type: { type: String }, - inputismotor: { type: Boolean, }, - motor_id:{ type: String ,default: null}, - motor_status: { type: String, default: "0" }, - auto_mode:{type:String,default:"inactive"}, - motor_stop_status: { type: String, default: "1" }, - motor_on_type :{ type: String, default: "manual" }, - capacity:{ type: String ,default: null}, - water_level:{ type: String ,default: null}, - manual_threshold_percentage:{type: String, default: "90"}, - manual_threshold_time:{type: String, default: null}, - threshold_type:{type: String, default: "percentage"}, - startTime:{type: String,default:null}, - start_instance_id:{type:String,default:null}, - stopTime:{type: String,default:null} - } - ], - outputConnections: [ - { - outputConnections: { type: String }, - output_type: { type: String }, - outputismotor: { type: Boolean, }, - motor_id:{ type: String ,default: null}, - motor_status: { type: String, default: "0" }, - motor_stop_status: { type: String, default: "1" }, - capacity:{ type: String ,default: null}, - water_level:{ type: String ,default: null}, - manual_threshold_percentage:{type: String, default: "90"}, - manual_threshold_time:{type: String, default: null}, - threshold_type:{type: String, default: "percentage"}, - - } - ] - } - }); - + hardwareId: { type: String }, + InstallerId: { type: String, default: null }, + tankhardwareId: { type: String }, + hardwareId_type: { type: String }, + hardwareId_company: { type: String }, + customerId: { type: String, default: null }, + tankName: { type: String, default: null }, + blockName: { type: String, default: null }, + capacity: { type: String, default: "0" }, + height: { type: String, default: "0" }, + tankLocation: { type: String, default: null }, + waterCapacityPerCm: { type: String, default: "0" }, + typeOfWater: { type: String, default: null }, + waterlevel: { type: String, default: "0" }, + waterlevel_at_midnight: { type: String, default: "0" }, + total_water_added_from_midnight: { type: String, default: "0" }, + auto_min_percentage: { type: String, default: "20" }, + reserved_percentage: { type: String, default: "20" }, + auto_max_percentage: { type: String, default: "80" }, + + connections: { + source: { type: String }, + inputConnections: [ + { + inputConnections: { type: String }, + input_type: { type: String }, + inputismotor: { type: Boolean }, + motor_id: { type: String, default: null }, + motor_status: { type: String, default: "0" }, + auto_mode: { type: String, default: "inactive" }, + motor_stop_status: { type: String, default: "1" }, + motor_on_type: { type: String, default: "manual" }, + capacity: { type: String, default: null }, + water_level: { type: String, default: null }, + manual_threshold_percentage: { type: String, default: "90" }, + manual_threshold_time: { type: String, default: null }, + threshold_type: { type: String, default: "percentage" }, + startTime: { type: String, default: null }, + start_instance_id: { type: String, default: null }, + stopTime: { type: String, default: null }, + waterlevelPercentage: { type: String, default: null } // Added field + } + ], + outputConnections: [ + { + outputConnections: { type: String }, + output_type: { type: String }, + outputismotor: { type: Boolean }, + motor_id: { type: String, default: null }, + motor_status: { type: String, default: "0" }, + motor_stop_status: { type: String, default: "1" }, + capacity: { type: String, default: null }, + water_level: { type: String, default: null }, + manual_threshold_percentage: { type: String, default: "90" }, + manual_threshold_time: { type: String, default: null }, + threshold_type: { type: String, default: "percentage" }, + waterlevelPercentage: { type: String, default: null } // Added field + } + ] + } +}); +