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