|
|
|
@@ -30,6 +30,7 @@ export class StatsController {
|
|
|
|
"total_scans": scans.filter(scan => { scan.valid === true }).length,
|
|
|
|
"total_scans": scans.filter(scan => { scan.valid === true }).length,
|
|
|
|
"total_distance": runners.reduce((sum, current) => sum + current.distance, 0),
|
|
|
|
"total_distance": runners.reduce((sum, current) => sum + current.distance, 0),
|
|
|
|
"total_donation_amount": donations.reduce((sum, current) => sum + current.amount, 0),
|
|
|
|
"total_donation_amount": donations.reduce((sum, current) => sum + current.amount, 0),
|
|
|
|
|
|
|
|
"average_distance": runners.reduce((sum, current) => sum + current.distance, 0) / runners.length,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -37,8 +38,7 @@ export class StatsController {
|
|
|
|
@UseBefore(StatsAuth)
|
|
|
|
@UseBefore(StatsAuth)
|
|
|
|
@OpenAPI({ description: "Returns the top ten runners by distance.", security: [{ "StatsApiToken": [] }] })
|
|
|
|
@OpenAPI({ description: "Returns the top ten runners by distance.", security: [{ "StatsApiToken": [] }] })
|
|
|
|
async getTopRunnersByDistance() {
|
|
|
|
async getTopRunnersByDistance() {
|
|
|
|
let connection = getConnection();
|
|
|
|
let runners = await getConnection().getRepository(Runner).find({ relations: ["scans"] });
|
|
|
|
let runners = await connection.getRepository(Runner).find({ relations: ["scans"] });
|
|
|
|
|
|
|
|
return runners.sort((runner1, runner2) => runner1.distance - runner2.distance).slice(0, 9);
|
|
|
|
return runners.sort((runner1, runner2) => runner1.distance - runner2.distance).slice(0, 9);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@@ -46,21 +46,24 @@ export class StatsController {
|
|
|
|
@UseBefore(StatsAuth)
|
|
|
|
@UseBefore(StatsAuth)
|
|
|
|
@OpenAPI({ description: "Returns the top ten runners by donations.", security: [{ "StatsApiToken": [] }] })
|
|
|
|
@OpenAPI({ description: "Returns the top ten runners by donations.", security: [{ "StatsApiToken": [] }] })
|
|
|
|
async getTopRunnersByDonations() {
|
|
|
|
async getTopRunnersByDonations() {
|
|
|
|
throw new Error("Not implemented yet.")
|
|
|
|
let runners = await getConnection().getRepository(Runner).find({ relations: ["scans", "distanceDonations"] });
|
|
|
|
|
|
|
|
return runners.sort((runner1, runner2) => runner1.distanceDonationAmount - runner2.distanceDonationAmount).slice(0, 9);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Get("/teams/distance")
|
|
|
|
@Get("/teams/distance")
|
|
|
|
@UseBefore(StatsAuth)
|
|
|
|
@UseBefore(StatsAuth)
|
|
|
|
@OpenAPI({ description: "Returns the top ten teams by distance.", security: [{ "StatsApiToken": [] }] })
|
|
|
|
@OpenAPI({ description: "Returns the top ten teams by distance.", security: [{ "StatsApiToken": [] }] })
|
|
|
|
async getTopTeamsByDistance() {
|
|
|
|
async getTopTeamsByDistance() {
|
|
|
|
throw new Error("Not implemented yet.")
|
|
|
|
let teams = await getConnection().getRepository(RunnerTeam).find({ relations: ["runners", "runners.scans"] });
|
|
|
|
|
|
|
|
return teams.sort((team1, team2) => team1.distance - team2.distance).slice(0, 9);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Get("/teams/donations")
|
|
|
|
@Get("/teams/donations")
|
|
|
|
@UseBefore(StatsAuth)
|
|
|
|
@UseBefore(StatsAuth)
|
|
|
|
@OpenAPI({ description: "Returns the top ten teams by donations.", security: [{ "StatsApiToken": [] }] })
|
|
|
|
@OpenAPI({ description: "Returns the top ten teams by donations.", security: [{ "StatsApiToken": [] }] })
|
|
|
|
async getTopTeamsByDonations() {
|
|
|
|
async getTopTeamsByDonations() {
|
|
|
|
throw new Error("Not implemented yet.")
|
|
|
|
let teams = await getConnection().getRepository(RunnerTeam).find({ relations: ["runners", "runners.scans", "runners.distanceDonations"] });
|
|
|
|
|
|
|
|
return teams.sort((team1, team2) => team1.distanceDonationAmount - team2.distanceDonationAmount).slice(0, 9);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Get("/organisations/distance")
|
|
|
|
@Get("/organisations/distance")
|
|
|
|
|