<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for HallVersionDesign StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:HallVersionDesign
 * @subpackage Structs
 */
class HallVersionDesign extends AbstractStructBase
{
    /**
     * The Hall
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\HallDesign
     */
    public $Hall;
    /**
     * The LogicalDataDictionary
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\HallDataDictionary
     */
    public $LogicalDataDictionary;
    /**
     * The RestrictionsByGuids
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfKeyValueOfguidRestrictionDesignhpjoQDea
     */
    public $RestrictionsByGuids;
    /**
     * The SeatingPlanOwnerInformation
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SeatingPlanOwnerData
     */
    public $SeatingPlanOwnerInformation;
    /**
     * The Version
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\VersionDesign
     */
    public $Version;
    /**
     * The VersionAreaMaps
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfVersionAreaMapDesign
     */
    public $VersionAreaMaps;
    /**
     * The SetAsideInfo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfKeyValueOfguidArrayOfguidox8ieOcg
     */
    public $SetAsideInfo;
    /**
     * The DependencyTags
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfstring
     */
    public $DependencyTags;
    /**
     * The AreasIdsToExcludeOnInternet
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\ArrayType\ArrayOfguid
     */
    public $AreasIdsToExcludeOnInternet;
    /**
     * Constructor method for HallVersionDesign
     * @uses HallVersionDesign::setHall()
     * @uses HallVersionDesign::setLogicalDataDictionary()
     * @uses HallVersionDesign::setRestrictionsByGuids()
     * @uses HallVersionDesign::setSeatingPlanOwnerInformation()
     * @uses HallVersionDesign::setVersion()
     * @uses HallVersionDesign::setVersionAreaMaps()
     * @uses HallVersionDesign::setSetAsideInfo()
     * @uses HallVersionDesign::setDependencyTags()
     * @uses HallVersionDesign::setAreasIdsToExcludeOnInternet()
     * @param \patest\StructType\HallDesign $hall
     * @param \patest\StructType\HallDataDictionary $logicalDataDictionary
     * @param \patest\ArrayType\ArrayOfKeyValueOfguidRestrictionDesignhpjoQDea $restrictionsByGuids
     * @param \patest\StructType\SeatingPlanOwnerData $seatingPlanOwnerInformation
     * @param \patest\StructType\VersionDesign $version
     * @param \patest\ArrayType\ArrayOfVersionAreaMapDesign $versionAreaMaps
     * @param \patest\ArrayType\ArrayOfKeyValueOfguidArrayOfguidox8ieOcg $setAsideInfo
     * @param \patest\ArrayType\ArrayOfstring $dependencyTags
     * @param \patest\ArrayType\ArrayOfguid $areasIdsToExcludeOnInternet
     */
    public function __construct(\patest\StructType\HallDesign $hall = null, \patest\StructType\HallDataDictionary $logicalDataDictionary = null, \patest\ArrayType\ArrayOfKeyValueOfguidRestrictionDesignhpjoQDea $restrictionsByGuids = null, \patest\StructType\SeatingPlanOwnerData $seatingPlanOwnerInformation = null, \patest\StructType\VersionDesign $version = null, \patest\ArrayType\ArrayOfVersionAreaMapDesign $versionAreaMaps = null, \patest\ArrayType\ArrayOfKeyValueOfguidArrayOfguidox8ieOcg $setAsideInfo = null, \patest\ArrayType\ArrayOfstring $dependencyTags = null, \patest\ArrayType\ArrayOfguid $areasIdsToExcludeOnInternet = null)
    {
        $this
            ->setHall($hall)
            ->setLogicalDataDictionary($logicalDataDictionary)
            ->setRestrictionsByGuids($restrictionsByGuids)
            ->setSeatingPlanOwnerInformation($seatingPlanOwnerInformation)
            ->setVersion($version)
            ->setVersionAreaMaps($versionAreaMaps)
            ->setSetAsideInfo($setAsideInfo)
            ->setDependencyTags($dependencyTags)
            ->setAreasIdsToExcludeOnInternet($areasIdsToExcludeOnInternet);
    }
    /**
     * Get Hall 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\HallDesign|null
     */
    public function getHall()
    {
        return isset($this->Hall) ? $this->Hall : null;
    }
    /**
     * Set Hall 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\HallDesign $hall
     * @return \patest\StructType\HallVersionDesign
     */
    public function setHall(\patest\StructType\HallDesign $hall = null)
    {
        if (is_null($hall) || (is_array($hall) && empty($hall))) {
            unset($this->Hall);
        } else {
            $this->Hall = $hall;
        }
        return $this;
    }
    /**
     * Get LogicalDataDictionary 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\HallDataDictionary|null
     */
    public function getLogicalDataDictionary()
    {
        return isset($this->LogicalDataDictionary) ? $this->LogicalDataDictionary : null;
    }
    /**
     * Set LogicalDataDictionary 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\HallDataDictionary $logicalDataDictionary
     * @return \patest\StructType\HallVersionDesign
     */
    public function setLogicalDataDictionary(\patest\StructType\HallDataDictionary $logicalDataDictionary = null)
    {
        if (is_null($logicalDataDictionary) || (is_array($logicalDataDictionary) && empty($logicalDataDictionary))) {
            unset($this->LogicalDataDictionary);
        } else {
            $this->LogicalDataDictionary = $logicalDataDictionary;
        }
        return $this;
    }
    /**
     * Get RestrictionsByGuids 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\ArrayOfKeyValueOfguidRestrictionDesignhpjoQDea|null
     */
    public function getRestrictionsByGuids()
    {
        return isset($this->RestrictionsByGuids) ? $this->RestrictionsByGuids : null;
    }
    /**
     * Set RestrictionsByGuids 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\ArrayOfKeyValueOfguidRestrictionDesignhpjoQDea $restrictionsByGuids
     * @return \patest\StructType\HallVersionDesign
     */
    public function setRestrictionsByGuids(\patest\ArrayType\ArrayOfKeyValueOfguidRestrictionDesignhpjoQDea $restrictionsByGuids = null)
    {
        if (is_null($restrictionsByGuids) || (is_array($restrictionsByGuids) && empty($restrictionsByGuids))) {
            unset($this->RestrictionsByGuids);
        } else {
            $this->RestrictionsByGuids = $restrictionsByGuids;
        }
        return $this;
    }
    /**
     * Get SeatingPlanOwnerInformation 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\SeatingPlanOwnerData|null
     */
    public function getSeatingPlanOwnerInformation()
    {
        return isset($this->SeatingPlanOwnerInformation) ? $this->SeatingPlanOwnerInformation : null;
    }
    /**
     * Set SeatingPlanOwnerInformation 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\SeatingPlanOwnerData $seatingPlanOwnerInformation
     * @return \patest\StructType\HallVersionDesign
     */
    public function setSeatingPlanOwnerInformation(\patest\StructType\SeatingPlanOwnerData $seatingPlanOwnerInformation = null)
    {
        if (is_null($seatingPlanOwnerInformation) || (is_array($seatingPlanOwnerInformation) && empty($seatingPlanOwnerInformation))) {
            unset($this->SeatingPlanOwnerInformation);
        } else {
            $this->SeatingPlanOwnerInformation = $seatingPlanOwnerInformation;
        }
        return $this;
    }
    /**
     * Get Version 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\VersionDesign|null
     */
    public function getVersion()
    {
        return isset($this->Version) ? $this->Version : null;
    }
    /**
     * Set Version 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\VersionDesign $version
     * @return \patest\StructType\HallVersionDesign
     */
    public function setVersion(\patest\StructType\VersionDesign $version = null)
    {
        if (is_null($version) || (is_array($version) && empty($version))) {
            unset($this->Version);
        } else {
            $this->Version = $version;
        }
        return $this;
    }
    /**
     * Get VersionAreaMaps 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\ArrayOfVersionAreaMapDesign|null
     */
    public function getVersionAreaMaps()
    {
        return isset($this->VersionAreaMaps) ? $this->VersionAreaMaps : null;
    }
    /**
     * Set VersionAreaMaps 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\ArrayOfVersionAreaMapDesign $versionAreaMaps
     * @return \patest\StructType\HallVersionDesign
     */
    public function setVersionAreaMaps(\patest\ArrayType\ArrayOfVersionAreaMapDesign $versionAreaMaps = null)
    {
        if (is_null($versionAreaMaps) || (is_array($versionAreaMaps) && empty($versionAreaMaps))) {
            unset($this->VersionAreaMaps);
        } else {
            $this->VersionAreaMaps = $versionAreaMaps;
        }
        return $this;
    }
    /**
     * Get SetAsideInfo 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 getSetAsideInfo()
    {
        return isset($this->SetAsideInfo) ? $this->SetAsideInfo : null;
    }
    /**
     * Set SetAsideInfo 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 $setAsideInfo
     * @return \patest\StructType\HallVersionDesign
     */
    public function setSetAsideInfo(\patest\ArrayType\ArrayOfKeyValueOfguidArrayOfguidox8ieOcg $setAsideInfo = null)
    {
        if (is_null($setAsideInfo) || (is_array($setAsideInfo) && empty($setAsideInfo))) {
            unset($this->SetAsideInfo);
        } else {
            $this->SetAsideInfo = $setAsideInfo;
        }
        return $this;
    }
    /**
     * Get DependencyTags 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\ArrayOfstring|null
     */
    public function getDependencyTags()
    {
        return isset($this->DependencyTags) ? $this->DependencyTags : null;
    }
    /**
     * Set DependencyTags 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\ArrayOfstring $dependencyTags
     * @return \patest\StructType\HallVersionDesign
     */
    public function setDependencyTags(\patest\ArrayType\ArrayOfstring $dependencyTags = null)
    {
        if (is_null($dependencyTags) || (is_array($dependencyTags) && empty($dependencyTags))) {
            unset($this->DependencyTags);
        } else {
            $this->DependencyTags = $dependencyTags;
        }
        return $this;
    }
    /**
     * Get AreasIdsToExcludeOnInternet 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 getAreasIdsToExcludeOnInternet()
    {
        return isset($this->AreasIdsToExcludeOnInternet) ? $this->AreasIdsToExcludeOnInternet : null;
    }
    /**
     * Set AreasIdsToExcludeOnInternet 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 $areasIdsToExcludeOnInternet
     * @return \patest\StructType\HallVersionDesign
     */
    public function setAreasIdsToExcludeOnInternet(\patest\ArrayType\ArrayOfguid $areasIdsToExcludeOnInternet = null)
    {
        if (is_null($areasIdsToExcludeOnInternet) || (is_array($areasIdsToExcludeOnInternet) && empty($areasIdsToExcludeOnInternet))) {
            unset($this->AreasIdsToExcludeOnInternet);
        } else {
            $this->AreasIdsToExcludeOnInternet = $areasIdsToExcludeOnInternet;
        }
        return $this;
    }
}
