Compare commits
No commits in common. "b9fe9f1c24653b91255a6dbbdc32c30b1b411eeb" and "301f33467489a8533bdac11fbd10efd1b791f5e3" have entirely different histories.
b9fe9f1c24
...
301f334674
11
CHANGELOG.md
11
CHANGELOG.md
@ -2,20 +2,9 @@
|
|||||||
|
|
||||||
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
All notable changes to this project will be documented in this file. Dates are displayed in UTC.
|
||||||
|
|
||||||
#### [v1.1.0](https://git.odit.services/lfk/backend/compare/v1.0.1...v1.1.0)
|
|
||||||
|
|
||||||
- feat(stats): Added donation count and donor count to stats [`6f39ac4`](https://git.odit.services/lfk/backend/commit/6f39ac42dafc2a589bbb2256b0417f3e774ae174)
|
|
||||||
- Added average donation per distance to stats [`fe59e3a`](https://git.odit.services/lfk/backend/commit/fe59e3a557903cf555d4c50098e935c49ca1fac4)
|
|
||||||
- Added hints [`b25b0db`](https://git.odit.services/lfk/backend/commit/b25b0db76071ef8d50cc60e950a399dc060a2a9f)
|
|
||||||
- Added calls to controller [`6ee5328`](https://git.odit.services/lfk/backend/commit/6ee5328dbc404603d19db3a5173ae4def560a9c9)
|
|
||||||
- Formatting [`42c23a5`](https://git.odit.services/lfk/backend/commit/42c23a5883dacda4e0147842d448b3ad35b197b1)
|
|
||||||
|
|
||||||
#### [v1.0.1](https://git.odit.services/lfk/backend/compare/v1.0.0...v1.0.1)
|
#### [v1.0.1](https://git.odit.services/lfk/backend/compare/v1.0.0...v1.0.1)
|
||||||
|
|
||||||
> 18 April 2023
|
|
||||||
|
|
||||||
- fix(pagination) page=0 resulted in false thx JS [`fcee390`](https://git.odit.services/lfk/backend/commit/fcee3909f4c4664115cc7ecb94f30e0dd8e78ce0)
|
- fix(pagination) page=0 resulted in false thx JS [`fcee390`](https://git.odit.services/lfk/backend/commit/fcee3909f4c4664115cc7ecb94f30e0dd8e78ce0)
|
||||||
- 🚀Bumped version to v1.0.1 [`301f334`](https://git.odit.services/lfk/backend/commit/301f33467489a8533bdac11fbd10efd1b791f5e3)
|
|
||||||
|
|
||||||
### [v1.0.0](https://git.odit.services/lfk/backend/compare/v0.15.4...v1.0.0)
|
### [v1.0.0](https://git.odit.services/lfk/backend/compare/v0.15.4...v1.0.0)
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@odit/lfk-backend",
|
"name": "@odit/lfk-backend",
|
||||||
"version": "1.1.0",
|
"version": "1.0.1",
|
||||||
"main": "src/app.ts",
|
"main": "src/app.ts",
|
||||||
"repository": "https://git.odit.services/lfk/backend",
|
"repository": "https://git.odit.services/lfk/backend",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
@ -3,7 +3,6 @@ import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi';
|
|||||||
import { getConnection } from 'typeorm';
|
import { getConnection } from 'typeorm';
|
||||||
import StatsAuth from '../middlewares/StatsAuth';
|
import StatsAuth from '../middlewares/StatsAuth';
|
||||||
import { Donation } from '../models/entities/Donation';
|
import { Donation } from '../models/entities/Donation';
|
||||||
import { Donor } from '../models/entities/Donor';
|
|
||||||
import { Runner } from '../models/entities/Runner';
|
import { Runner } from '../models/entities/Runner';
|
||||||
import { RunnerOrganization } from '../models/entities/RunnerOrganization';
|
import { RunnerOrganization } from '../models/entities/RunnerOrganization';
|
||||||
import { RunnerTeam } from '../models/entities/RunnerTeam';
|
import { RunnerTeam } from '../models/entities/RunnerTeam';
|
||||||
@ -28,7 +27,6 @@ export class StatsController {
|
|||||||
const orgs = await connection.getRepository(RunnerOrganization).count();
|
const orgs = await connection.getRepository(RunnerOrganization).count();
|
||||||
const users = await connection.getRepository(User).count();
|
const users = await connection.getRepository(User).count();
|
||||||
const scans = await connection.getRepository(Scan).count({ where: { valid: true } });
|
const scans = await connection.getRepository(Scan).count({ where: { valid: true } });
|
||||||
|
|
||||||
const distance_query = await connection.getRepository(Scan).createQueryBuilder('scan')
|
const distance_query = await connection.getRepository(Scan).createQueryBuilder('scan')
|
||||||
.leftJoinAndSelect("scan.track", "track").where("scan.valid = TRUE")
|
.leftJoinAndSelect("scan.track", "track").where("scan.valid = TRUE")
|
||||||
.select("SUM(track.distance)", "sum_track").addSelect("SUM(_distance)", "sum_distance")
|
.select("SUM(track.distance)", "sum_track").addSelect("SUM(_distance)", "sum_distance")
|
||||||
@ -37,11 +35,8 @@ export class StatsController {
|
|||||||
if (distance_query.sum_distance) {
|
if (distance_query.sum_distance) {
|
||||||
distace += parseInt(distance_query.sum_distance)
|
distace += parseInt(distance_query.sum_distance)
|
||||||
}
|
}
|
||||||
|
|
||||||
let donations = await connection.getRepository(Donation).find({ relations: ['runner', 'runner.scans', 'runner.scans.track'] });
|
let donations = await connection.getRepository(Donation).find({ relations: ['runner', 'runner.scans', 'runner.scans.track'] });
|
||||||
const donors = await connection.getRepository(Donor).count();
|
return new ResponseStats(runners, teams, orgs, users, scans, donations, distace)
|
||||||
|
|
||||||
return new ResponseStats(runners, teams, orgs, users, scans, donations, distace, donors)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Get("/runners/distance")
|
@Get("/runners/distance")
|
||||||
|
@ -58,30 +58,12 @@ export class ResponseStats implements IResponse {
|
|||||||
@IsInt()
|
@IsInt()
|
||||||
total_donation: number;
|
total_donation: number;
|
||||||
|
|
||||||
/**
|
|
||||||
* The total donation count (cent).
|
|
||||||
*/
|
|
||||||
@IsInt()
|
|
||||||
total_donations: number;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The total donor count.
|
|
||||||
*/
|
|
||||||
@IsInt()
|
|
||||||
total_donors: number;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The average distance ran per runner.
|
* The average distance ran per runner.
|
||||||
*/
|
*/
|
||||||
@IsInt()
|
@IsInt()
|
||||||
average_distance: number;
|
average_distance: number;
|
||||||
|
|
||||||
/**
|
|
||||||
* The average donation per distance (cent).
|
|
||||||
*/
|
|
||||||
@IsInt()
|
|
||||||
average_donation: number;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a new stats response containing some basic statistics for a dashboard or public display.
|
* Creates a new stats response containing some basic statistics for a dashboard or public display.
|
||||||
* @param runners Array containing all runners - the following relations have to be resolved: scans, scans.track
|
* @param runners Array containing all runners - the following relations have to be resolved: scans, scans.track
|
||||||
@ -91,7 +73,7 @@ export class ResponseStats implements IResponse {
|
|||||||
* @param scans Array containing all scans - no relations have to be resolved.
|
* @param scans Array containing all scans - no relations have to be resolved.
|
||||||
* @param donations Array containing all donations - the following relations have to be resolved: runner, runner.scans, runner.scans.track
|
* @param donations Array containing all donations - the following relations have to be resolved: runner, runner.scans, runner.scans.track
|
||||||
*/
|
*/
|
||||||
public constructor(runners: number, teams: number, orgs: number, users: number, scans: number, donations: Donation[], distance: number, donors: number) {
|
public constructor(runners: number, teams: number, orgs: number, users: number, scans: number, donations: Donation[], distance: number) {
|
||||||
this.total_runners = runners;
|
this.total_runners = runners;
|
||||||
this.total_teams = teams;
|
this.total_teams = teams;
|
||||||
this.total_orgs = orgs;
|
this.total_orgs = orgs;
|
||||||
@ -99,9 +81,6 @@ export class ResponseStats implements IResponse {
|
|||||||
this.total_scans = scans;
|
this.total_scans = scans;
|
||||||
this.total_distance = distance;
|
this.total_distance = distance;
|
||||||
this.total_donation = donations.reduce((sum, current) => sum + current.amount, 0);
|
this.total_donation = donations.reduce((sum, current) => sum + current.amount, 0);
|
||||||
this.total_donations = donations.length;
|
|
||||||
this.average_donation = this.total_donation / this.total_donations
|
|
||||||
this.total_donors = donors;
|
|
||||||
this.average_distance = this.total_distance / this.total_runners;
|
this.average_distance = this.total_distance / this.total_runners;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user