diff --git a/src/models/actions/create/CreateRunnerOrganisation.ts b/src/models/actions/create/CreateRunnerOrganisation.ts index e99d851..1e3b57b 100644 --- a/src/models/actions/create/CreateRunnerOrganisation.ts +++ b/src/models/actions/create/CreateRunnerOrganisation.ts @@ -1,8 +1,10 @@ -import { IsObject, IsOptional } from 'class-validator'; +import { IsBoolean, IsObject, IsOptional } from 'class-validator'; +import * as uuid from 'uuid'; import { Address } from '../../entities/Address'; import { RunnerOrganisation } from '../../entities/RunnerOrganisation'; import { CreateRunnerGroup } from './CreateRunnerGroup'; + /** * This classed is used to create a new RunnerOrganisation entity from a json body (post request). */ @@ -14,6 +16,13 @@ export class CreateRunnerOrganisation extends CreateRunnerGroup { @IsObject() address?: Address; + /** + * Is registration enabled for the new organisation? + */ + @IsOptional() + @IsBoolean() + registrtionEnabled?: boolean = false; + /** * Creates a new RunnerOrganisation entity from this. */ @@ -25,6 +34,10 @@ export class CreateRunnerOrganisation extends CreateRunnerGroup { newRunnerOrganisation.address = this.address; Address.validate(newRunnerOrganisation.address); + if (this.registrtionEnabled) { + newRunnerOrganisation.key = uuid.v4().toUpperCase(); + } + return newRunnerOrganisation; } } \ No newline at end of file diff --git a/src/models/actions/update/UpdateRunnerOrganisation.ts b/src/models/actions/update/UpdateRunnerOrganisation.ts index b34bc8f..4d3190c 100644 --- a/src/models/actions/update/UpdateRunnerOrganisation.ts +++ b/src/models/actions/update/UpdateRunnerOrganisation.ts @@ -1,4 +1,5 @@ -import { IsInt, IsObject, IsOptional } from 'class-validator'; +import { IsBoolean, IsInt, IsNotEmpty, IsObject, IsOptional } from 'class-validator'; +import * as uuid from 'uuid'; import { Address } from '../../entities/Address'; import { RunnerOrganisation } from '../../entities/RunnerOrganisation'; import { CreateRunnerGroup } from '../create/CreateRunnerGroup'; @@ -22,6 +23,13 @@ export class UpdateRunnerOrganisation extends CreateRunnerGroup { @IsObject() address?: Address; + /** + * Is registration enabled for the updated organisation? + */ + @IsNotEmpty() + @IsBoolean() + registrtionEnabled: boolean; + /** * Updates a provided RunnerOrganisation entity based on this. */ @@ -33,6 +41,13 @@ export class UpdateRunnerOrganisation extends CreateRunnerGroup { else { organisation.address = this.address; } Address.validate(organisation.address); + if (this.registrtionEnabled) { + organisation.key = uuid.v4().toUpperCase(); + } + else { + organisation.key = null; + } + return organisation; } } \ No newline at end of file diff --git a/src/models/responses/ResponseRunnerOrganisation.ts b/src/models/responses/ResponseRunnerOrganisation.ts index 69ccaf1..3040a74 100644 --- a/src/models/responses/ResponseRunnerOrganisation.ts +++ b/src/models/responses/ResponseRunnerOrganisation.ts @@ -1,8 +1,13 @@ import { IsArray, + IsBase64, + + IsBoolean, + IsObject, - IsOptional + IsOptional, + IsString } from "class-validator"; import { Address } from '../entities/Address'; import { RunnerOrganisation } from '../entities/RunnerOrganisation'; @@ -27,6 +32,22 @@ export class ResponseRunnerOrganisation extends ResponseRunnerGroup { @IsArray() teams: RunnerTeam[]; + /** + * The organisation's registration key. + * If registration is disabled this is null. + */ + @IsString() + @IsOptional() + @IsBase64() + registrationKey?: string; + + /** + * Is registration enabled for the organisation? + */ + @IsOptional() + @IsBoolean() + registrtionEnabled?: boolean = true; + /** * Creates a ResponseRunnerOrganisation object from a runnerOrganisation. * @param org The runnerOrganisation the response shall be build for. @@ -35,5 +56,7 @@ export class ResponseRunnerOrganisation extends ResponseRunnerGroup { super(org); this.address = org.address; this.teams = org.teams; + if (!org.key) { this.registrtionEnabled = false; } + else { this.registrationKey = Buffer.from(org.key).toString('base64'); } } }