43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import { IsBoolean, IsObject, IsOptional } from 'class-validator';
|
|
import * as uuid from 'uuid';
|
|
import { Address } from '../../entities/Address';
|
|
import { RunnerOrganization } from '../../entities/RunnerOrganization';
|
|
import { CreateRunnerGroup } from './CreateRunnerGroup';
|
|
|
|
|
|
/**
|
|
* This classed is used to create a new RunnerOrganization entity from a json body (post request).
|
|
*/
|
|
export class CreateRunnerOrganization extends CreateRunnerGroup {
|
|
/**
|
|
* The new organization's address.
|
|
*/
|
|
@IsOptional()
|
|
@IsObject()
|
|
address?: Address;
|
|
|
|
/**
|
|
* Is registration enabled for the new organization?
|
|
*/
|
|
@IsOptional()
|
|
@IsBoolean()
|
|
registrationEnabled?: boolean = false;
|
|
|
|
/**
|
|
* Creates a new RunnerOrganization entity from this.
|
|
*/
|
|
public async toEntity(): Promise<RunnerOrganization> {
|
|
let newRunnerOrganization: RunnerOrganization = new RunnerOrganization();
|
|
|
|
newRunnerOrganization.name = this.name;
|
|
newRunnerOrganization.contact = await this.getContact();
|
|
newRunnerOrganization.address = this.address;
|
|
Address.validate(newRunnerOrganization.address);
|
|
|
|
if (this.registrationEnabled) {
|
|
newRunnerOrganization.key = uuid.v4().toUpperCase();
|
|
}
|
|
|
|
return newRunnerOrganization;
|
|
}
|
|
} |