Fuggit, gpt to the rescue maybe?

This commit is contained in:
Christopher Cookman 2023-10-02 17:44:04 -06:00
parent 359d9b93dc
commit 115b83b281
Signed by: ChrisChrome
GPG key ID: A023A26E42C33A42

108
index.js
View file

@ -155,54 +155,68 @@ const pool = mariadb.createPool(config.mariadb);
const cdrPool = mariadb.createPool(config.cdrdb); const cdrPool = mariadb.createPool(config.cdrdb);
const generateExtensionListEmbed = async () => { const generateExtensionListEmbed = async () => {
return new Promise(async (resolve, reject) => { return new Promise(async (resolve, reject) => {
var conn = await cdrPool.getConnection(); var conn = await cdrPool.getConnection();
pbxClient.request(funcs.generateQuery("list", {})).then((result) => { pbxClient.request(funcs.generateQuery("list", {})).then((result) => {
console.log("1debug start get extensions") console.log("1debug start get extensions")
let extensions = result.fetchAllExtensions.extension; let extensions = result.fetchAllExtensions.extension;
// key:value pairs of extension:username let extensionList = {};
let extensionList = {}; let inactive = [];
let inactive = [];
console.log("2 debug start foreach")
extensions.forEach((extension) => {
console.log("2.1 foreach start")
extensionList[extension.user.extension] = extension.user.name;
console.log("2.2 query start")
conn.query(`SELECT * FROM cel WHERE cid_num = ${extension.user.extension} AND eventtime >= DATE_SUB(CURDATE(), INTERVAL 30 DAY) LIMIT 1;`)
.then((rows) => {
console.log(`2.3 query end ${rows.length}`)
if (rows.length == 0) {
inactive.push(extension.user.extension); // Generate a list of all unique extensions to be checked in the database
} let uniqueExtensions = [...new Set(extensions.map(extension => extension.user.extension))];
}).catch((error) => {
console.log("2.4 query error") // Construct SQL query to check all unique extensions at the same time
reject(error); console.log("2 debug start SQL query")
}); conn.query(`
console.log("2.5 foreach end") SELECT cid_num
}); FROM cel
extensionList1 = ""; WHERE cid_num IN (${uniqueExtensions.join(",")})
console.log("3 debug start for") AND eventtime >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
for (let key in extensionList) { `)
console.log("3.1 for start") .then((rows) => {
extensionList1 += `\`${inactive[key] ? "*" : ""}${key}\`: ${extensionList[key]}\n`; console.log(`2.1 query end ${rows.length}`)
}
res = { // Add extensions that weren't in the results to the inactive array
"title": "Extension List", rows.forEach(row => {
"color": 0x00ff00, if (!uniqueExtensions.includes(row.cid_num)) {
// Get the number of extensions inactive.push(row.cid_num);
"description": `${extensions.length} extensions`, }
"fields": [{ });
"name": "Extensions",
"value": `${extensionList1}` }).catch((error) => {
}] console.log("2.2 query error")
} reject(error);
resolve(res); });
}).catch((error) => {
reject(error); console.log("3 debug start foreach")
}); extensions.forEach((extension) => {
conn.end(); console.log("3.1 foreach start")
}) extensionList[extension.user.extension] = extension.user.name;
});
let extensionList1 = "";
console.log("4 debug start for")
for (let key in extensionList) {
console.log("4.1 for start")
extensionList1 += `\`${inactive.includes(key) ? "*" : ""}${key}\`: ${extensionList[key]}\n`;
}
res = {
"title": "Extension List",
"color": 0x00ff00,
"description": `${extensions.length} extensions`,
"fields": [{
"name": "Extensions",
"value": `${extensionList1}`
}]
}
resolve(res);
}).catch((error) => {
reject(error);
});
conn.end();
})
}; };
const lookupExtension = (ident, type) => { // type is either "ext" or "uid" const lookupExtension = (ident, type) => { // type is either "ext" or "uid"