<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for QuerySeatingPlanAvailabilityResponse StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:QuerySeatingPlanAvailabilityResponse
 * @subpackage Structs
 */
class QuerySeatingPlanAvailabilityResponse extends AbstractStructBase
{
    /**
     * The Areas
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfQueryAreaAvailabilityResponse
     */
    public $Areas;
    /**
     * The AvailablePriceLevelIds
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfguid
     */
    public $AvailablePriceLevelIds;
    /**
     * The HeldResaleRequestIdsForGA
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfguid
     */
    public $HeldResaleRequestIdsForGA;
    /**
     * The LimitationsConsumption
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfLimitationConsumptionItem
     */
    public $LimitationsConsumption;
    /**
     * The RegularConsumptionSplit
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfSeatsConsumptionSplitItem
     */
    public $RegularConsumptionSplit;
    /**
     * The SeatingPlanStatistics
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\CapacityCounters
     */
    public $SeatingPlanStatistics;
    /**
     * The SeatingPlanStatisticsByPriceLevelId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfKeyValueOfguidCapacityCountershpjoQDea
     */
    public $SeatingPlanStatisticsByPriceLevelId;
    /**
     * The SeatingPlanStatisticsBySeatSet
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfKeyValueOfSeatSetIdentityCapacityCountersn51wGZ5l
     */
    public $SeatingPlanStatisticsBySeatSet;
    /**
     * The Failure
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\FailureInformation
     */
    public $Failure;
    /**
     * Constructor method for QuerySeatingPlanAvailabilityResponse
     * @uses QuerySeatingPlanAvailabilityResponse::setAreas()
     * @uses QuerySeatingPlanAvailabilityResponse::setAvailablePriceLevelIds()
     * @uses QuerySeatingPlanAvailabilityResponse::setHeldResaleRequestIdsForGA()
     * @uses QuerySeatingPlanAvailabilityResponse::setLimitationsConsumption()
     * @uses QuerySeatingPlanAvailabilityResponse::setRegularConsumptionSplit()
     * @uses QuerySeatingPlanAvailabilityResponse::setSeatingPlanStatistics()
     * @uses QuerySeatingPlanAvailabilityResponse::setSeatingPlanStatisticsByPriceLevelId()
     * @uses QuerySeatingPlanAvailabilityResponse::setSeatingPlanStatisticsBySeatSet()
     * @uses QuerySeatingPlanAvailabilityResponse::setFailure()
     * @param \patest\ArrayType\ArrayOfQueryAreaAvailabilityResponse $areas
     * @param \patest\ArrayType\ArrayOfguid $availablePriceLevelIds
     * @param \patest\ArrayType\ArrayOfguid $heldResaleRequestIdsForGA
     * @param \patest\ArrayType\ArrayOfLimitationConsumptionItem $limitationsConsumption
     * @param \patest\ArrayType\ArrayOfSeatsConsumptionSplitItem $regularConsumptionSplit
     * @param \patest\StructType\CapacityCounters $seatingPlanStatistics
     * @param \patest\ArrayType\ArrayOfKeyValueOfguidCapacityCountershpjoQDea $seatingPlanStatisticsByPriceLevelId
     * @param \patest\ArrayType\ArrayOfKeyValueOfSeatSetIdentityCapacityCountersn51wGZ5l $seatingPlanStatisticsBySeatSet
     * @param \patest\StructType\FailureInformation $failure
     */
    public function __construct(\patest\ArrayType\ArrayOfQueryAreaAvailabilityResponse $areas = null, \patest\ArrayType\ArrayOfguid $availablePriceLevelIds = null, \patest\ArrayType\ArrayOfguid $heldResaleRequestIdsForGA = null, \patest\ArrayType\ArrayOfLimitationConsumptionItem $limitationsConsumption = null, \patest\ArrayType\ArrayOfSeatsConsumptionSplitItem $regularConsumptionSplit = null, \patest\StructType\CapacityCounters $seatingPlanStatistics = null, \patest\ArrayType\ArrayOfKeyValueOfguidCapacityCountershpjoQDea $seatingPlanStatisticsByPriceLevelId = null, \patest\ArrayType\ArrayOfKeyValueOfSeatSetIdentityCapacityCountersn51wGZ5l $seatingPlanStatisticsBySeatSet = null, \patest\StructType\FailureInformation $failure = null)
    {
        $this
            ->setAreas($areas)
            ->setAvailablePriceLevelIds($availablePriceLevelIds)
            ->setHeldResaleRequestIdsForGA($heldResaleRequestIdsForGA)
            ->setLimitationsConsumption($limitationsConsumption)
            ->setRegularConsumptionSplit($regularConsumptionSplit)
            ->setSeatingPlanStatistics($seatingPlanStatistics)
            ->setSeatingPlanStatisticsByPriceLevelId($seatingPlanStatisticsByPriceLevelId)
            ->setSeatingPlanStatisticsBySeatSet($seatingPlanStatisticsBySeatSet)
            ->setFailure($failure);
    }
    /**
     * Get Areas 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\ArrayOfQueryAreaAvailabilityResponse|null
     */
    public function getAreas()
    {
        return isset($this->Areas) ? $this->Areas : null;
    }
    /**
     * Set Areas 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\ArrayOfQueryAreaAvailabilityResponse $areas
     * @return \patest\StructType\QuerySeatingPlanAvailabilityResponse
     */
    public function setAreas(\patest\ArrayType\ArrayOfQueryAreaAvailabilityResponse $areas = null)
    {
        if (is_null($areas) || (is_array($areas) && empty($areas))) {
            unset($this->Areas);
        } else {
            $this->Areas = $areas;
        }
        return $this;
    }
    /**
     * Get AvailablePriceLevelIds 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\ArrayOfguid|null
     */
    public function getAvailablePriceLevelIds()
    {
        return isset($this->AvailablePriceLevelIds) ? $this->AvailablePriceLevelIds : null;
    }
    /**
     * Set AvailablePriceLevelIds 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\ArrayOfguid $availablePriceLevelIds
     * @return \patest\StructType\QuerySeatingPlanAvailabilityResponse
     */
    public function setAvailablePriceLevelIds(\patest\ArrayType\ArrayOfguid $availablePriceLevelIds = null)
    {
        if (is_null($availablePriceLevelIds) || (is_array($availablePriceLevelIds) && empty($availablePriceLevelIds))) {
            unset($this->AvailablePriceLevelIds);
        } else {
            $this->AvailablePriceLevelIds = $availablePriceLevelIds;
        }
        return $this;
    }
    /**
     * Get HeldResaleRequestIdsForGA 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\ArrayOfguid|null
     */
    public function getHeldResaleRequestIdsForGA()
    {
        return isset($this->HeldResaleRequestIdsForGA) ? $this->HeldResaleRequestIdsForGA : null;
    }
    /**
     * Set HeldResaleRequestIdsForGA 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\ArrayOfguid $heldResaleRequestIdsForGA
     * @return \patest\StructType\QuerySeatingPlanAvailabilityResponse
     */
    public function setHeldResaleRequestIdsForGA(\patest\ArrayType\ArrayOfguid $heldResaleRequestIdsForGA = null)
    {
        if (is_null($heldResaleRequestIdsForGA) || (is_array($heldResaleRequestIdsForGA) && empty($heldResaleRequestIdsForGA))) {
            unset($this->HeldResaleRequestIdsForGA);
        } else {
            $this->HeldResaleRequestIdsForGA = $heldResaleRequestIdsForGA;
        }
        return $this;
    }
    /**
     * Get LimitationsConsumption 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\ArrayOfLimitationConsumptionItem|null
     */
    public function getLimitationsConsumption()
    {
        return isset($this->LimitationsConsumption) ? $this->LimitationsConsumption : null;
    }
    /**
     * Set LimitationsConsumption 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\ArrayOfLimitationConsumptionItem $limitationsConsumption
     * @return \patest\StructType\QuerySeatingPlanAvailabilityResponse
     */
    public function setLimitationsConsumption(\patest\ArrayType\ArrayOfLimitationConsumptionItem $limitationsConsumption = null)
    {
        if (is_null($limitationsConsumption) || (is_array($limitationsConsumption) && empty($limitationsConsumption))) {
            unset($this->LimitationsConsumption);
        } else {
            $this->LimitationsConsumption = $limitationsConsumption;
        }
        return $this;
    }
    /**
     * Get RegularConsumptionSplit 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\ArrayOfSeatsConsumptionSplitItem|null
     */
    public function getRegularConsumptionSplit()
    {
        return isset($this->RegularConsumptionSplit) ? $this->RegularConsumptionSplit : null;
    }
    /**
     * Set RegularConsumptionSplit 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\ArrayOfSeatsConsumptionSplitItem $regularConsumptionSplit
     * @return \patest\StructType\QuerySeatingPlanAvailabilityResponse
     */
    public function setRegularConsumptionSplit(\patest\ArrayType\ArrayOfSeatsConsumptionSplitItem $regularConsumptionSplit = null)
    {
        if (is_null($regularConsumptionSplit) || (is_array($regularConsumptionSplit) && empty($regularConsumptionSplit))) {
            unset($this->RegularConsumptionSplit);
        } else {
            $this->RegularConsumptionSplit = $regularConsumptionSplit;
        }
        return $this;
    }
    /**
     * Get SeatingPlanStatistics 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\CapacityCounters|null
     */
    public function getSeatingPlanStatistics()
    {
        return isset($this->SeatingPlanStatistics) ? $this->SeatingPlanStatistics : null;
    }
    /**
     * Set SeatingPlanStatistics 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\CapacityCounters $seatingPlanStatistics
     * @return \patest\StructType\QuerySeatingPlanAvailabilityResponse
     */
    public function setSeatingPlanStatistics(\patest\StructType\CapacityCounters $seatingPlanStatistics = null)
    {
        if (is_null($seatingPlanStatistics) || (is_array($seatingPlanStatistics) && empty($seatingPlanStatistics))) {
            unset($this->SeatingPlanStatistics);
        } else {
            $this->SeatingPlanStatistics = $seatingPlanStatistics;
        }
        return $this;
    }
    /**
     * Get SeatingPlanStatisticsByPriceLevelId 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\ArrayOfKeyValueOfguidCapacityCountershpjoQDea|null
     */
    public function getSeatingPlanStatisticsByPriceLevelId()
    {
        return isset($this->SeatingPlanStatisticsByPriceLevelId) ? $this->SeatingPlanStatisticsByPriceLevelId : null;
    }
    /**
     * Set SeatingPlanStatisticsByPriceLevelId 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\ArrayOfKeyValueOfguidCapacityCountershpjoQDea $seatingPlanStatisticsByPriceLevelId
     * @return \patest\StructType\QuerySeatingPlanAvailabilityResponse
     */
    public function setSeatingPlanStatisticsByPriceLevelId(\patest\ArrayType\ArrayOfKeyValueOfguidCapacityCountershpjoQDea $seatingPlanStatisticsByPriceLevelId = null)
    {
        if (is_null($seatingPlanStatisticsByPriceLevelId) || (is_array($seatingPlanStatisticsByPriceLevelId) && empty($seatingPlanStatisticsByPriceLevelId))) {
            unset($this->SeatingPlanStatisticsByPriceLevelId);
        } else {
            $this->SeatingPlanStatisticsByPriceLevelId = $seatingPlanStatisticsByPriceLevelId;
        }
        return $this;
    }
    /**
     * Get SeatingPlanStatisticsBySeatSet 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\ArrayOfKeyValueOfSeatSetIdentityCapacityCountersn51wGZ5l|null
     */
    public function getSeatingPlanStatisticsBySeatSet()
    {
        return isset($this->SeatingPlanStatisticsBySeatSet) ? $this->SeatingPlanStatisticsBySeatSet : null;
    }
    /**
     * Set SeatingPlanStatisticsBySeatSet 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\ArrayOfKeyValueOfSeatSetIdentityCapacityCountersn51wGZ5l $seatingPlanStatisticsBySeatSet
     * @return \patest\StructType\QuerySeatingPlanAvailabilityResponse
     */
    public function setSeatingPlanStatisticsBySeatSet(\patest\ArrayType\ArrayOfKeyValueOfSeatSetIdentityCapacityCountersn51wGZ5l $seatingPlanStatisticsBySeatSet = null)
    {
        if (is_null($seatingPlanStatisticsBySeatSet) || (is_array($seatingPlanStatisticsBySeatSet) && empty($seatingPlanStatisticsBySeatSet))) {
            unset($this->SeatingPlanStatisticsBySeatSet);
        } else {
            $this->SeatingPlanStatisticsBySeatSet = $seatingPlanStatisticsBySeatSet;
        }
        return $this;
    }
    /**
     * Get Failure 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\FailureInformation|null
     */
    public function getFailure()
    {
        return isset($this->Failure) ? $this->Failure : null;
    }
    /**
     * Set Failure 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\FailureInformation $failure
     * @return \patest\StructType\QuerySeatingPlanAvailabilityResponse
     */
    public function setFailure(\patest\StructType\FailureInformation $failure = null)
    {
        if (is_null($failure) || (is_array($failure) && empty($failure))) {
            unset($this->Failure);
        } else {
            $this->Failure = $failure;
        }
        return $this;
    }
}
