<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for GetEligibleEventsForExchangeOut-Response StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:GetEligibleEventsForExchangeOut-Response
 * @subpackage Structs
 */
class GetEligibleEventsForExchangeOut_Response extends ExtensibleDataContract
{
    /**
     * The ClientSubscriptionInstancesMaxAllowedFullStackExchanges
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfKeyValueOfguidint
     */
    public $ClientSubscriptionInstancesMaxAllowedFullStackExchanges;
    /**
     * The ExchangeOutEventsData
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfExchangeOutEventData
     */
    public $ExchangeOutEventsData;
    /**
     * The IsSeriesAvailableForFullStackExchanges
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $IsSeriesAvailableForFullStackExchanges;
    /**
     * The AddOnsOfEvents
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfKeyValueOfguidArrayOfExchangeOutEventDataWA71RVNU
     */
    public $AddOnsOfEvents;
    /**
     * The IsAllowedForUnpaidEvents
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $IsAllowedForUnpaidEvents;
    /**
     * The SubscriptionInstanceDescriptions
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GetSubscriptionDescriptionResponse
     */
    public $SubscriptionInstanceDescriptions;
    /**
     * The SubscriptionInstances
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfTicketing_SubscriptionInstance
     */
    public $SubscriptionInstances;
    /**
     * The SubscriptionToPaidEvents
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfKeyValueOfguidArrayOfguidox8ieOcg
     */
    public $SubscriptionToPaidEvents;
    /**
     * Constructor method for GetEligibleEventsForExchangeOut-Response
     * @uses GetEligibleEventsForExchangeOut_Response::setClientSubscriptionInstancesMaxAllowedFullStackExchanges()
     * @uses GetEligibleEventsForExchangeOut_Response::setExchangeOutEventsData()
     * @uses GetEligibleEventsForExchangeOut_Response::setIsSeriesAvailableForFullStackExchanges()
     * @uses GetEligibleEventsForExchangeOut_Response::setAddOnsOfEvents()
     * @uses GetEligibleEventsForExchangeOut_Response::setIsAllowedForUnpaidEvents()
     * @uses GetEligibleEventsForExchangeOut_Response::setSubscriptionInstanceDescriptions()
     * @uses GetEligibleEventsForExchangeOut_Response::setSubscriptionInstances()
     * @uses GetEligibleEventsForExchangeOut_Response::setSubscriptionToPaidEvents()
     * @param \patest\ArrayType\ArrayOfKeyValueOfguidint $clientSubscriptionInstancesMaxAllowedFullStackExchanges
     * @param \patest\ArrayType\ArrayOfExchangeOutEventData $exchangeOutEventsData
     * @param bool $isSeriesAvailableForFullStackExchanges
     * @param \patest\ArrayType\ArrayOfKeyValueOfguidArrayOfExchangeOutEventDataWA71RVNU $addOnsOfEvents
     * @param bool $isAllowedForUnpaidEvents
     * @param \patest\StructType\GetSubscriptionDescriptionResponse $subscriptionInstanceDescriptions
     * @param \patest\ArrayType\ArrayOfTicketing_SubscriptionInstance $subscriptionInstances
     * @param \patest\ArrayType\ArrayOfKeyValueOfguidArrayOfguidox8ieOcg $subscriptionToPaidEvents
     */
    public function __construct(\patest\ArrayType\ArrayOfKeyValueOfguidint $clientSubscriptionInstancesMaxAllowedFullStackExchanges = null, \patest\ArrayType\ArrayOfExchangeOutEventData $exchangeOutEventsData = null, $isSeriesAvailableForFullStackExchanges = null, \patest\ArrayType\ArrayOfKeyValueOfguidArrayOfExchangeOutEventDataWA71RVNU $addOnsOfEvents = null, $isAllowedForUnpaidEvents = null, \patest\StructType\GetSubscriptionDescriptionResponse $subscriptionInstanceDescriptions = null, \patest\ArrayType\ArrayOfTicketing_SubscriptionInstance $subscriptionInstances = null, \patest\ArrayType\ArrayOfKeyValueOfguidArrayOfguidox8ieOcg $subscriptionToPaidEvents = null)
    {
        $this
            ->setClientSubscriptionInstancesMaxAllowedFullStackExchanges($clientSubscriptionInstancesMaxAllowedFullStackExchanges)
            ->setExchangeOutEventsData($exchangeOutEventsData)
            ->setIsSeriesAvailableForFullStackExchanges($isSeriesAvailableForFullStackExchanges)
            ->setAddOnsOfEvents($addOnsOfEvents)
            ->setIsAllowedForUnpaidEvents($isAllowedForUnpaidEvents)
            ->setSubscriptionInstanceDescriptions($subscriptionInstanceDescriptions)
            ->setSubscriptionInstances($subscriptionInstances)
            ->setSubscriptionToPaidEvents($subscriptionToPaidEvents);
    }
    /**
     * Get ClientSubscriptionInstancesMaxAllowedFullStackExchanges value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\ArrayType\ArrayOfKeyValueOfguidint|null
     */
    public function getClientSubscriptionInstancesMaxAllowedFullStackExchanges()
    {
        return isset($this->ClientSubscriptionInstancesMaxAllowedFullStackExchanges) ? $this->ClientSubscriptionInstancesMaxAllowedFullStackExchanges : null;
    }
    /**
     * Set ClientSubscriptionInstancesMaxAllowedFullStackExchanges value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\ArrayType\ArrayOfKeyValueOfguidint $clientSubscriptionInstancesMaxAllowedFullStackExchanges
     * @return \patest\StructType\GetEligibleEventsForExchangeOut_Response
     */
    public function setClientSubscriptionInstancesMaxAllowedFullStackExchanges(\patest\ArrayType\ArrayOfKeyValueOfguidint $clientSubscriptionInstancesMaxAllowedFullStackExchanges = null)
    {
        if (is_null($clientSubscriptionInstancesMaxAllowedFullStackExchanges) || (is_array($clientSubscriptionInstancesMaxAllowedFullStackExchanges) && empty($clientSubscriptionInstancesMaxAllowedFullStackExchanges))) {
            unset($this->ClientSubscriptionInstancesMaxAllowedFullStackExchanges);
        } else {
            $this->ClientSubscriptionInstancesMaxAllowedFullStackExchanges = $clientSubscriptionInstancesMaxAllowedFullStackExchanges;
        }
        return $this;
    }
    /**
     * Get ExchangeOutEventsData value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\ArrayType\ArrayOfExchangeOutEventData|null
     */
    public function getExchangeOutEventsData()
    {
        return isset($this->ExchangeOutEventsData) ? $this->ExchangeOutEventsData : null;
    }
    /**
     * Set ExchangeOutEventsData value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\ArrayType\ArrayOfExchangeOutEventData $exchangeOutEventsData
     * @return \patest\StructType\GetEligibleEventsForExchangeOut_Response
     */
    public function setExchangeOutEventsData(\patest\ArrayType\ArrayOfExchangeOutEventData $exchangeOutEventsData = null)
    {
        if (is_null($exchangeOutEventsData) || (is_array($exchangeOutEventsData) && empty($exchangeOutEventsData))) {
            unset($this->ExchangeOutEventsData);
        } else {
            $this->ExchangeOutEventsData = $exchangeOutEventsData;
        }
        return $this;
    }
    /**
     * Get IsSeriesAvailableForFullStackExchanges value
     * @return bool|null
     */
    public function getIsSeriesAvailableForFullStackExchanges()
    {
        return $this->IsSeriesAvailableForFullStackExchanges;
    }
    /**
     * Set IsSeriesAvailableForFullStackExchanges value
     * @param bool $isSeriesAvailableForFullStackExchanges
     * @return \patest\StructType\GetEligibleEventsForExchangeOut_Response
     */
    public function setIsSeriesAvailableForFullStackExchanges($isSeriesAvailableForFullStackExchanges = null)
    {
        // validation for constraint: boolean
        if (!is_null($isSeriesAvailableForFullStackExchanges) && !is_bool($isSeriesAvailableForFullStackExchanges)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isSeriesAvailableForFullStackExchanges, true), gettype($isSeriesAvailableForFullStackExchanges)), __LINE__);
        }
        $this->IsSeriesAvailableForFullStackExchanges = $isSeriesAvailableForFullStackExchanges;
        return $this;
    }
    /**
     * Get AddOnsOfEvents value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\ArrayType\ArrayOfKeyValueOfguidArrayOfExchangeOutEventDataWA71RVNU|null
     */
    public function getAddOnsOfEvents()
    {
        return isset($this->AddOnsOfEvents) ? $this->AddOnsOfEvents : null;
    }
    /**
     * Set AddOnsOfEvents value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\ArrayType\ArrayOfKeyValueOfguidArrayOfExchangeOutEventDataWA71RVNU $addOnsOfEvents
     * @return \patest\StructType\GetEligibleEventsForExchangeOut_Response
     */
    public function setAddOnsOfEvents(\patest\ArrayType\ArrayOfKeyValueOfguidArrayOfExchangeOutEventDataWA71RVNU $addOnsOfEvents = null)
    {
        if (is_null($addOnsOfEvents) || (is_array($addOnsOfEvents) && empty($addOnsOfEvents))) {
            unset($this->AddOnsOfEvents);
        } else {
            $this->AddOnsOfEvents = $addOnsOfEvents;
        }
        return $this;
    }
    /**
     * Get IsAllowedForUnpaidEvents value
     * @return bool|null
     */
    public function getIsAllowedForUnpaidEvents()
    {
        return $this->IsAllowedForUnpaidEvents;
    }
    /**
     * Set IsAllowedForUnpaidEvents value
     * @param bool $isAllowedForUnpaidEvents
     * @return \patest\StructType\GetEligibleEventsForExchangeOut_Response
     */
    public function setIsAllowedForUnpaidEvents($isAllowedForUnpaidEvents = null)
    {
        // validation for constraint: boolean
        if (!is_null($isAllowedForUnpaidEvents) && !is_bool($isAllowedForUnpaidEvents)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isAllowedForUnpaidEvents, true), gettype($isAllowedForUnpaidEvents)), __LINE__);
        }
        $this->IsAllowedForUnpaidEvents = $isAllowedForUnpaidEvents;
        return $this;
    }
    /**
     * Get SubscriptionInstanceDescriptions value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\GetSubscriptionDescriptionResponse|null
     */
    public function getSubscriptionInstanceDescriptions()
    {
        return isset($this->SubscriptionInstanceDescriptions) ? $this->SubscriptionInstanceDescriptions : null;
    }
    /**
     * Set SubscriptionInstanceDescriptions value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\GetSubscriptionDescriptionResponse $subscriptionInstanceDescriptions
     * @return \patest\StructType\GetEligibleEventsForExchangeOut_Response
     */
    public function setSubscriptionInstanceDescriptions(\patest\StructType\GetSubscriptionDescriptionResponse $subscriptionInstanceDescriptions = null)
    {
        if (is_null($subscriptionInstanceDescriptions) || (is_array($subscriptionInstanceDescriptions) && empty($subscriptionInstanceDescriptions))) {
            unset($this->SubscriptionInstanceDescriptions);
        } else {
            $this->SubscriptionInstanceDescriptions = $subscriptionInstanceDescriptions;
        }
        return $this;
    }
    /**
     * Get SubscriptionInstances value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\ArrayType\ArrayOfTicketing_SubscriptionInstance|null
     */
    public function getSubscriptionInstances()
    {
        return isset($this->SubscriptionInstances) ? $this->SubscriptionInstances : null;
    }
    /**
     * Set SubscriptionInstances value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\ArrayType\ArrayOfTicketing_SubscriptionInstance $subscriptionInstances
     * @return \patest\StructType\GetEligibleEventsForExchangeOut_Response
     */
    public function setSubscriptionInstances(\patest\ArrayType\ArrayOfTicketing_SubscriptionInstance $subscriptionInstances = null)
    {
        if (is_null($subscriptionInstances) || (is_array($subscriptionInstances) && empty($subscriptionInstances))) {
            unset($this->SubscriptionInstances);
        } else {
            $this->SubscriptionInstances = $subscriptionInstances;
        }
        return $this;
    }
    /**
     * Get SubscriptionToPaidEvents value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\ArrayType\ArrayOfKeyValueOfguidArrayOfguidox8ieOcg|null
     */
    public function getSubscriptionToPaidEvents()
    {
        return isset($this->SubscriptionToPaidEvents) ? $this->SubscriptionToPaidEvents : null;
    }
    /**
     * Set SubscriptionToPaidEvents value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\ArrayType\ArrayOfKeyValueOfguidArrayOfguidox8ieOcg $subscriptionToPaidEvents
     * @return \patest\StructType\GetEligibleEventsForExchangeOut_Response
     */
    public function setSubscriptionToPaidEvents(\patest\ArrayType\ArrayOfKeyValueOfguidArrayOfguidox8ieOcg $subscriptionToPaidEvents = null)
    {
        if (is_null($subscriptionToPaidEvents) || (is_array($subscriptionToPaidEvents) && empty($subscriptionToPaidEvents))) {
            unset($this->SubscriptionToPaidEvents);
        } else {
            $this->SubscriptionToPaidEvents = $subscriptionToPaidEvents;
        }
        return $this;
    }
}
