40
src/models/DistanceDonation.ts
Normal file
40
src/models/DistanceDonation.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { IsInt, IsNotEmpty, IsObject, IsPositive } from "class-validator";
|
||||
import { Donation } from "./Donation";
|
||||
import { Runner } from "./Runner";
|
||||
|
||||
/**
|
||||
* Defines the DistanceDonation class.
|
||||
* For distanceDonations a donor pledges to donate a certain amount for each kilometer ran by a runner.
|
||||
*/
|
||||
export class DistanceDonation extends Donation {
|
||||
/**
|
||||
* The donation's associated runner.
|
||||
* Used as the source of the donation's distance.
|
||||
*/
|
||||
@IsObject()
|
||||
@IsNotEmpty()
|
||||
runner: Runner;
|
||||
|
||||
/**
|
||||
* The donation's amount donated per distance.
|
||||
* The amount the donor set to be donated per kilometer that the runner ran.
|
||||
*/
|
||||
@IsInt()
|
||||
@IsPositive()
|
||||
amountPerDistance: number;
|
||||
|
||||
/**
|
||||
* The donation's amount in cents (or whatever your currency's smallest unit is.).
|
||||
* Get's calculated from the runner's distance ran and the amount donated per kilometer.
|
||||
*/
|
||||
public get amount(): number {
|
||||
let calculatedAmount = 0;
|
||||
try {
|
||||
calculatedAmount = this.amountPerDistance * (this.runner.distance / 1000);
|
||||
} catch (error) {
|
||||
throw error;
|
||||
}
|
||||
return calculatedAmount;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user