@ -2203,20 +2203,20 @@ console.log(fcmToken)
// Schedule a task to send a notification when the threshold time is reached
// Schedule a task to send a notification when the threshold time is reached
motorIntervals [ motorId ] = setTimeout ( async ( ) => {
// motorIntervals[motorId] = setTimeout(async () => {
try {
// try {
// Perform threshold time logic (e.g., notification, motor stop)
// // Perform threshold time logic (e.g., notification, motor stop)
console . log ( ` Threshold time of ${ manual _threshold _time } minutes reached for motor ${ motorId } ` ) ;
// console.log(`Threshold time of ${manual_threshold_time} minutes reached for motor ${motorId}`);
await Tank . updateOne (
// await Tank.updateOne(
{ customerId , "connections.inputConnections.motor_id" : motorId } ,
// { customerId, "connections.inputConnections.motor_id": motorId },
{ $set : { "connections.inputConnections.$.motor_stop_status" : "1" } }
// { $set: { "connections.inputConnections.$.motor_stop_status": "1" } }
) ;
// );
clearTimeout ( motorIntervals [ motorId ] ) ; // Clear timeout
// clearTimeout(motorIntervals[motorId]); // Clear timeout
delete motorIntervals [ motorId ] ;
// delete motorIntervals[motorId];
} catch ( error ) {
// } catch (error) {
console . error ( "Error in threshold time handling:" , error ) ;
// console.error("Error in threshold time handling:", error);
}
// }
} , thresholdTimeMs ) ;
// }, thresholdTimeMs);
const stopCriteria =
const stopCriteria =
motorOnType === "time"
motorOnType === "time"
? ` ${ req . body . manual _threshold _time } minutes `
? ` ${ req . body . manual _threshold _time } minutes `
@ -2258,27 +2258,27 @@ console.log(fcmToken)
// Schedule threshold check
// Schedule threshold check
// const thresholdTimeMs = manual_threshold_time * 60 * 1000;
// const thresholdTimeMs = manual_threshold_time * 60 * 1000;
motorIntervals [ motorId ] = setTimeout ( async ( ) => {
// motorIntervals[motorId] = setTimeout(async () => {
try {
// try {
// const stopMessage = `Threshold time of ${manual_threshold_time} minutes reached for motor supplying water to '${tankName}' in block '${blockName}'.`;
// // const stopMessage = `Threshold time of ${manual_threshold_time} minutes reached for motor supplying water to '${tankName}' in block '${blockName}'.`;
// eventEmitter.emit('sendThresholdTimeNotification', fcmToken, stopMessage);
// // eventEmitter.emit('sendThresholdTimeNotification', fcmToken, stopMessage);
await Tank . updateOne (
// await Tank.updateOne(
{ customerId , "connections.inputConnections.motor_id" : motorId } ,
// { customerId, "connections.inputConnections.motor_id": motorId },
{
// {
$set : {
// $set: {
"connections.inputConnections.$.motor_stop_status" : "1" ,
// "connections.inputConnections.$.motor_stop_status": "1",
"connections.inputConnections.$.manual_threshold_time" : null ,
// "connections.inputConnections.$.manual_threshold_time": null,
"connections.inputConnections.$.threshold_type" : null ,
// "connections.inputConnections.$.threshold_type": null,
}
// }
}
// }
) ;
// );
delete motorIntervals [ motorId ] ;
// delete motorIntervals[motorId];
} catch ( error ) {
// } catch (error) {
console . error ( "Error during threshold handling:" , error ) ;
// console.error("Error during threshold handling:", error);
}
// }
} , thresholdTimeMs ) ;
// }, thresholdTimeMs);
reply . code ( 200 ) . send ( { message : "Motor started successfully." } ) ;
reply . code ( 200 ) . send ( { message : "Motor started successfully." } ) ;
// Schedule water level checks after motor start
// Schedule water level checks after motor start
@ -2317,23 +2317,23 @@ console.log(fcmToken)
motorOnType
motorOnType
) ;
) ;
await Tank . updateOne (
// await Tank.updateOne(
{ customerId , "connections.inputConnections.motor_id" : motorId } ,
// { customerId, "connections.inputConnections.motor_id": motorId },
{
// {
$set : {
// $set: {
"connections.inputConnections.$.motor_stop_status" : "1" ,
// "connections.inputConnections.$.motor_stop_status": "1",
"connections.inputConnections.$.motor_on_type" : "manual" ,
// "connections.inputConnections.$.motor_on_type": "manual",
}
// }
}
// }
) ;
// );
// const stopMessage = `Motor supplying water to '${tankName}' in block '${blockName}' stopped manually at ${stopTime}.`;
// const stopMessage = `Motor supplying water to '${tankName}' in block '${blockName}' stopped manually at ${stopTime}.`;
// eventEmitter.emit('sendMotorStopNotification', fcmToken, stopMessage);
// eventEmitter.emit('sendMotorStopNotification', fcmToken, stopMessage);
if ( motorIntervals [ motorId ] ) {
// if (motorIntervals[motorId]) {
clearTimeout ( motorIntervals [ motorId ] ) ;
// clearTimeout(motorIntervals[motorId]);
delete motorIntervals [ motorId ] ;
// delete motorIntervals[motorId];
}
// }
} else {
} else {
throw new Error ( "Invalid action provided." ) ;
throw new Error ( "Invalid action provided." ) ;
@ -5341,3 +5341,73 @@ async function removeDuplicates () {
// Run the remove duplicates function
// Run the remove duplicates function
// removeDuplicates();
// removeDuplicates();
console . log ( "this is for testing autopush,line located in tankscontroller" )
console . log ( "this is for testing autopush,line located in tankscontroller" )
const calculateDailyConsumptionAndNotify = async ( ) => {
try {
const today = moment ( ) . startOf ( "day" ) ;
const yesterday = moment ( today ) . subtract ( 1 , "days" ) ;
// Fetch all active users
const activeUsers = await User . find ( { } ) ;
for ( const user of activeUsers ) {
const { customerId , fcmIds } = user ;
// Fetch daily consumption for the customer
const consumptions = await TankConsumptionOriginalSchema . find ( {
customerId ,
time : {
$gte : yesterday . format ( "DD-MMM-YYYY - HH:mm" ) ,
$lt : today . format ( "DD-MMM-YYYY - HH:mm" ) ,
} ,
} ) ;
// Calculate total consumption
const totalConsumption = consumptions . reduce ( ( total , record ) => {
return total + parseInt ( record . consumption , 10 ) ;
} , 0 ) ;
// Prepare tank-wise consumption details
const tankDetails = consumptions . map ( ( record ) => ( {
tankName : record . tankName ,
consumption : record . consumption ,
} ) ) ;
// Send notification
const notificationTitle = "Daily Water Consumption Report" ;
const notificationBody = `
Total Consumption : $ { totalConsumption } liters
Tank Details : $ { tankDetails
. map ( ( tank ) => ` ${ tank . tankName } : ${ tank . consumption } liters ` )
. join ( ", " ) }
` ;
if ( fcmIds && fcmIds . length > 0 ) {
await sendNotification ( fcmIds , notificationTitle , notificationBody ) ;
}
}
console . log ( "Daily consumption notifications sent successfully." ) ;
} catch ( err ) {
console . error ( "Error sending daily consumption notifications:" , err ) ;
}
} ;
// cron.schedule("0 11:57 * * *", async () => {
// console.log("Starting daily consumption notification task...");
// await calculateDailyConsumptionAndNotify();
// });
cron . schedule (
"0 9 * * *" ,
async ( ) => {
console . log ( "Starting daily consumption notification task..." ) ;
await calculateDailyConsumptionAndNotify ( ) ;
} ,
{
timezone : "Asia/Kolkata" , // Specify the timezone
}
) ;