All checks were successful
		
		
	
	continuous-integration/drone/pr Build is passing
				
			ref #193
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { IsInt, IsOptional, IsPositive } from 'class-validator';
 | |
| import { getConnection } from 'typeorm';
 | |
| import { DonorNotFoundError } from '../../../errors/DonorErrors';
 | |
| import { Donation } from '../../entities/Donation';
 | |
| import { Donor } from '../../entities/Donor';
 | |
| 
 | |
| /**
 | |
|  * This class is used to update a Donation entity (via put request).
 | |
|  */
 | |
| export abstract class UpdateDonation {
 | |
|     /**
 | |
|      * The updated donation'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;
 | |
| 
 | |
|     /**
 | |
|      * The updated donation's associated donor's id.
 | |
|      * This is important to link donations to donors.
 | |
|      */
 | |
|     @IsInt()
 | |
|     @IsPositive()
 | |
|     donor: number;
 | |
| 
 | |
|     /**
 | |
|      * The donation's paid amount in the smalles unit of your currency (default: euro cent).
 | |
|      */
 | |
|     @IsInt()
 | |
|     @IsOptional()
 | |
|     paidAmount?: number;
 | |
| 
 | |
|     /**
 | |
|      * Creates a new Donation entity from this.
 | |
|      */
 | |
|     public abstract update(donation: Donation): Promise<Donation>;
 | |
| 
 | |
|     /**
 | |
|      * Gets a donor based on the donor id provided via this.donor.
 | |
|      */
 | |
|     public async getDonor(): Promise<Donor> {
 | |
|         const donor = await getConnection().getRepository(Donor).findOne({ id: this.donor });
 | |
|         if (!donor) {
 | |
|             throw new DonorNotFoundError();
 | |
|         }
 | |
|         return donor;
 | |
|     }
 | |
| } |