41 lines
1.2 KiB
TypeScript
41 lines
1.2 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 create a new Donation entity from a json body (post request).
|
|
*/
|
|
export abstract class CreateDonation {
|
|
/**
|
|
* The 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 toEntity(): 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;
|
|
}
|
|
} |