From 3af76a53e3156bdc2d1d3ade6ff940db9d7b24b5 Mon Sep 17 00:00:00 2001 From: Nicolai Ort Date: Fri, 5 Feb 2021 17:59:26 +0100 Subject: [PATCH] =?UTF-8?q?first=20working=20pdf=20generation=20from=20cla?= =?UTF-8?q?ss=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ref #5 --- src/PdfCreator.ts | 2 +- src/controllers/PdfController.ts | 8 +++++--- src/models/Runner.ts | 16 ++++++++++++++++ src/models/RunnerGroup.ts | 8 ++++---- 4 files changed, 26 insertions(+), 8 deletions(-) diff --git a/src/PdfCreator.ts b/src/PdfCreator.ts index 5e79647..57f0610 100644 --- a/src/PdfCreator.ts +++ b/src/PdfCreator.ts @@ -24,7 +24,7 @@ export class PdfCreator { .replace("{{runner_id}}", runner.id.toString()) .replace("{{runner_firstname}}", runner.firstname) .replace("{{runner_lastname}}", runner.lastname) - .replace("{{runner_groupname}}", runner.group.id.toString()); + .replace("{{runner_groupname}}", runner.group.name); return await this.renderPdf(template, { format: "A5", landscape: true }); } diff --git a/src/controllers/PdfController.ts b/src/controllers/PdfController.ts index 6fc7116..0b80a41 100644 --- a/src/controllers/PdfController.ts +++ b/src/controllers/PdfController.ts @@ -1,5 +1,6 @@ -import { Body, Get, JsonController, Res } from 'routing-controllers'; +import { Body, JsonController, Post, Res } from 'routing-controllers'; import { OpenAPI } from 'routing-controllers-openapi'; +import { Runner } from '../models/Runner'; import { PdfCreator } from '../PdfCreator'; @JsonController() @@ -9,9 +10,10 @@ export class PdfController { this.pdf = new PdfCreator(); } - @Get('/contracts') + @Post('/contracts') @OpenAPI({ description: "Generate Sponsoring contract pdfs from runner objects." }) - async generateContracts(@Body({ validate: true }) runner: any, @Res() res: any) { + async generateContracts(@Body({ validate: true }) runner: Runner, @Res() res: any) { + console.log(runner) const contracts = await this.pdf.generateSponsoringContract(runner); res.setHeader('content-type', 'application/pdf'); return await contracts; diff --git a/src/models/Runner.ts b/src/models/Runner.ts index f7968a8..e1c0efb 100644 --- a/src/models/Runner.ts +++ b/src/models/Runner.ts @@ -1,6 +1,18 @@ import { IsInt, + + IsNotEmpty, + + + IsObject, + + + + IsOptional, + + IsPositive, + IsString } from "class-validator"; import { RunnerGroup } from './RunnerGroup'; @@ -13,24 +25,28 @@ export class Runner { * The runner's id. */ @IsInt() + @IsPositive() id: number; /** * The runner's first name. */ @IsString() + @IsNotEmpty() firstname: string; /** * The runner's middle name. */ @IsString() + @IsOptional() middlename?: string; /** * The runner's last name. */ @IsString() + @IsNotEmpty() lastname: string; /** diff --git a/src/models/RunnerGroup.ts b/src/models/RunnerGroup.ts index f50a179..e84053f 100644 --- a/src/models/RunnerGroup.ts +++ b/src/models/RunnerGroup.ts @@ -1,15 +1,15 @@ -import { IsInt, IsNotEmpty, IsObject, IsOptional, IsString } from "class-validator"; +import { IsInt, IsNotEmpty, IsObject, IsOptional, IsPositive, IsString } from "class-validator"; /** * Defines the runner group class - a simplified version of the backend's ResponseRunnerTeam/-Organization */ -export abstract class RunnerGroup { +export class RunnerGroup { /** * The group's id. */ @IsInt() - @IsNotEmpty() - id: number;; + @IsPositive() + id: number; /** * The group's name.