import { IsInt, IsNotEmpty, IsPositive } from 'class-validator';
import { DistanceDonation } from '../entities/DistanceDonation';
import { ResponseObjectType } from '../enums/ResponseObjectType';
import { IResponse } from './IResponse';
import { ResponseSelfServiceDonor } from './ResponseSelfServiceDonor';

/**
 * Defines the runner selfservice donation response.
 * Why? B/C runner's are not allowed to view all information available to admin users.
*/
export class ResponseSelfServiceDonation implements IResponse {
    /**
    * The responseType.
    * This contains the type of class/entity this response contains.
    */
    responseType: ResponseObjectType = ResponseObjectType.SELFSERVICEDONATION;

    /**
     * The donation's donor.
     */
    @IsNotEmpty()
    donor: ResponseSelfServiceDonor;

    /**
     * The donation's amount in the smalles unit of your currency (default: euro cent).
     */
    @IsInt()
    amount: number;

    /**
     * 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;

    public constructor(donation: DistanceDonation) {
        this.donor = new ResponseSelfServiceDonor(donation.donor);
        this.amountPerDistance = donation.amountPerDistance;
        this.amount = donation.amount;
    }
}