diff --git a/src/controllers/DonorController.ts b/src/controllers/DonorController.ts index 6b8fc7b..308825a 100644 --- a/src/controllers/DonorController.ts +++ b/src/controllers/DonorController.ts @@ -3,7 +3,7 @@ import { OpenAPI, ResponseSchema } from 'routing-controllers-openapi'; import { getConnectionManager, Repository } from 'typeorm'; import { DonorIdsNotMatchingError, DonorNotFoundError } from '../errors/DonorErrors'; import { RunnerIdsNotMatchingError } from '../errors/RunnerErrors'; -import { CreateRunner } from '../models/actions/CreateRunner'; +import { CreateDonor } from '../models/actions/CreateDonor'; import { UpdateRunner } from '../models/actions/UpdateRunner'; import { Donor } from '../models/entities/Donor'; import { ResponseDonor } from '../models/responses/ResponseDonor'; @@ -50,16 +50,16 @@ export class DonorController { @Authorized("DONOR:CREATE") @ResponseSchema(ResponseDonor) @OpenAPI({ description: 'Create a new runner.
Please remeber to provide the runner\'s group\'s id.' }) - async post(@Body({ validate: true }) createRunner: CreateRunner) { - let runner; + async post(@Body({ validate: true }) createRunner: CreateDonor) { + let donor; try { - runner = await createRunner.toRunner(); + donor = await createRunner.toDonor(); } catch (error) { throw error; } - runner = await this.donorRepository.save(runner) - return new ResponseDonor(await this.donorRepository.findOne(runner, { relations: ['scans', 'group'] })); + donor = await this.donorRepository.save(donor) + return new ResponseDonor(await this.donorRepository.findOne(donor)); } @Put('/:id') diff --git a/src/models/actions/CreateDonor.ts b/src/models/actions/CreateDonor.ts new file mode 100644 index 0000000..8520f5a --- /dev/null +++ b/src/models/actions/CreateDonor.ts @@ -0,0 +1,33 @@ +import { IsBoolean, IsOptional } from 'class-validator'; +import { Donor } from '../entities/Donor'; +import { CreateParticipant } from './CreateParticipant'; + +/** + * This classed is used to create a new Donor entity from a json body (post request). + */ +export class CreateDonor extends CreateParticipant { + + /** + * Does this donor need a receipt? + */ + @IsBoolean() + @IsOptional() + receiptNeeded: boolean = false; + + /** + * Creates a new Donor entity from this. + */ + public async toDonor(): Promise { + let newDonor: Donor = new Donor(); + + newDonor.firstname = this.firstname; + newDonor.middlename = this.middlename; + newDonor.lastname = this.lastname; + newDonor.phone = this.phone; + newDonor.email = this.email; + newDonor.receiptNeeded = this.receiptNeeded; + newDonor.address = await this.getAddress(); + + return newDonor; + } +} \ No newline at end of file