|
|
@ -7774,7 +7774,6 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
// ✅ Exclude resolved hardwareIds from disconnected list
|
|
|
|
|
|
|
|
const resolvedHardwareIds = new Set();
|
|
|
|
const resolvedHardwareIds = new Set();
|
|
|
|
(supportRecord.resolvedIssues || []).forEach(issue => {
|
|
|
|
(supportRecord.resolvedIssues || []).forEach(issue => {
|
|
|
|
if (issue.hardwareId) resolvedHardwareIds.add(issue.hardwareId.trim().toLowerCase());
|
|
|
|
if (issue.hardwareId) resolvedHardwareIds.add(issue.hardwareId.trim().toLowerCase());
|
|
|
@ -7797,7 +7796,6 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => {
|
|
|
|
|
|
|
|
|
|
|
|
const allHardwareIds = [...hardwareIdsArray];
|
|
|
|
const allHardwareIds = [...hardwareIdsArray];
|
|
|
|
|
|
|
|
|
|
|
|
// ✅ Fetch all relevant sensors (connected or disconnected)
|
|
|
|
|
|
|
|
const relevantSensorsRaw = await Insensors.find({
|
|
|
|
const relevantSensorsRaw = await Insensors.find({
|
|
|
|
$or: [
|
|
|
|
$or: [
|
|
|
|
{ connected_to: { $in: allHardwareIds } },
|
|
|
|
{ connected_to: { $in: allHardwareIds } },
|
|
|
@ -7806,7 +7804,17 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => {
|
|
|
|
]
|
|
|
|
]
|
|
|
|
}).lean();
|
|
|
|
}).lean();
|
|
|
|
|
|
|
|
|
|
|
|
// ✅ Filter out categorized and resolved sensors
|
|
|
|
// ✅ Allow resolved hardwareIds that are part of new unresolved issues
|
|
|
|
|
|
|
|
const unresolvedHardwareIdSet = new Set();
|
|
|
|
|
|
|
|
unresolvedIssues.forEach(issue => {
|
|
|
|
|
|
|
|
if (issue.hardwareId) unresolvedHardwareIdSet.add(issue.hardwareId.trim().toLowerCase());
|
|
|
|
|
|
|
|
if (Array.isArray(issue.hardwareIds)) {
|
|
|
|
|
|
|
|
issue.hardwareIds.forEach(id => {
|
|
|
|
|
|
|
|
if (typeof id === "string") unresolvedHardwareIdSet.add(id.trim().toLowerCase());
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
const sensors = relevantSensorsRaw.filter(sensor => {
|
|
|
|
const sensors = relevantSensorsRaw.filter(sensor => {
|
|
|
|
const ids = [
|
|
|
|
const ids = [
|
|
|
|
sensor.hardwareId?.trim().toLowerCase(),
|
|
|
|
sensor.hardwareId?.trim().toLowerCase(),
|
|
|
@ -7814,7 +7822,8 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => {
|
|
|
|
sensor.tankhardwareId?.trim().toLowerCase()
|
|
|
|
sensor.tankhardwareId?.trim().toLowerCase()
|
|
|
|
];
|
|
|
|
];
|
|
|
|
return !ids.some(id =>
|
|
|
|
return !ids.some(id =>
|
|
|
|
existingCategorizedHardwareIds.has(id) || resolvedHardwareIds.has(id)
|
|
|
|
existingCategorizedHardwareIds.has(id) ||
|
|
|
|
|
|
|
|
(resolvedHardwareIds.has(id) && !unresolvedHardwareIdSet.has(id))
|
|
|
|
);
|
|
|
|
);
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
@ -7836,7 +7845,7 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => {
|
|
|
|
];
|
|
|
|
];
|
|
|
|
|
|
|
|
|
|
|
|
const isCategorizedOrResolved = [sensorHw, sensorConnected, sensorHardwareId].some(id =>
|
|
|
|
const isCategorizedOrResolved = [sensorHw, sensorConnected, sensorHardwareId].some(id =>
|
|
|
|
id && (existingCategorizedHardwareIds.has(id) || resolvedHardwareIds.has(id))
|
|
|
|
id && (existingCategorizedHardwareIds.has(id) || (resolvedHardwareIds.has(id) && !unresolvedHardwareIdSet.has(id)))
|
|
|
|
);
|
|
|
|
);
|
|
|
|
if (isCategorizedOrResolved) continue;
|
|
|
|
if (isCategorizedOrResolved) continue;
|
|
|
|
|
|
|
|
|
|
|
@ -7846,7 +7855,7 @@ exports.getDisconnectedCustomerDetails = async (req, reply) => {
|
|
|
|
(sensorHardwareId && allIssueHardwareIds.includes(sensorHardwareId))
|
|
|
|
(sensorHardwareId && allIssueHardwareIds.includes(sensorHardwareId))
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
for (const hw of allIssueHardwareIds) {
|
|
|
|
for (const hw of allIssueHardwareIds) {
|
|
|
|
if (hw && !existingCategorizedHardwareIds.has(hw) && !resolvedHardwareIds.has(hw)) {
|
|
|
|
if (hw && !existingCategorizedHardwareIds.has(hw) && (!resolvedHardwareIds.has(hw) || unresolvedHardwareIdSet.has(hw))) {
|
|
|
|
customerHardwareMap[custId].add(hw);
|
|
|
|
customerHardwareMap[custId].add(hw);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|