From c2909082a2dbb38041ae0fc695bd0fa1451b39ff Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Wed, 17 Feb 2021 18:57:21 +0100 Subject: [PATCH] Now manually parsing runnergroup full names ref #18 --- src/controllers/PdfController.ts | 32 +++++++++++++++++++++++++++++++- src/models/Runner.ts | 8 +++++++- src/models/RunnerGroup.ts | 2 ++ 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/controllers/PdfController.ts b/src/controllers/PdfController.ts index f3a1009..74659f3 100644 --- a/src/controllers/PdfController.ts +++ b/src/controllers/PdfController.ts @@ -18,7 +18,7 @@ export class PdfController { @Post('/contracts') @OpenAPI({ description: "Generate Sponsoring contract pdfs from runner objects.
You can choose your prefered locale by passing the 'locale' query-param.
If you provide more than 100 runenrs this could take a moment or two (we tested up to 1000 runners in about 70sec so far)." }) - async generateContracts(@Body({ validate: true, options: { limit: "500mb" } }) runners: Runner | Runner[], @Res() res: any, @QueryParam("locale") locale: string, @QueryParam("codeformat") codeformat: string) { + async generateContracts(@Body({ validate: true, options: { limit: "500mb" } }) runners: Runner[], @Res() res: any, @QueryParam("locale") locale: string, @QueryParam("codeformat") codeformat: string) { if (!this.initialized) { await this.pdf.init(); this.initialized = true; @@ -26,6 +26,7 @@ export class PdfController { if (!Array.isArray(runners)) { runners = [runners]; } + runners = this.mapRunnerGroupNames(runners) const contracts = await this.pdf.generateSponsoringContract(runners, locale, codeformat); res.setHeader('content-type', 'application/pdf'); return contracts; @@ -41,8 +42,37 @@ export class PdfController { if (!Array.isArray(cards)) { cards = [cards]; } + cards = this.mapCardGroupNames(cards); const contracts = await this.pdf.generateRunnerCards(cards, locale); res.setHeader('content-type', 'application/pdf'); return contracts; } + + private mapRunnerGroupNames(runners: Runner[]): Runner[] { + let response = new Array(); + for (let runner of runners) { + if (!runner.group.parentGroup) { + runner.group.fullName = runner.group.name; + } + else { + runner.group.fullName = `${runner.group.parentGroup.name}/${runner.group.name}`; + } + response.push(runner) + } + return response; + } + + private mapCardGroupNames(cards: RunnerCard[]): RunnerCard[] { + let response = new Array(); + for (let card of cards) { + if (!card.runner.group.parentGroup) { + card.runner.group.fullName = card.runner.group.name; + } + else { + card.runner.group.fullName = `${card.runner.group.parentGroup.name}/${card.runner.group.name}`; + } + response.push(card) + } + return response; + } } diff --git a/src/models/Runner.ts b/src/models/Runner.ts index e1c0efb..60a1c8b 100644 --- a/src/models/Runner.ts +++ b/src/models/Runner.ts @@ -13,7 +13,8 @@ import { IsPositive, - IsString + IsString, + ValidateNested } from "class-validator"; import { RunnerGroup } from './RunnerGroup'; @@ -53,6 +54,7 @@ export class Runner { * The runner's group. */ @IsObject() + @ValidateNested() group: RunnerGroup; /** @@ -60,4 +62,8 @@ export class Runner { */ @IsInt() distance: number; + + constructor() { + console.log("called") + } } diff --git a/src/models/RunnerGroup.ts b/src/models/RunnerGroup.ts index 0b9b109..cd560f9 100644 --- a/src/models/RunnerGroup.ts +++ b/src/models/RunnerGroup.ts @@ -25,4 +25,6 @@ export class RunnerGroup { @IsObject() @IsOptional() parentGroup?: RunnerGroup; + + fullName: string; }