import { IsInt, IsPositive } from "class-validator";
import { ChildEntity, Column } from "typeorm";
import { ResponseDonation } from '../responses/ResponseDonation';
import { Donation } from "./Donation";

/**
 * Defines the FixedDonation entity.
 * In the past there was no easy way to track fixed donations (eg. for creating donation receipts).
*/
@ChildEntity()
export class FixedDonation extends Donation {

  /**
   * The donation's amount in cents (or whatever your currency's smallest unit is.).
   * This is the "real" value used by fixed donations.
   */
  @Column()
  @IsInt()
  @IsPositive()
  private _amount: number;

  /**
   * The donation's amount in cents (or whatever your currency's smallest unit is.).
   */
  @IsInt()
  @IsPositive()
  public get amount(): number {
    return this._amount;
  }

  /**
   * The donation's amount in cents (or whatever your currency's smallest unit is.).
   */
  public set amount(value: number) {
    this._amount = value;
  }

  /**
   * Turns this entity into it's response class.
   */
  public toResponse(): ResponseDonation {
    return new ResponseDonation(this);
  }
}