59 lines
1.6 KiB
JavaScript
59 lines
1.6 KiB
JavaScript
import { fileURLToPath } from "url";
|
|
import { connection } from "./index.js";
|
|
// Create the connection to database
|
|
|
|
// get data for users between 2 dates
|
|
async function getTopTen() {
|
|
let filteredResults;
|
|
let startDate = "2021-01-01";
|
|
let endDate = "2029-01-01";
|
|
if (req.query.to) startDate = req.query.to;
|
|
if (req.query.from) startDate = req.query.from;
|
|
try {
|
|
const [results, fields] = await connection.query(
|
|
"SELECT t.user,t.time,t.date,t.project \
|
|
FROM Timelog t\
|
|
WHERE t.date BETWEEN ? AND ? ;",
|
|
[startDate, endDate],
|
|
);
|
|
filteredResults = results;
|
|
console.log(filteredResults);
|
|
} catch (err) {
|
|
console.log(err);
|
|
}
|
|
|
|
if (req.query.filterBy) filterBy = req.query.filterBy;
|
|
// how much time each user has logged during that time period
|
|
if (filterBy === "user") {
|
|
let users = {};
|
|
for (let i = 0; i < filteredResults.length; i++) {
|
|
if (filteredResults[i].user in users) {
|
|
users[filteredResults[i].user] += filteredResults[i].time;
|
|
} else {
|
|
users[filteredResults[i].user] = filteredResults[i].time;
|
|
}
|
|
}
|
|
// Create items array
|
|
let items = Object.keys(users).map(function (key) {
|
|
return [key, users[key]];
|
|
});
|
|
|
|
// Sort the array based on the second element
|
|
items.sort(function (first, second) {
|
|
return second[1] - first[1];
|
|
});
|
|
|
|
// Create a new array with only the first 10 items
|
|
return items.slice(0, 10);
|
|
}
|
|
}
|
|
|
|
export { getTopTen };
|
|
|
|
// SELECT u.f_name,u.l_name,u.mail,p.name,t.time,t.date
|
|
// FROM Timelog t
|
|
// INNER JOIN Project p ON p.id=t.project
|
|
// INNER JOIN User u ON u.id=t.user
|
|
// ORDER BY time
|
|
// LIMIT 10 OFFSET 10
|