<?php

namespace App\Classes\Modules\Vouchers\DataTransferObjects;


use App\Classes\General\Interfaces\DataTransferObject;
use App\Models\User;

class CreateVoucherifyOrderObject implements DataTransferObject
{
    /** @var User  */
    private $employee;

    /** @var int */
    private $companyId;

    /** @var int */
    private $ownerId;

    /** @var float */
    private $amount;

    /** @var float */
    private $serviceCharge;

    /** @var bool */
    private $isNoVoucher;

    /** @var bool */
    private $isTopUpWallet;

    /**
     * CreateVoucherifyOrderObject constructor.
     * @param User $employee
     * @param int $companyId
     * @param int $ownerId
     * @param float $amount
     * @param float $serviceCharge
     * @param bool $isNoVoucher
     * @param bool $isTopUpWallet
     */
    public function __construct(User $employee, int $companyId, int $ownerId, float $amount, float $serviceCharge, bool $isNoVoucher = false, bool $isTopUpWallet = false)
    {
        $this->employee = $employee;
        $this->companyId = $companyId;
        $this->ownerId = $ownerId;
        $this->amount = $amount;
        $this->serviceCharge = $serviceCharge;
        $this->isNoVoucher = $isNoVoucher;
        $this->isTopUpWallet = $isTopUpWallet;
    }

    /**
     * @return int
     */
    public function getCompanyId(): int
    {
        return $this->companyId;
    }

    /**
     * @return int
     */
    public function getOwnerId(): int
    {
        return $this->ownerId;
    }

    /**
     * @return float
     */
    public function getAmount(): float
    {
        return $this->amount;
    }

    /**
     * @return float
     */
    public function getServiceCharge(): float
    {
        return $this->serviceCharge;
    }

    /**
     * @return User
     */
    public function getEmployee(): User
    {
        return $this->employee;
    }

    /**
     * @return bool
     */
    public function getIsNoVoucher(): bool
    {
        return $this->isNoVoucher;
    }

    /**
     * @return bool
     */
    public function getIsTopUpWallet(): bool
    {
        return $this->isTopUpWallet;
    }
}
