diff --git a/PROF-XXI FW Tool/server/controllers/myUnitsAnalysis.js b/PROF-XXI FW Tool/server/controllers/myUnitsAnalysis.js new file mode 100644 index 0000000000000000000000000000000000000000..31ab3c6265668f827685442441ff1717b6b4c3be --- /dev/null +++ b/PROF-XXI FW Tool/server/controllers/myUnitsAnalysis.js @@ -0,0 +1,245 @@ +const db = require("../database/database"); + +exports.pieData = async (req, res) => { + const idunit = req.params.idunit; + const data = { + Teacher: 0, + Administrator: 0, + Manager: 0, + }; + + db.query( + "SELECT answers.participantposition, COUNT(answers.participantposition) as num FROM answers JOIN questionnaires JOIN units ON units.idunit = questionnaires.idunit AND answers.idquestionnaire = questionnaires.idquestionnaire WHERE units.idunit = ? GROUP BY answers.participantposition", + [idunit], + (err, result) => { + if (result) { + let i = 0; + while (result[i]) { + data[result[i].participantposition] = result[i].num; + i = i + 1; + } + // for (let i = 0; i < 3; i++) { + //} + res.json({ pieData: data }); + } + } + ); +}; + +exports.barData = async (req, res) => { + const idunit = req.params.idunit; + const data = { + Teacher: { + AVG_A: "0", + AVG_B: "0", + AVG_C: "0", + AVG_D: "0", + AVG_E: "0", + }, + Administrator: { + AVG_A: "0", + AVG_B: "0", + AVG_C: "0", + AVG_D: "0", + AVG_E: "0", + }, + Manager: { AVG_A: "0", AVG_B: "0", AVG_C: "0", AVG_D: "0", AVG_E: "0" }, + }; + + db.query( + "Select AVG(A) as AVG_A, AVG(B) as AVG_B, AVG(C) as AVG_C, AVG(D) as AVG_D, AVG(E) as AVG_E, a.participantposition FROM units u JOIN questionnaires q JOIN answers a ON u.idunit = q.idunit AND q.idquestionnaire = a.idquestionnaire WHERE u.idunit = ? GROUP BY a.participantposition", + [idunit], + (err, result) => { + if (result) { + let i = 0; + while (result[i]) { + data[result[i].participantposition] = { + AVG_A: result[i].AVG_A, + AVG_B: result[i].AVG_B, + AVG_C: result[i].AVG_C, + AVG_D: result[i].AVG_D, + AVG_E: result[i].AVG_E, + }; + i = i + 1; + } + + //for (let i = 0; i < 3; i++) { + + //} + res.json({ barData: data }); + } else { + console.log(err); + } + } + ); +}; + +exports.hbarData = async (req, res) => { + const idunit = req.params.idunit; + const data = { + Teacher: { + AVG_L1: "0", + AVG_L2: "0", + AVG_L3: "0", + AVG_L4: "0", + AVG_L5: "0", + }, + Administrator: { + AVG_L1: "0", + AVG_L2: "0", + AVG_L3: "0", + AVG_L4: "0", + AVG_L5: "0", + }, + Manager: { + AVG_L1: "0", + AVG_L2: "0", + AVG_L3: "0", + AVG_L4: "0", + AVG_L4: "0", + }, + }; + + db.query( + "SELECT AVG(L1) as AVG_L1, AVG(L2) as AVG_L2, AVG(L3) as AVG_L3, AVG(L4) as AVG_L4, AVG(L5) as AVG_L5, a.participantposition FROM units u JOIN questionnaires q JOIN answers a ON u.idunit = q.idunit AND q.idquestionnaire = a.idquestionnaire WHERE u.idunit = ? GROUP BY a.participantposition", + [idunit], + (err, result) => { + if (result) { + let i = 0; + while (result[i]) { + data[result[i].participantposition] = { + AVG_L1: result[i].AVG_L1, + AVG_L2: result[i].AVG_L2, + AVG_L3: result[i].AVG_L3, + AVG_L4: result[i].AVG_L4, + AVG_L5: result[i].AVG_L5, + }; + i = i + 1; + } + + //for (let i = 0; i < 3; i++) {} + res.json({ hbarData: data }); + } + } + ); +}; + +exports.gaugeData = async (req, res) => { + const idunit = req.params.idunit; + db.query( + "SELECT AVG(Global_Mark) AS AVG_G FROM answers a JOIN questionnaires q JOIN units u ON u.idunit= q.idunit AND a.idquestionnaire = q.idquestionnaire WHERE u.idunit = ? ", + [idunit], + (err, result) => { + if (result) { + res.json({ gaugeData: result[0].AVG_G }); + } + } + ); +}; + +exports.radarData = async (req, res) => { + const idunit = req.params.idunit; + const data = { + AVG_A: "0", + AVG_B: "0", + AVG_C: "0", + AVG_D: "0", + AVG_E: "0", + AVG_L1: "0", + AVG_L2: "0", + AVG_L3: "0", + AVG_L4: "0", + AVG_L5: "0", + AVG_G: "0", + }; + db.query( + "SELECT AVG(A) as AVG_A, AVG(B) as AVG_B, AVG(C) as AVG_C, AVG(D) as AVG_D, AVG(E) as AVG_E, AVG(L1) as AVG_L1, AVG(L2) as AVG_L2, AVG(L3) as AVG_L3, AVG(L4) as AVG_L4, AVG(L5) as AVG_L5, AVG(Global_Mark) as AVG_G FROM units u JOIN questionnaires q JOIN answers a ON u.idunit = q.idunit AND q.idquestionnaire = a.idquestionnaire WHERE u.idunit = ? ", + [idunit], + (err, result) => { + if (result) { + data.AVG_A = result[0].AVG_A; + data.AVG_B = result[0].AVG_B; + data.AVG_C = result[0].AVG_C; + data.AVG_D = result[0].AVG_D; + data.AVG_E = result[0].AVG_E; + data.AVG_L1 = result[0].AVG_L1; + data.AVG_L2 = result[0].AVG_L2; + data.AVG_L3 = result[0].AVG_L3; + data.AVG_L4 = result[0].AVG_L4; + data.AVG_L5 = result[0].AVG_L5; + data.AVG_G = result[0].AVG_G; + } + res.json({ radarData: data }); + } + ); +}; + +exports.distBarData = async (req, res) => { + const idunit = req.params.idunit; + const data = { + Teacher: 0, + Administrator: 0, + Manager: 0, + }; + + db.query( + "SELECT AVG(Global_Mark) as AVG_G, a.participantposition FROM units u JOIN questionnaires q JOIN answers a ON u.idunit = q.idunit AND q.idquestionnaire = a.idquestionnaire WHERE u.idunit = ? GROUP BY a.participantposition", + [idunit], + (err, result) => { + let i = 0; + while (result[i]) { + data[result[i].participantposition] = result[i].AVG_G; + i = i + 1; + } + + // for (let i = 0; i < 3; i++) {} + res.json({ distBarData: data }); + } + ); +}; + +exports.lineData = async (req, res) => { + const idunit = req.params.idunit; + const dateIn = req.params.dateIn + " " + "00:00:00"; + const dateOut = req.params.dateOut + " " + "23:59:59"; + + const data = { + Dates: [], + AVG_G: [], + AVG_A: [], + AVG_B: [], + AVG_C: [], + AVG_D: [], + AVG_E: [], + AVG_L1: [], + AVG_L2: [], + AVG_L3: [], + AVG_L4: [], + AVG_L5: [], + }; + + db.query( + "SELECT q.date as Dates, AVG(Global_Mark) as AVG_G,AVG(A) as AVG_A, AVG(B) as AVG_B, AVG(C) as AVG_C, AVG(D) as AVG_D, AVG(E) as AVG_E, AVG(L1) as AVG_L1, AVG(L2) as AVG_L2, AVG(L3) as AVG_L3, AVG(L4) as AVG_L4, AVG(L5) as AVG_L5 FROM units u JOIN questionnaires q JOIN answers a ON u.idunit = q.idunit AND q.idquestionnaire = a.idquestionnaire WHERE u.idunit = ? AND q.date BETWEEN ? AND ? GROUP BY q.date ORDER BY q.date", + [idunit, dateIn, dateOut], + (err, result) => { + for (let i = 0; i < result.length; i++) { + const date = JSON.stringify(result[i].Dates); + const dateM = date.split('"')[1].split("T")[0]; + data.Dates.push(dateM); + data.AVG_G.push(result[i].AVG_G); + data.AVG_A.push(result[i].AVG_A); + data.AVG_B.push(result[i].AVG_B); + data.AVG_C.push(result[i].AVG_C); + data.AVG_D.push(result[i].AVG_D); + data.AVG_E.push(result[i].AVG_E); + data.AVG_L1.push(result[i].AVG_L1); + data.AVG_L2.push(result[i].AVG_L2); + data.AVG_L3.push(result[i].AVG_L3); + data.AVG_L4.push(result[i].AVG_L4); + data.AVG_L5.push(result[i].AVG_L5); + } + + res.json({ lineData: data }); + } + ); +};