46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { IsBoolean, IsInt, IsOptional } from 'class-validator';
|
|
import { DonorReceiptAddressNeededError } from '../../../errors/DonorErrors';
|
|
import { Address } from '../../entities/Address';
|
|
import { Donor } from '../../entities/Donor';
|
|
import { CreateParticipant } from '../create/CreateParticipant';
|
|
|
|
/**
|
|
* This class is used to update a Donor entity (via put request).
|
|
*/
|
|
export class UpdateDonor extends CreateParticipant {
|
|
|
|
/**
|
|
* The updated donor's id.
|
|
* This shouldn't have changed but it is here in case anyone ever wants to enable id changes (whyever they would want to).
|
|
*/
|
|
@IsInt()
|
|
id: number;
|
|
|
|
/**
|
|
* Does the updated donor need a receipt?
|
|
*/
|
|
@IsBoolean()
|
|
@IsOptional()
|
|
receiptNeeded?: boolean;
|
|
|
|
|
|
/**
|
|
* Updates a provided Donor entity based on this.
|
|
*/
|
|
public async update(donor: Donor): Promise<Donor> {
|
|
donor.firstname = this.firstname;
|
|
donor.middlename = this.middlename;
|
|
donor.lastname = this.lastname;
|
|
donor.phone = this.phone;
|
|
donor.email = this.email;
|
|
donor.receiptNeeded = this.receiptNeeded;
|
|
if (!this.address) { donor.address.reset(); }
|
|
else { donor.address = this.address; }
|
|
Address.validate(donor.address);
|
|
if (this.receiptNeeded == true && Address.isValidAddress(donor.address) == false) {
|
|
throw new DonorReceiptAddressNeededError()
|
|
}
|
|
|
|
return donor;
|
|
}
|
|
} |