ashok 9 months ago
commit 0a849a9a5e

@ -21,10 +21,10 @@ var termination = chalk.bold.magenta;
// TODO // TODO
// Need to read database url from a environment variable. // Need to read database url from a environment variable.
// const databaseURL = "mongodb://armintatankdbuser:armintatank1@35.207.198.4:27017/arminta-tank-db; // const databaseURL = "mongodb://armintatankdbuser:armintatank1@35.207.198.4:27017/arminta-tank-db;
//const databaseURLNew = "mongodb://35.207.198.4:27017/arminta-tank-db"; const databaseURLNew = "mongodb://35.207.198.4:27017/arminta-tank-db";
//const databaseURLNew = "mongodb://35.200.129.165:27017/health-care-db"; //const databaseURLNew = "mongodb://35.200.129.165:27017/health-care-db";
const databaseURLNew = "mongodb://127.0.0.1:27017/arminta-tank-db"; //const databaseURLNew = "mongodb://127.0.0.1:27017/arminta-tank-db";
// Next line not used , or no need to pass default db in the mongo connection url. // Next line not used , or no need to pass default db in the mongo connection url.
const defaultDatabase = "arminta-tank-db"; const defaultDatabase = "arminta-tank-db";

@ -1564,60 +1564,18 @@ admin.initializeApp({
// await sendNotification(fcmTokens, 'Motor Started', `Motor ID: ${motorId} started successfully at ${timestamp}. Current Water Level: ${waterLevel} Ltrs`); // await sendNotification(fcmTokens, 'Motor Started', `Motor ID: ${motorId} started successfully at ${timestamp}. Current Water Level: ${waterLevel} Ltrs`);
// }); // });
// eventEmitter.on('motorStart', async (fcmTokens, timestamp, motorId, waterLevel, blockName, tankName, startTime, motorOnType, stopCriteria) => {
// const message = `MotorId '${motorId}' Water supply from '${blockName}' to '${tankName}' started at ${startTime} by '${motorOnType}' mode and will stop after ${stopCriteria}. Current Water Level: ${waterLevel} Ltrs.`;
// await sendNotification(fcmTokens, 'Motor Started', message);
// });
// eventEmitter.on('motorStart', async (fcmTokens, timestamp, motorId, waterLevel, blockName, tankName, startTime, motorOnType, stopCriteria) => {
// const message = `Tank Name : '${tankName}' Pump Starts at '${startTime}' by '${motorOnType}' will stop at '${stopCriteria} mins'`;
// await sendNotification(fcmTokens, 'Arminta Water Management', message);
// });
eventEmitter.on('motorStart', async (fcmTokens, timestamp, motorId, waterLevel, blockName, tankName, startTime, motorOnType, stopCriteria) => { eventEmitter.on('motorStart', async (fcmTokens, timestamp, motorId, waterLevel, blockName, tankName, startTime, motorOnType, stopCriteria) => {
try { const message = `Water supply from '${blockName}' to '${tankName}' started at ${startTime} by '${motorOnType}' mode and will stop after ${stopCriteria}. Current Water Level: ${waterLevel} Ltrs.`;
// Retrieve the user information await sendNotification(fcmTokens, 'Motor Started', message);
const users = await User.find({ fcmId: { $in: fcmTokens } });
console.log("users",users)
const userNames = users.map(user => user.username).join(', ');
console.log("userNames",userNames)
// Prepare the message
const message = `Tank Name: '${tankName}', Pump started at '${startTime}' by Initiated by user(s): ${userNames} '${motorOnType}' and will stop after '${stopCriteria}'`;
// Send the notification
await sendNotification(fcmTokens, 'Arminta Water Management', message);
} catch (error) {
console.error('Error in motorStart event:', error);
}
}); });
// Emit motor stop event with motorId // Emit motor stop event with motorId
// eventEmitter.on('motorStop', async (fcmTokens, motorId, waterLevel, blockName, tankName, stopTime, motorOnType) => { eventEmitter.on('motorStop', async (fcmTokens, timestamp, motorId, waterLevel, blockName, tankName,stopTime,motorOnType) => {
// const message = `MotorId '${motorId}' Water supply from '${blockName}' to '${tankName}' stopped at ${stopTime} by '${motorOnType}' mode. Current Water Level: ${waterLevel} Ltrs.`; const message = `Water supply from '${blockName}' to '${tankName}' stopped at ${stopTime} by '${motorOnType}' mode. Current Water Level: ${waterLevel} Ltrs.`;
// await sendNotification(fcmTokens, 'Motor Stopped', message); await sendNotification(fcmTokens, 'Motor Stopped', message);
// });
eventEmitter.on('motorStop', async (fcmTokens, tankName,stopTime, motorOnType) => {
try {
// Retrieve the user information
const users = await User.find({ fcmId: { $in: fcmTokens } });
console.log("users",users)
const userNames = users.map(user => user.username).join(', ');
console.log("userNames",userNames)
// Prepare the message
const message = `Tank Name: '${tankName}', Pump stopped at '${stopTime}' by Initiated by user(s): ${userNames} '${motorOnType}'`;
// Send the notification
await sendNotification(fcmTokens, 'Arminta Water Management', message);
} catch (error) {
console.error('Error in motorStart event:', error);
}
}); });
// Event listener to handle notification // Event listener to handle notification
eventEmitter.on('sendLowWaterNotification', async (fcmToken, tankInfo) => { eventEmitter.on('sendLowWaterNotification', async (fcmToken, tankInfo) => {
const message = formatWaterLevelMessage(tankInfo, 'low'); const message = formatWaterLevelMessage(tankInfo, 'low');
@ -2069,50 +2027,50 @@ exports.motorAction = async (req, reply) => {
const currentWaterLevel = parseInt(receiverTank.waterlevel, 10); const currentWaterLevel = parseInt(receiverTank.waterlevel, 10);
const waterLevelThresholds = { low: 30, veryLow: 20, criticallyLow: 10 }; const waterLevelThresholds = { low: 30, veryLow: 20, criticallyLow: 10 };
// // Check if the water level is below any of the thresholds // Check if the water level is below any of the thresholds
// if (currentWaterLevel < waterLevelThresholds.criticallyLow) { if (currentWaterLevel < waterLevelThresholds.criticallyLow) {
// if (!receiverTank.notificationSentCritical) { if (!receiverTank.notificationSentCritical) {
// eventEmitter.emit('sendCriticalLowWaterNotification', fcmToken, receiverTank); eventEmitter.emit('sendCriticalLowWaterNotification', fcmToken, receiverTank);
// await Tank.updateOne({ customerId, tankName: receiverTank.tankName }, { $set: { notificationSentCritical: true } }); await Tank.updateOne({ customerId, tankName: receiverTank.tankName }, { $set: { notificationSentCritical: true } });
// } }
// } else if (currentWaterLevel < waterLevelThresholds.veryLow) { } else if (currentWaterLevel < waterLevelThresholds.veryLow) {
// if (!receiverTank.notificationSentVeryLow) { if (!receiverTank.notificationSentVeryLow) {
// eventEmitter.emit('sendVeryLowWaterNotification', fcmToken, receiverTank); eventEmitter.emit('sendVeryLowWaterNotification', fcmToken, receiverTank);
// await Tank.updateOne({ customerId, tankName: receiverTank.tankName }, { $set: { notificationSentVeryLow: true } }); await Tank.updateOne({ customerId, tankName: receiverTank.tankName }, { $set: { notificationSentVeryLow: true } });
// } }
// } else if (currentWaterLevel < waterLevelThresholds.low) { } else if (currentWaterLevel < waterLevelThresholds.low) {
// if (!receiverTank.notificationSentLow) { if (!receiverTank.notificationSentLow) {
// eventEmitter.emit('sendLowWaterNotification', fcmToken, receiverTank); eventEmitter.emit('sendLowWaterNotification', fcmToken, receiverTank);
// await Tank.updateOne({ customerId, tankName: receiverTank.tankName }, { $set: { notificationSentLow: true } }); await Tank.updateOne({ customerId, tankName: receiverTank.tankName }, { $set: { notificationSentLow: true } });
// } }
// } }
// Check for critical high water level // Check for critical high water level
// if (currentWaterLevel >= criticalHighWaterThreshold) { if (currentWaterLevel >= criticalHighWaterThreshold) {
// if (!receiverTank.notificationSentCriticalHigh) { if (!receiverTank.notificationSentCriticalHigh) {
// eventEmitter.emit('sendCriticalHighWaterNotification', fcmToken, receiverTank); eventEmitter.emit('sendCriticalHighWaterNotification', fcmToken, receiverTank);
// await Tank.updateOne({ customerId, tankName: receiverTank.tankName }, { $set: { notificationSentCriticalHigh: true } }); await Tank.updateOne({ customerId, tankName: receiverTank.tankName }, { $set: { notificationSentCriticalHigh: true } });
// } }
// } }
// // Check for very high water level // Check for very high water level
// else if (currentWaterLevel >= veryHighWaterThreshold) { else if (currentWaterLevel >= veryHighWaterThreshold) {
// if (!receiverTank.notificationSentVeryHigh) { if (!receiverTank.notificationSentVeryHigh) {
// eventEmitter.emit('sendVeryHighWaterNotification', fcmToken, receiverTank); eventEmitter.emit('sendVeryHighWaterNotification', fcmToken, receiverTank);
// await Tank.updateOne({ customerId, tankName: receiverTank.tankName }, { $set: { notificationSentVeryHigh: true } }); await Tank.updateOne({ customerId, tankName: receiverTank.tankName }, { $set: { notificationSentVeryHigh: true } });
// } }
// } }
// // Check for high water level // Check for high water level
// else if (currentWaterLevel >= highWaterThreshold) { else if (currentWaterLevel >= highWaterThreshold) {
// if (!receiverTank.notificationSentHigh) { if (!receiverTank.notificationSentHigh) {
// eventEmitter.emit('sendHighWaterNotification', fcmToken, receiverTank); eventEmitter.emit('sendHighWaterNotification', fcmToken, receiverTank);
// await Tank.updateOne({ customerId, tankName: receiverTank.tankName }, { $set: { notificationSentHigh: true } }); await Tank.updateOne({ customerId, tankName: receiverTank.tankName }, { $set: { notificationSentHigh: true } });
// } }
// } }
// Determine the motor stop status based on the action // Determine the motor stop status based on the action
let motorStopStatus; let motorStopStatus;
const blockName = req.body.from || "Unknown Block"; // Provide a fallback if `from` is missing const blockName = req.body.from || "Unknown Block"; // Provide a fallback if `from` is missing
const tankName = req.body.to || "Unknown Tank"; // Provide a fallback if `to` is missing const tankName = req.body.to || "Unknown Tank"; // Provide a fallback if `to` is missing
const stopTime = req.body.stopTime || new Date().toISOString(); const stopTime = req.body.stopTime || new Date().toISOString();
const motorOnType = req.body.motor_on_type || "app"; const motorOnType = req.body.motor_on_type || "manual";
if (action === "start") { if (action === "start") {
motorStopStatus = "2"; motorStopStatus = "2";
@ -2146,6 +2104,9 @@ exports.motorAction = async (req, reply) => {
eventEmitter.emit( eventEmitter.emit(
"motorStop", "motorStop",
fcmToken, fcmToken,
motorId,
currentWaterLevel,
blockName,
tankName, tankName,
stopTime, stopTime,
motorOnType motorOnType

@ -90,7 +90,7 @@ const userSchema = new mongoose.Schema(
zip: { type: String, default: null }, zip: { type: String, default: null },
notes: { type: String, default: null }, notes: { type: String, default: null },
}, },
stripeCustomerId: String, stripeCustomerId: String,
stripePaymentIntentId: String, stripePaymentIntentId: String,
stripeSubscriptionId: String, stripeSubscriptionId: String,

Loading…
Cancel
Save