import { IsInt, IsString } from "class-validator";
import { Donor } from '../entities/Donor';
import { ResponseObjectType } from '../enums/ResponseObjectType';
import { IResponse } from './IResponse';

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

    /**
     * The participant's id.
     */
    @IsInt()
    id: number;

    /**
     * The participant's first name.
     */
    @IsString()
    firstname: string;

    /**
     * The participant's middle name.
     */
    @IsString()
    middlename?: string;

    /**
     * The participant's last name.
     */
    @IsString()
    lastname: string;

    /**
     * Creates a ResponseSelfServiceDonor object from a runner.
     * @param donor The donor the response shall be build for.
     */
    public constructor(donor: Donor) {
        this.id = donor.id;
        this.firstname = donor.firstname;
        this.middlename = donor.middlename;
        this.lastname = donor.lastname;
    }
}
