diff --git a/src/errors/DonorErrors.ts b/src/errors/DonorErrors.ts index 94a844a..0cd534e 100644 --- a/src/errors/DonorErrors.ts +++ b/src/errors/DonorErrors.ts @@ -22,4 +22,15 @@ export class DonorIdsNotMatchingError extends NotAcceptableError { @IsString() message = "The ids don't match! \n And if you wanted to change a donor's id: This isn't allowed!" +} + +/** + * Error to throw when a donor needs a receipt, but no address is associated with them. + */ +export class DonorReceiptAddressNeededError extends NotAcceptableError { + @IsString() + name = "DonorReceiptAddressNeededError" + + @IsString() + message = "An address is needed to create a receipt for a donor. \n You didn't provide one." } \ No newline at end of file diff --git a/src/models/actions/CreateDonor.ts b/src/models/actions/CreateDonor.ts index ec7c983..bf4e206 100644 --- a/src/models/actions/CreateDonor.ts +++ b/src/models/actions/CreateDonor.ts @@ -1,4 +1,5 @@ import { IsBoolean, IsOptional } from 'class-validator'; +import { DonorReceiptAddressNeededError } from '../../errors/DonorErrors'; import { Donor } from '../entities/Donor'; import { CreateParticipant } from './CreateParticipant'; @@ -25,8 +26,12 @@ export class CreateDonor extends CreateParticipant { newDonor.lastname = this.lastname; newDonor.phone = this.phone; newDonor.email = this.email; - newDonor.receiptNeeded = this.receiptNeeded; newDonor.address = await this.getAddress(); + newDonor.receiptNeeded = this.receiptNeeded; + + if (this.receiptNeeded == true && this.email == "" && this.address == null) { + throw new DonorReceiptAddressNeededError() + } return newDonor; }