export class Gift {
    private giftId: number;
    private costDiamonds: number;
    private name: string;

    /**
     * Create a new Gift object
     * @param data { giftId: number, costDiamonds: number, name: string}
     */
    constructor(data: { giftId: number, costDiamonds: number, name: string }) {
        this.giftId = data.giftId;
        this.costDiamonds = data.costDiamonds;
        this.name = data.name;
    }

    /**
     * Get the unique identifier for the gift
     * @returns {number} The unique identifier for the gift
     */
    public getGiftId(): number {
        return this.giftId;
    }

    /**
     * Get the cost of the gift in diamonds
     * @returns {number} The cost of the gift in diamonds
     */
    public getCostDiamonds(): number {
        return this.costDiamonds;
    }

    /**
     * Get the name of the gift
     * @returns {string} The name of the gift
     */
    public getName(): string {
        return this.name;
    }

    /**
     * Get the estimated value of the diamonds in euros
     * @param {boolean} withdrawableValue The withdrawable value of the gift for creators, otherwise the original value
     * @returns {number} The value of the gift in euros
     */
    public getEstimatedValueInEuro(withdrawableValue: boolean = true): number {
        let leftValue;
        if(withdrawableValue) {
            leftValue = this.getCostDiamonds() / 2;
        } else {
            leftValue = this.getCostDiamonds();
        }
        let valueInDollars = leftValue;
        let valueInEuroCent = valueInDollars * 0.95;
        let valueInEuro = valueInEuroCent / 100;
        return Math.ceil(valueInEuro * 100) / 100;
    }
}