import express from "express"; import connection from "../db.js"; const router = express.Router(); router.get("/gettopten", async (req, res) => { let from = "2020-01-01"; let to = "2029-01-01"; let filterBy = "user"; if (req.query.from) from = req.query.from; if (req.query.to) to = req.query.to; if (req.query.filterBy) filterBy = req.query.filterBy; let results, fields; let filterBySql = filterBy === "user" ? "t.user" : "t.project"; try { [results, fields] = await connection.query( "SELECT t.user,t.date,t.project,u.f_name,u.l_name,p.name,SUM(t.time) as total_time \ FROM Timelog t \ INNER JOIN Project p ON p.id=t.project \ INNER JOIN User u ON u.id=t.user \ WHERE t.date BETWEEN ? AND ? \ GROUP BY ?? \ ORDER BY total_time DESC\ LIMIT 10;", [from, to, filterBySql], ); } catch (err) { console.log(err); res.status(400).json({ message: "Error" }); } // how much time each user has logged during that time period // let items = {}; // let itemIdtoName = {}; // for (let i = 0; i < results.length; i++) { // if (results[i][filterBy] in items) { // items[results[i][filterBy]] += results[i].time; // } else { // items[results[i][filterBy]] = results[i].time; // if (filterBy === "user") // itemIdtoName[results[i][filterBy]] = // results[i].f_name + " " + results[i].l_name; // else itemIdtoName[results[i][filterBy]] = results[i].name; // } // } // let respData = {}; // for (let key in items) { // if (items.hasOwnProperty(key)) { // respData[itemIdtoName[key]] = items[key]; // } // } // // transform obj to array // respData = Object.keys(items).map(function (key) { // return [key, items[key]]; // }); // // // sort the array based on the second element // respData.sort(function (first, second) { // return second[1] - first[1]; // }); // // // console.log(itemIdtoName); // // console.log(respData); // // Create a new array with only the first 10 items // respData = respData.slice(0, 10); res.json(results); }); export default router;