import { IsInt, IsObject, IsOptional } from 'class-validator'; import { getConnectionManager } from 'typeorm'; import { ParticipantOnlyOneAddressAllowedError } from '../../errors/ParticipantErrors'; import { Address } from '../entities/Address'; import { RunnerOrganisation } from '../entities/RunnerOrganisation'; import { CreateAddress } from './CreateAddress'; import { CreateRunnerGroup } from './CreateRunnerGroup'; export class CreateRunnerOrganisation extends CreateRunnerGroup { /** * The new participant's address's id. * Optional - please provide either addressId or address. */ @IsInt() @IsOptional() addressId?: number; /** * The new participant's address. * Optional - please provide either addressId or address. */ @IsObject() @IsOptional() address?: CreateAddress; /** * Creates a Participant entity from this. */ public async getAddress(): Promise
{ let address: Address; if (this.addressId !== undefined && this.address !== undefined) { throw new ParticipantOnlyOneAddressAllowedError } if (this.addressId === undefined && this.address === undefined) { return null; } if (this.addressId) { return await getConnectionManager().get().getRepository(Address).findOne({ id: this.addressId }); } return this.address.toAddress(); } /** * Creates a RunnerOrganisation entity from this. */ public async toRunnerOrganisation(): Promise { let newRunnerOrganisation: RunnerOrganisation = new RunnerOrganisation(); newRunnerOrganisation.name = this.name; newRunnerOrganisation.contact = await this.getContact(); newRunnerOrganisation.address = await this.getAddress(); return newRunnerOrganisation; } }