<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ApplicationOptions StructType
 * @subpackage Structs
 */
class ApplicationOptions extends AbstractStructBase
{
    /**
     * The ApplyStopSales
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var bool
     */
    public $ApplyStopSales;
    /**
     * The ApplyRelease
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var bool
     */
    public $ApplyRelease;
    /**
     * The ApplyArrivalDays
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var bool
     */
    public $ApplyArrivalDays;
    /**
     * The ApplyMinimumStays
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var bool
     */
    public $ApplyMinimumStays;
    /**
     * The ApplyWeeklyStays
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var bool
     */
    public $ApplyWeeklyStays;
    /**
     * The ApplyContractRestrictions
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var bool
     */
    public $ApplyContractRestrictions;
    /**
     * The ApplyAllotmentRestrictions
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var bool
     */
    public $ApplyAllotmentRestrictions;
    /**
     * The ChangeStopSalesToRQ
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var bool
     */
    public $ChangeStopSalesToRQ;
    /**
     * Constructor method for ApplicationOptions
     * @uses ApplicationOptions::setApplyStopSales()
     * @uses ApplicationOptions::setApplyRelease()
     * @uses ApplicationOptions::setApplyArrivalDays()
     * @uses ApplicationOptions::setApplyMinimumStays()
     * @uses ApplicationOptions::setApplyWeeklyStays()
     * @uses ApplicationOptions::setApplyContractRestrictions()
     * @uses ApplicationOptions::setApplyAllotmentRestrictions()
     * @uses ApplicationOptions::setChangeStopSalesToRQ()
     * @param bool $applyStopSales
     * @param bool $applyRelease
     * @param bool $applyArrivalDays
     * @param bool $applyMinimumStays
     * @param bool $applyWeeklyStays
     * @param bool $applyContractRestrictions
     * @param bool $applyAllotmentRestrictions
     * @param bool $changeStopSalesToRQ
     */
    public function __construct($applyStopSales = null, $applyRelease = null, $applyArrivalDays = null, $applyMinimumStays = null, $applyWeeklyStays = null, $applyContractRestrictions = null, $applyAllotmentRestrictions = null, $changeStopSalesToRQ = null)
    {
        $this
            ->setApplyStopSales($applyStopSales)
            ->setApplyRelease($applyRelease)
            ->setApplyArrivalDays($applyArrivalDays)
            ->setApplyMinimumStays($applyMinimumStays)
            ->setApplyWeeklyStays($applyWeeklyStays)
            ->setApplyContractRestrictions($applyContractRestrictions)
            ->setApplyAllotmentRestrictions($applyAllotmentRestrictions)
            ->setChangeStopSalesToRQ($changeStopSalesToRQ);
    }
    /**
     * Get ApplyStopSales value
     * @return bool|null
     */
    public function getApplyStopSales()
    {
        return $this->ApplyStopSales;
    }
    /**
     * Set ApplyStopSales value
     * @param bool $applyStopSales
     * @return \StructType\ApplicationOptions
     */
    public function setApplyStopSales($applyStopSales = null)
    {
        // validation for constraint: boolean
        if (!is_null($applyStopSales) && !is_bool($applyStopSales)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($applyStopSales, true), gettype($applyStopSales)), __LINE__);
        }
        $this->ApplyStopSales = $applyStopSales;
        return $this;
    }
    /**
     * Get ApplyRelease value
     * @return bool|null
     */
    public function getApplyRelease()
    {
        return $this->ApplyRelease;
    }
    /**
     * Set ApplyRelease value
     * @param bool $applyRelease
     * @return \StructType\ApplicationOptions
     */
    public function setApplyRelease($applyRelease = null)
    {
        // validation for constraint: boolean
        if (!is_null($applyRelease) && !is_bool($applyRelease)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($applyRelease, true), gettype($applyRelease)), __LINE__);
        }
        $this->ApplyRelease = $applyRelease;
        return $this;
    }
    /**
     * Get ApplyArrivalDays value
     * @return bool|null
     */
    public function getApplyArrivalDays()
    {
        return $this->ApplyArrivalDays;
    }
    /**
     * Set ApplyArrivalDays value
     * @param bool $applyArrivalDays
     * @return \StructType\ApplicationOptions
     */
    public function setApplyArrivalDays($applyArrivalDays = null)
    {
        // validation for constraint: boolean
        if (!is_null($applyArrivalDays) && !is_bool($applyArrivalDays)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($applyArrivalDays, true), gettype($applyArrivalDays)), __LINE__);
        }
        $this->ApplyArrivalDays = $applyArrivalDays;
        return $this;
    }
    /**
     * Get ApplyMinimumStays value
     * @return bool|null
     */
    public function getApplyMinimumStays()
    {
        return $this->ApplyMinimumStays;
    }
    /**
     * Set ApplyMinimumStays value
     * @param bool $applyMinimumStays
     * @return \StructType\ApplicationOptions
     */
    public function setApplyMinimumStays($applyMinimumStays = null)
    {
        // validation for constraint: boolean
        if (!is_null($applyMinimumStays) && !is_bool($applyMinimumStays)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($applyMinimumStays, true), gettype($applyMinimumStays)), __LINE__);
        }
        $this->ApplyMinimumStays = $applyMinimumStays;
        return $this;
    }
    /**
     * Get ApplyWeeklyStays value
     * @return bool|null
     */
    public function getApplyWeeklyStays()
    {
        return $this->ApplyWeeklyStays;
    }
    /**
     * Set ApplyWeeklyStays value
     * @param bool $applyWeeklyStays
     * @return \StructType\ApplicationOptions
     */
    public function setApplyWeeklyStays($applyWeeklyStays = null)
    {
        // validation for constraint: boolean
        if (!is_null($applyWeeklyStays) && !is_bool($applyWeeklyStays)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($applyWeeklyStays, true), gettype($applyWeeklyStays)), __LINE__);
        }
        $this->ApplyWeeklyStays = $applyWeeklyStays;
        return $this;
    }
    /**
     * Get ApplyContractRestrictions value
     * @return bool|null
     */
    public function getApplyContractRestrictions()
    {
        return $this->ApplyContractRestrictions;
    }
    /**
     * Set ApplyContractRestrictions value
     * @param bool $applyContractRestrictions
     * @return \StructType\ApplicationOptions
     */
    public function setApplyContractRestrictions($applyContractRestrictions = null)
    {
        // validation for constraint: boolean
        if (!is_null($applyContractRestrictions) && !is_bool($applyContractRestrictions)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($applyContractRestrictions, true), gettype($applyContractRestrictions)), __LINE__);
        }
        $this->ApplyContractRestrictions = $applyContractRestrictions;
        return $this;
    }
    /**
     * Get ApplyAllotmentRestrictions value
     * @return bool|null
     */
    public function getApplyAllotmentRestrictions()
    {
        return $this->ApplyAllotmentRestrictions;
    }
    /**
     * Set ApplyAllotmentRestrictions value
     * @param bool $applyAllotmentRestrictions
     * @return \StructType\ApplicationOptions
     */
    public function setApplyAllotmentRestrictions($applyAllotmentRestrictions = null)
    {
        // validation for constraint: boolean
        if (!is_null($applyAllotmentRestrictions) && !is_bool($applyAllotmentRestrictions)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($applyAllotmentRestrictions, true), gettype($applyAllotmentRestrictions)), __LINE__);
        }
        $this->ApplyAllotmentRestrictions = $applyAllotmentRestrictions;
        return $this;
    }
    /**
     * Get ChangeStopSalesToRQ value
     * @return bool|null
     */
    public function getChangeStopSalesToRQ()
    {
        return $this->ChangeStopSalesToRQ;
    }
    /**
     * Set ChangeStopSalesToRQ value
     * @param bool $changeStopSalesToRQ
     * @return \StructType\ApplicationOptions
     */
    public function setChangeStopSalesToRQ($changeStopSalesToRQ = null)
    {
        // validation for constraint: boolean
        if (!is_null($changeStopSalesToRQ) && !is_bool($changeStopSalesToRQ)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($changeStopSalesToRQ, true), gettype($changeStopSalesToRQ)), __LINE__);
        }
        $this->ChangeStopSalesToRQ = $changeStopSalesToRQ;
        return $this;
    }
}
