39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { IsBoolean, IsOptional } from 'class-validator';
 | |
| import { DonorReceiptAddressNeededError } from '../../../errors/DonorErrors';
 | |
| import { Address } from '../../entities/Address';
 | |
| 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 toEntity(): Promise<Donor> {
 | |
|         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 = this.address;
 | |
|         Address.validate(newDonor.address);
 | |
|         if (this.receiptNeeded == true && Address.isValidAddress(newDonor.address) == false) {
 | |
|             throw new DonorReceiptAddressNeededError()
 | |
|         }
 | |
| 
 | |
|         return newDonor;
 | |
|     }
 | |
| } |