34 lines
998 B
TypeScript
34 lines
998 B
TypeScript
import { IsInt, 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.
|
|
* This is important to link donations to donors.
|
|
*/
|
|
@IsInt()
|
|
@IsPositive()
|
|
donor: 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;
|
|
}
|
|
} |