<?php

namespace dgsoft\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for GuaranteeAccepted StructType
 * @package Dg
 * @subpackage Structs
 */
class DgGuaranteeAccepted extends DgPaymentFormType
{
    /**
     * The Default
     * @var bool
     */
    public $Default;
    /**
     * The NoCardHolderInfoReqInd
     * @var bool
     */
    public $NoCardHolderInfoReqInd;
    /**
     * The NameReqInd
     * @var bool
     */
    public $NameReqInd;
    /**
     * The AddressReqInd
     * @var bool
     */
    public $AddressReqInd;
    /**
     * The PhoneReqInd
     * @var bool
     */
    public $PhoneReqInd;
    /**
     * The InterbankNbrReqInd
     * @var bool
     */
    public $InterbankNbrReqInd;
    /**
     * The BookingSourceAllowedInd
     * @var bool
     */
    public $BookingSourceAllowedInd;
    /**
     * The CorpDiscountNbrAllowedInd
     * @var bool
     */
    public $CorpDiscountNbrAllowedInd;
    /**
     * The GuaranteeTypeCode
     * @var string
     */
    public $GuaranteeTypeCode;
    /**
     * The GuaranteeID
     * @var string
     */
    public $GuaranteeID;
    /**
     * Constructor method for GuaranteeAccepted
     * @uses DgGuaranteeAccepted::setDefault()
     * @uses DgGuaranteeAccepted::setNoCardHolderInfoReqInd()
     * @uses DgGuaranteeAccepted::setNameReqInd()
     * @uses DgGuaranteeAccepted::setAddressReqInd()
     * @uses DgGuaranteeAccepted::setPhoneReqInd()
     * @uses DgGuaranteeAccepted::setInterbankNbrReqInd()
     * @uses DgGuaranteeAccepted::setBookingSourceAllowedInd()
     * @uses DgGuaranteeAccepted::setCorpDiscountNbrAllowedInd()
     * @uses DgGuaranteeAccepted::setGuaranteeTypeCode()
     * @uses DgGuaranteeAccepted::setGuaranteeID()
     * @param bool $default
     * @param bool $noCardHolderInfoReqInd
     * @param bool $nameReqInd
     * @param bool $addressReqInd
     * @param bool $phoneReqInd
     * @param bool $interbankNbrReqInd
     * @param bool $bookingSourceAllowedInd
     * @param bool $corpDiscountNbrAllowedInd
     * @param string $guaranteeTypeCode
     * @param string $guaranteeID
     */
    public function __construct($default = null, $noCardHolderInfoReqInd = null, $nameReqInd = null, $addressReqInd = null, $phoneReqInd = null, $interbankNbrReqInd = null, $bookingSourceAllowedInd = null, $corpDiscountNbrAllowedInd = null, $guaranteeTypeCode = null, $guaranteeID = null)
    {
        $this
            ->setDefault($default)
            ->setNoCardHolderInfoReqInd($noCardHolderInfoReqInd)
            ->setNameReqInd($nameReqInd)
            ->setAddressReqInd($addressReqInd)
            ->setPhoneReqInd($phoneReqInd)
            ->setInterbankNbrReqInd($interbankNbrReqInd)
            ->setBookingSourceAllowedInd($bookingSourceAllowedInd)
            ->setCorpDiscountNbrAllowedInd($corpDiscountNbrAllowedInd)
            ->setGuaranteeTypeCode($guaranteeTypeCode)
            ->setGuaranteeID($guaranteeID);
    }
    /**
     * Get Default value
     * @return bool|null
     */
    public function getDefault()
    {
        return $this->Default;
    }
    /**
     * Set Default value
     * @param bool $default
     * @return \dgsoft\StructType\DgGuaranteeAccepted
     */
    public function setDefault($default = null)
    {
        // validation for constraint: boolean
        if (!is_null($default) && !is_bool($default)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($default)), __LINE__);
        }
        $this->Default = $default;
        return $this;
    }
    /**
     * Get NoCardHolderInfoReqInd value
     * @return bool|null
     */
    public function getNoCardHolderInfoReqInd()
    {
        return $this->NoCardHolderInfoReqInd;
    }
    /**
     * Set NoCardHolderInfoReqInd value
     * @param bool $noCardHolderInfoReqInd
     * @return \dgsoft\StructType\DgGuaranteeAccepted
     */
    public function setNoCardHolderInfoReqInd($noCardHolderInfoReqInd = null)
    {
        // validation for constraint: boolean
        if (!is_null($noCardHolderInfoReqInd) && !is_bool($noCardHolderInfoReqInd)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($noCardHolderInfoReqInd)), __LINE__);
        }
        $this->NoCardHolderInfoReqInd = $noCardHolderInfoReqInd;
        return $this;
    }
    /**
     * Get NameReqInd value
     * @return bool|null
     */
    public function getNameReqInd()
    {
        return $this->NameReqInd;
    }
    /**
     * Set NameReqInd value
     * @param bool $nameReqInd
     * @return \dgsoft\StructType\DgGuaranteeAccepted
     */
    public function setNameReqInd($nameReqInd = null)
    {
        // validation for constraint: boolean
        if (!is_null($nameReqInd) && !is_bool($nameReqInd)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($nameReqInd)), __LINE__);
        }
        $this->NameReqInd = $nameReqInd;
        return $this;
    }
    /**
     * Get AddressReqInd value
     * @return bool|null
     */
    public function getAddressReqInd()
    {
        return $this->AddressReqInd;
    }
    /**
     * Set AddressReqInd value
     * @param bool $addressReqInd
     * @return \dgsoft\StructType\DgGuaranteeAccepted
     */
    public function setAddressReqInd($addressReqInd = null)
    {
        // validation for constraint: boolean
        if (!is_null($addressReqInd) && !is_bool($addressReqInd)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($addressReqInd)), __LINE__);
        }
        $this->AddressReqInd = $addressReqInd;
        return $this;
    }
    /**
     * Get PhoneReqInd value
     * @return bool|null
     */
    public function getPhoneReqInd()
    {
        return $this->PhoneReqInd;
    }
    /**
     * Set PhoneReqInd value
     * @param bool $phoneReqInd
     * @return \dgsoft\StructType\DgGuaranteeAccepted
     */
    public function setPhoneReqInd($phoneReqInd = null)
    {
        // validation for constraint: boolean
        if (!is_null($phoneReqInd) && !is_bool($phoneReqInd)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($phoneReqInd)), __LINE__);
        }
        $this->PhoneReqInd = $phoneReqInd;
        return $this;
    }
    /**
     * Get InterbankNbrReqInd value
     * @return bool|null
     */
    public function getInterbankNbrReqInd()
    {
        return $this->InterbankNbrReqInd;
    }
    /**
     * Set InterbankNbrReqInd value
     * @param bool $interbankNbrReqInd
     * @return \dgsoft\StructType\DgGuaranteeAccepted
     */
    public function setInterbankNbrReqInd($interbankNbrReqInd = null)
    {
        // validation for constraint: boolean
        if (!is_null($interbankNbrReqInd) && !is_bool($interbankNbrReqInd)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($interbankNbrReqInd)), __LINE__);
        }
        $this->InterbankNbrReqInd = $interbankNbrReqInd;
        return $this;
    }
    /**
     * Get BookingSourceAllowedInd value
     * @return bool|null
     */
    public function getBookingSourceAllowedInd()
    {
        return $this->BookingSourceAllowedInd;
    }
    /**
     * Set BookingSourceAllowedInd value
     * @param bool $bookingSourceAllowedInd
     * @return \dgsoft\StructType\DgGuaranteeAccepted
     */
    public function setBookingSourceAllowedInd($bookingSourceAllowedInd = null)
    {
        // validation for constraint: boolean
        if (!is_null($bookingSourceAllowedInd) && !is_bool($bookingSourceAllowedInd)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($bookingSourceAllowedInd)), __LINE__);
        }
        $this->BookingSourceAllowedInd = $bookingSourceAllowedInd;
        return $this;
    }
    /**
     * Get CorpDiscountNbrAllowedInd value
     * @return bool|null
     */
    public function getCorpDiscountNbrAllowedInd()
    {
        return $this->CorpDiscountNbrAllowedInd;
    }
    /**
     * Set CorpDiscountNbrAllowedInd value
     * @param bool $corpDiscountNbrAllowedInd
     * @return \dgsoft\StructType\DgGuaranteeAccepted
     */
    public function setCorpDiscountNbrAllowedInd($corpDiscountNbrAllowedInd = null)
    {
        // validation for constraint: boolean
        if (!is_null($corpDiscountNbrAllowedInd) && !is_bool($corpDiscountNbrAllowedInd)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a bool, "%s" given', gettype($corpDiscountNbrAllowedInd)), __LINE__);
        }
        $this->CorpDiscountNbrAllowedInd = $corpDiscountNbrAllowedInd;
        return $this;
    }
    /**
     * Get GuaranteeTypeCode value
     * @return string|null
     */
    public function getGuaranteeTypeCode()
    {
        return $this->GuaranteeTypeCode;
    }
    /**
     * Set GuaranteeTypeCode value
     * @param string $guaranteeTypeCode
     * @return \dgsoft\StructType\DgGuaranteeAccepted
     */
    public function setGuaranteeTypeCode($guaranteeTypeCode = null)
    {
        // validation for constraint: string
        if (!is_null($guaranteeTypeCode) && !is_string($guaranteeTypeCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($guaranteeTypeCode)), __LINE__);
        }
        $this->GuaranteeTypeCode = $guaranteeTypeCode;
        return $this;
    }
    /**
     * Get GuaranteeID value
     * @return string|null
     */
    public function getGuaranteeID()
    {
        return $this->GuaranteeID;
    }
    /**
     * Set GuaranteeID value
     * @param string $guaranteeID
     * @return \dgsoft\StructType\DgGuaranteeAccepted
     */
    public function setGuaranteeID($guaranteeID = null)
    {
        // validation for constraint: string
        if (!is_null($guaranteeID) && !is_string($guaranteeID)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($guaranteeID)), __LINE__);
        }
        $this->GuaranteeID = $guaranteeID;
        return $this;
    }
    /**
     * Method called when an object has been exported with var_export() functions
     * It allows to return an object instantiated with the values
     * @see AbstractStructBase::__set_state()
     * @uses AbstractStructBase::__set_state()
     * @param array $array the exported values
     * @return \dgsoft\StructType\DgGuaranteeAccepted
     */
    public static function __set_state(array $array)
    {
        return parent::__set_state($array);
    }
    /**
     * Method returning the class name
     * @return string __CLASS__
     */
    public function __toString()
    {
        return __CLASS__;
    }
}
