69 lines
1.8 KiB
TypeScript
69 lines
1.8 KiB
TypeScript
import { IsInt, IsNotEmpty, IsPositive } from "class-validator";
|
|
import { Donation } from '../entities/Donation';
|
|
import { DonationStatus } from '../enums/DonationStatus';
|
|
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
|
import { IResponse } from './IResponse';
|
|
import { ResponseDonor } from './ResponseDonor';
|
|
|
|
/**
|
|
* Defines the donation response.
|
|
*/
|
|
export class ResponseDonation implements IResponse {
|
|
|
|
/**
|
|
* The responseType.
|
|
* This contains the type of class/entity this response contains.
|
|
*/
|
|
responseType: ResponseObjectType = ResponseObjectType.DONATION;
|
|
|
|
/**
|
|
* The donation's payment status.
|
|
* Provides you with a quick indicator of it's payment status.
|
|
*/
|
|
status: DonationStatus;
|
|
|
|
/**
|
|
* The donation's id.
|
|
*/
|
|
@IsInt()
|
|
@IsPositive()
|
|
id: number;
|
|
|
|
/**
|
|
* The donation's donor.
|
|
*/
|
|
@IsNotEmpty()
|
|
donor: ResponseDonor;
|
|
|
|
/**
|
|
* The donation's amount in the smalles unit of your currency (default: euro cent).
|
|
*/
|
|
@IsInt()
|
|
amount: number;
|
|
|
|
/**
|
|
* The donation's paid amount in the smalles unit of your currency (default: euro cent).
|
|
*/
|
|
@IsInt()
|
|
paidAmount: number;
|
|
|
|
/**
|
|
* Creates a ResponseDonation object from a scan.
|
|
* @param donation The donation the response shall be build for.
|
|
*/
|
|
public constructor(donation: Donation) {
|
|
this.id = donation.id;
|
|
if (donation.donor) {
|
|
this.donor = donation.donor.toResponse();
|
|
}
|
|
this.amount = donation.amount;
|
|
this.paidAmount = donation.paidAmount || 0;
|
|
if (this.paidAmount < this.amount) {
|
|
this.status = DonationStatus.OPEN;
|
|
}
|
|
else {
|
|
this.status = DonationStatus.PAID;
|
|
}
|
|
}
|
|
}
|