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 payed amount in the smalles unit of your currency (default: euro cent).
|
|
*/
|
|
@IsInt()
|
|
@IsOptional()
|
|
payedAmount?: 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;
|
|
}
|
|
} |