diff --git a/src/models/entities/DistanceDonation.ts b/src/models/entities/DistanceDonation.ts index 436dc3f..a9b323e 100644 --- a/src/models/entities/DistanceDonation.ts +++ b/src/models/entities/DistanceDonation.ts @@ -1,5 +1,6 @@ import { IsInt, IsNotEmpty, IsPositive } from "class-validator"; import { ChildEntity, Column, ManyToOne } from "typeorm"; +import { ResponseDistanceDonation } from '../responses/ResponseDistanceDonation'; import { Donation } from "./Donation"; import { Runner } from "./Runner"; @@ -31,7 +32,7 @@ export class DistanceDonation extends Donation { * Get's calculated from the runner's distance ran and the amount donated per kilometer. */ public get amount(): number { - let calculatedAmount = -1; + let calculatedAmount = 0; try { calculatedAmount = this.amountPerDistance * (this.runner.distance / 1000); } catch (error) { @@ -43,7 +44,7 @@ export class DistanceDonation extends Donation { /** * Turns this entity into it's response class. */ - public toResponse(): DistanceDonation { - return null; + public toResponse(): ResponseDistanceDonation { + return new ResponseDistanceDonation(this); } } diff --git a/src/models/responses/ResponseDistanceDonation.ts b/src/models/responses/ResponseDistanceDonation.ts new file mode 100644 index 0000000..388ece0 --- /dev/null +++ b/src/models/responses/ResponseDistanceDonation.ts @@ -0,0 +1,35 @@ +import { IsInt, IsObject, IsPositive } from 'class-validator'; +import { DistanceDonation } from '../entities/DistanceDonation'; +import { ResponseDonation } from './ResponseDonation'; +import { ResponseRunner } from './ResponseRunner'; + +/** + * Defines the distance donation response. +*/ +export class ResponseDistanceDonation extends ResponseDonation { + + /** + * The donation's associated runner. + * Used as the source of the donation's distance. + */ + @IsObject() + runner: ResponseRunner; + + /** + * 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; + + /** + * Creates a ResponseDistanceDonation object from a scan. + * @param donation The distance donation the response shall be build for. + */ + public constructor(donation: DistanceDonation) { + super(donation); + this.runner = donation.runner.toResponse(); + this.amountPerDistance = donation.amountPerDistance; + } +}