feat(donations): Implement response type to indicate possible missing donor
This commit is contained in:
58
src/models/responses/ResponseAnonymousDonation.ts
Normal file
58
src/models/responses/ResponseAnonymousDonation.ts
Normal file
@@ -0,0 +1,58 @@
|
||||
import { IsInt, IsPositive } from "class-validator";
|
||||
import { Donation } from '../entities/Donation';
|
||||
import { DonationStatus } from '../enums/DonationStatus';
|
||||
import { ResponseObjectType } from '../enums/ResponseObjectType';
|
||||
import { IResponse } from './IResponse';
|
||||
|
||||
/**
|
||||
* Defines the donation response.
|
||||
*/
|
||||
export class ResponseAnonymousDonation 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 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;
|
||||
this.amount = donation.amount;
|
||||
this.paidAmount = donation.paidAmount || 0;
|
||||
if (this.paidAmount < this.amount) {
|
||||
this.status = DonationStatus.OPEN;
|
||||
}
|
||||
else {
|
||||
this.status = DonationStatus.PAID;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user