import { IsInt, IsNotEmpty, IsPositive } from "class-validator";
import { Donation } from '../entities/Donation';
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 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;

    /**
     * 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.donor = donation.donor.toResponse();
        this.amount = donation.amount;
    }
}
