import { IsInt, IsString } from "class-validator"; import { RunnerOrganization } from '../entities/RunnerOrganization'; import { ResponseObjectType } from '../enums/ResponseObjectType'; import { IResponse } from './IResponse'; /** * Defines the org stats response. * This differs from the normal org responce. */ export class ResponseStatsOrgnisation implements IResponse { /** * The responseType. * This contains the type of class/entity this response contains. */ responseType: ResponseObjectType = ResponseObjectType.STATSORGANIZATION; /** * The orgs's id. */ @IsInt() id: number; /** * The orgs's name. */ @IsString() name: string; /** * The orgs's runner's currently ran distance in meters. */ @IsInt() distance: number; /** * The orgs's currently collected donations. */ @IsInt() donationAmount: number; /** * Creates a new organization stats response from a organization * @param org The organization whoes response shall be generated - the following relations have to be resolved: runners, runners.scans, runners.distanceDonations, runners.scans.track, teams, teams.runners, teams.runners.scans, teams.runners.distanceDonations, teams.runners.scans.track */ public constructor(org: RunnerOrganization) { this.name = org.name; this.id = org.id; try { this.distance = org.distance; } catch { this.distance = -1; } try { this.donationAmount = org.distanceDonationAmount; } catch { this.donationAmount = -1; } } }