<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ExemptionFromEntryBan StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:ExemptionFromEntryBan
 * @subpackage Structs
 */
class ExemptionFromEntryBan extends AbstractStructBase
{
    /**
     * The ActivitySpecificationId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $ActivitySpecificationId;
    /**
     * The ActivitySpecificationOther
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ActivitySpecificationOther;
    /**
     * The Applicant
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $Applicant;
    /**
     * The BaseDescription
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $BaseDescription;
    /**
     * The CompanyName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CompanyName;
    /**
     * The ContractNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ContractNumber;
    /**
     * The DateFrom
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DateFrom;
    /**
     * The DateTo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DateTo;
    /**
     * The Email
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Email;
    /**
     * The FirstName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $FirstName;
    /**
     * The Id
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Id;
    /**
     * The IdentificationNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $IdentificationNumber;
    /**
     * The LicensePlate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $LicensePlate;
    /**
     * The Localization
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Localization;
    /**
     * The LocalizationFrom
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $LocalizationFrom;
    /**
     * The LocalizationType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $LocalizationType;
    /**
     * The Note
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Note;
    /**
     * The OrderNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $OrderNumber;
    /**
     * The OrganizationalUnitCode
     * Meta information extracted from the WSDL
     * - nillable: true
     * @var string
     */
    public $OrganizationalUnitCode;
    /**
     * The Phone
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Phone;
    /**
     * The Roads
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var ArrayOfExemptionFromEntryBanRoad
     */
    public $Roads;
    /**
     * The State
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $State;
    /**
     * The Street
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Street;
    /**
     * The Surname
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Surname;
    /**
     * The TimeFrom
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TimeFrom;
    /**
     * The TimeTo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TimeTo;
    /**
     * The Title
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Title;
    /**
     * The Town
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Town;
    /**
     * The VehicleType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $VehicleType;
    /**
     * The ZipCode
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ZipCode;
    /**
     * Constructor method for ExemptionFromEntryBan
     * @uses ExemptionFromEntryBan::setActivitySpecificationId()
     * @uses ExemptionFromEntryBan::setActivitySpecificationOther()
     * @uses ExemptionFromEntryBan::setApplicant()
     * @uses ExemptionFromEntryBan::setBaseDescription()
     * @uses ExemptionFromEntryBan::setCompanyName()
     * @uses ExemptionFromEntryBan::setContractNumber()
     * @uses ExemptionFromEntryBan::setDateFrom()
     * @uses ExemptionFromEntryBan::setDateTo()
     * @uses ExemptionFromEntryBan::setEmail()
     * @uses ExemptionFromEntryBan::setFirstName()
     * @uses ExemptionFromEntryBan::setId()
     * @uses ExemptionFromEntryBan::setIdentificationNumber()
     * @uses ExemptionFromEntryBan::setLicensePlate()
     * @uses ExemptionFromEntryBan::setLocalization()
     * @uses ExemptionFromEntryBan::setLocalizationFrom()
     * @uses ExemptionFromEntryBan::setLocalizationType()
     * @uses ExemptionFromEntryBan::setNote()
     * @uses ExemptionFromEntryBan::setOrderNumber()
     * @uses ExemptionFromEntryBan::setOrganizationalUnitCode()
     * @uses ExemptionFromEntryBan::setPhone()
     * @uses ExemptionFromEntryBan::setRoads()
     * @uses ExemptionFromEntryBan::setState()
     * @uses ExemptionFromEntryBan::setStreet()
     * @uses ExemptionFromEntryBan::setSurname()
     * @uses ExemptionFromEntryBan::setTimeFrom()
     * @uses ExemptionFromEntryBan::setTimeTo()
     * @uses ExemptionFromEntryBan::setTitle()
     * @uses ExemptionFromEntryBan::setTown()
     * @uses ExemptionFromEntryBan::setVehicleType()
     * @uses ExemptionFromEntryBan::setZipCode()
     * @param int $activitySpecificationId
     * @param string $activitySpecificationOther
     * @param string $applicant
     * @param string $baseDescription
     * @param string $companyName
     * @param string $contractNumber
     * @param string $dateFrom
     * @param string $dateTo
     * @param string $email
     * @param string $firstName
     * @param string $id
     * @param string $identificationNumber
     * @param string $licensePlate
     * @param string $localization
     * @param string $localizationFrom
     * @param string $localizationType
     * @param string $note
     * @param string $orderNumber
     * @param string $organizationalUnitCode
     * @param string $phone
     * @param ArrayOfExemptionFromEntryBanRoad $roads
     * @param string $state
     * @param string $street
     * @param string $surname
     * @param string $timeFrom
     * @param string $timeTo
     * @param string $title
     * @param string $town
     * @param string $vehicleType
     * @param string $zipCode
     */
    public function __construct($activitySpecificationId = null, $activitySpecificationOther = null, $applicant = null, $baseDescription = null, $companyName = null, $contractNumber = null, $dateFrom = null, $dateTo = null, $email = null, $firstName = null, $id = null, $identificationNumber = null, $licensePlate = null, $localization = null, $localizationFrom = null, $localizationType = null, $note = null, $orderNumber = null, $organizationalUnitCode = null, $phone = null, ArrayOfExemptionFromEntryBanRoad $roads = null, $state = null, $street = null, $surname = null, $timeFrom = null, $timeTo = null, $title = null, $town = null, $vehicleType = null, $zipCode = null)
    {
        $this
            ->setActivitySpecificationId($activitySpecificationId)
            ->setActivitySpecificationOther($activitySpecificationOther)
            ->setApplicant($applicant)
            ->setBaseDescription($baseDescription)
            ->setCompanyName($companyName)
            ->setContractNumber($contractNumber)
            ->setDateFrom($dateFrom)
            ->setDateTo($dateTo)
            ->setEmail($email)
            ->setFirstName($firstName)
            ->setId($id)
            ->setIdentificationNumber($identificationNumber)
            ->setLicensePlate($licensePlate)
            ->setLocalization($localization)
            ->setLocalizationFrom($localizationFrom)
            ->setLocalizationType($localizationType)
            ->setNote($note)
            ->setOrderNumber($orderNumber)
            ->setOrganizationalUnitCode($organizationalUnitCode)
            ->setPhone($phone)
            ->setRoads($roads)
            ->setState($state)
            ->setStreet($street)
            ->setSurname($surname)
            ->setTimeFrom($timeFrom)
            ->setTimeTo($timeTo)
            ->setTitle($title)
            ->setTown($town)
            ->setVehicleType($vehicleType)
            ->setZipCode($zipCode);
    }
    /**
     * Get ActivitySpecificationId value
     * @return int|null
     */
    public function getActivitySpecificationId()
    {
        return $this->ActivitySpecificationId;
    }
    /**
     * Set ActivitySpecificationId value
     * @param int $activitySpecificationId
     * @return ExemptionFromEntryBan
     */
    public function setActivitySpecificationId($activitySpecificationId = null)
    {
        // validation for constraint: int
        if (!is_null($activitySpecificationId) && !(is_int($activitySpecificationId) || ctype_digit($activitySpecificationId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($activitySpecificationId, true), gettype($activitySpecificationId)), __LINE__);
        }
        $this->ActivitySpecificationId = $activitySpecificationId;
        return $this;
    }
    /**
     * Get ActivitySpecificationOther 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 string|null
     */
    public function getActivitySpecificationOther()
    {
        return isset($this->ActivitySpecificationOther) ? $this->ActivitySpecificationOther : null;
    }
    /**
     * Set ActivitySpecificationOther 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 string $activitySpecificationOther
     * @return ExemptionFromEntryBan
     */
    public function setActivitySpecificationOther($activitySpecificationOther = null)
    {
        // validation for constraint: string
        if (!is_null($activitySpecificationOther) && !is_string($activitySpecificationOther)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($activitySpecificationOther, true), gettype($activitySpecificationOther)), __LINE__);
        }
        if (is_null($activitySpecificationOther) || (is_array($activitySpecificationOther) && empty($activitySpecificationOther))) {
            unset($this->ActivitySpecificationOther);
        } else {
            $this->ActivitySpecificationOther = $activitySpecificationOther;
        }
        return $this;
    }
    /**
     * Get Applicant value
     * @return string|null
     */
    public function getApplicant()
    {
        return $this->Applicant;
    }
    /**
     * Set Applicant value
     * @uses ExemptionFromEntryBanApplicantType::valueIsValid()
     * @uses ExemptionFromEntryBanApplicantType::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $applicant
     * @return ExemptionFromEntryBan
     */
    public function setApplicant($applicant = null)
    {
        // validation for constraint: enumeration
        if (!ExemptionFromEntryBanApplicantType::valueIsValid($applicant)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class ExemptionFromEntryBanApplicantType', is_array($applicant) ? implode(', ', $applicant) : var_export($applicant, true), implode(', ', ExemptionFromEntryBanApplicantType::getValidValues())), __LINE__);
        }
        $this->Applicant = $applicant;
        return $this;
    }
    /**
     * Get BaseDescription 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 string|null
     */
    public function getBaseDescription()
    {
        return isset($this->BaseDescription) ? $this->BaseDescription : null;
    }
    /**
     * Set BaseDescription 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 string $baseDescription
     * @return ExemptionFromEntryBan
     */
    public function setBaseDescription($baseDescription = null)
    {
        // validation for constraint: string
        if (!is_null($baseDescription) && !is_string($baseDescription)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($baseDescription, true), gettype($baseDescription)), __LINE__);
        }
        if (is_null($baseDescription) || (is_array($baseDescription) && empty($baseDescription))) {
            unset($this->BaseDescription);
        } else {
            $this->BaseDescription = $baseDescription;
        }
        return $this;
    }
    /**
     * Get CompanyName 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 string|null
     */
    public function getCompanyName()
    {
        return isset($this->CompanyName) ? $this->CompanyName : null;
    }
    /**
     * Set CompanyName 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 string $companyName
     * @return ExemptionFromEntryBan
     */
    public function setCompanyName($companyName = null)
    {
        // validation for constraint: string
        if (!is_null($companyName) && !is_string($companyName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($companyName, true), gettype($companyName)), __LINE__);
        }
        if (is_null($companyName) || (is_array($companyName) && empty($companyName))) {
            unset($this->CompanyName);
        } else {
            $this->CompanyName = $companyName;
        }
        return $this;
    }
    /**
     * Get ContractNumber 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 string|null
     */
    public function getContractNumber()
    {
        return isset($this->ContractNumber) ? $this->ContractNumber : null;
    }
    /**
     * Set ContractNumber 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 string $contractNumber
     * @return ExemptionFromEntryBan
     */
    public function setContractNumber($contractNumber = null)
    {
        // validation for constraint: string
        if (!is_null($contractNumber) && !is_string($contractNumber)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($contractNumber, true), gettype($contractNumber)), __LINE__);
        }
        if (is_null($contractNumber) || (is_array($contractNumber) && empty($contractNumber))) {
            unset($this->ContractNumber);
        } else {
            $this->ContractNumber = $contractNumber;
        }
        return $this;
    }
    /**
     * Get DateFrom 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 string|null
     */
    public function getDateFrom()
    {
        return isset($this->DateFrom) ? $this->DateFrom : null;
    }
    /**
     * Set DateFrom 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 string $dateFrom
     * @return ExemptionFromEntryBan
     */
    public function setDateFrom($dateFrom = null)
    {
        // validation for constraint: string
        if (!is_null($dateFrom) && !is_string($dateFrom)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($dateFrom, true), gettype($dateFrom)), __LINE__);
        }
        if (is_null($dateFrom) || (is_array($dateFrom) && empty($dateFrom))) {
            unset($this->DateFrom);
        } else {
            $this->DateFrom = $dateFrom;
        }
        return $this;
    }
    /**
     * Get DateTo 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 string|null
     */
    public function getDateTo()
    {
        return isset($this->DateTo) ? $this->DateTo : null;
    }
    /**
     * Set DateTo 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 string $dateTo
     * @return ExemptionFromEntryBan
     */
    public function setDateTo($dateTo = null)
    {
        // validation for constraint: string
        if (!is_null($dateTo) && !is_string($dateTo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($dateTo, true), gettype($dateTo)), __LINE__);
        }
        if (is_null($dateTo) || (is_array($dateTo) && empty($dateTo))) {
            unset($this->DateTo);
        } else {
            $this->DateTo = $dateTo;
        }
        return $this;
    }
    /**
     * Get Email 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 string|null
     */
    public function getEmail()
    {
        return isset($this->Email) ? $this->Email : null;
    }
    /**
     * Set Email 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 string $email
     * @return ExemptionFromEntryBan
     */
    public function setEmail($email = null)
    {
        // validation for constraint: string
        if (!is_null($email) && !is_string($email)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($email, true), gettype($email)), __LINE__);
        }
        if (is_null($email) || (is_array($email) && empty($email))) {
            unset($this->Email);
        } else {
            $this->Email = $email;
        }
        return $this;
    }
    /**
     * Get FirstName 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 string|null
     */
    public function getFirstName()
    {
        return isset($this->FirstName) ? $this->FirstName : null;
    }
    /**
     * Set FirstName 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 string $firstName
     * @return ExemptionFromEntryBan
     */
    public function setFirstName($firstName = null)
    {
        // validation for constraint: string
        if (!is_null($firstName) && !is_string($firstName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($firstName, true), gettype($firstName)), __LINE__);
        }
        if (is_null($firstName) || (is_array($firstName) && empty($firstName))) {
            unset($this->FirstName);
        } else {
            $this->FirstName = $firstName;
        }
        return $this;
    }
    /**
     * Get Id 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 string|null
     */
    public function getId()
    {
        return isset($this->Id) ? $this->Id : null;
    }
    /**
     * Set Id 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 string $id
     * @return ExemptionFromEntryBan
     */
    public function setId($id = null)
    {
        // validation for constraint: string
        if (!is_null($id) && !is_string($id)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($id, true), gettype($id)), __LINE__);
        }
        if (is_null($id) || (is_array($id) && empty($id))) {
            unset($this->Id);
        } else {
            $this->Id = $id;
        }
        return $this;
    }
    /**
     * Get IdentificationNumber 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 string|null
     */
    public function getIdentificationNumber()
    {
        return isset($this->IdentificationNumber) ? $this->IdentificationNumber : null;
    }
    /**
     * Set IdentificationNumber 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 string $identificationNumber
     * @return ExemptionFromEntryBan
     */
    public function setIdentificationNumber($identificationNumber = null)
    {
        // validation for constraint: string
        if (!is_null($identificationNumber) && !is_string($identificationNumber)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($identificationNumber, true), gettype($identificationNumber)), __LINE__);
        }
        if (is_null($identificationNumber) || (is_array($identificationNumber) && empty($identificationNumber))) {
            unset($this->IdentificationNumber);
        } else {
            $this->IdentificationNumber = $identificationNumber;
        }
        return $this;
    }
    /**
     * Get LicensePlate 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 string|null
     */
    public function getLicensePlate()
    {
        return isset($this->LicensePlate) ? $this->LicensePlate : null;
    }
    /**
     * Set LicensePlate 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 string $licensePlate
     * @return ExemptionFromEntryBan
     */
    public function setLicensePlate($licensePlate = null)
    {
        // validation for constraint: string
        if (!is_null($licensePlate) && !is_string($licensePlate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($licensePlate, true), gettype($licensePlate)), __LINE__);
        }
        if (is_null($licensePlate) || (is_array($licensePlate) && empty($licensePlate))) {
            unset($this->LicensePlate);
        } else {
            $this->LicensePlate = $licensePlate;
        }
        return $this;
    }
    /**
     * Get Localization 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 string|null
     */
    public function getLocalization()
    {
        return isset($this->Localization) ? $this->Localization : null;
    }
    /**
     * Set Localization 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 string $localization
     * @return ExemptionFromEntryBan
     */
    public function setLocalization($localization = null)
    {
        // validation for constraint: string
        if (!is_null($localization) && !is_string($localization)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($localization, true), gettype($localization)), __LINE__);
        }
        if (is_null($localization) || (is_array($localization) && empty($localization))) {
            unset($this->Localization);
        } else {
            $this->Localization = $localization;
        }
        return $this;
    }
    /**
     * Get LocalizationFrom 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 string|null
     */
    public function getLocalizationFrom()
    {
        return isset($this->LocalizationFrom) ? $this->LocalizationFrom : null;
    }
    /**
     * Set LocalizationFrom 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 string $localizationFrom
     * @return ExemptionFromEntryBan
     */
    public function setLocalizationFrom($localizationFrom = null)
    {
        // validation for constraint: string
        if (!is_null($localizationFrom) && !is_string($localizationFrom)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($localizationFrom, true), gettype($localizationFrom)), __LINE__);
        }
        if (is_null($localizationFrom) || (is_array($localizationFrom) && empty($localizationFrom))) {
            unset($this->LocalizationFrom);
        } else {
            $this->LocalizationFrom = $localizationFrom;
        }
        return $this;
    }
    /**
     * Get LocalizationType value
     * @return string|null
     */
    public function getLocalizationType()
    {
        return $this->LocalizationType;
    }
    /**
     * Set LocalizationType value
     * @uses ExemptionFromEntryBanLocalizationType::valueIsValid()
     * @uses ExemptionFromEntryBanLocalizationType::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $localizationType
     * @return ExemptionFromEntryBan
     */
    public function setLocalizationType($localizationType = null)
    {
        // validation for constraint: enumeration
        if (!ExemptionFromEntryBanLocalizationType::valueIsValid($localizationType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class ExemptionFromEntryBanLocalizationType', is_array($localizationType) ? implode(', ', $localizationType) : var_export($localizationType, true), implode(', ', ExemptionFromEntryBanLocalizationType::getValidValues())), __LINE__);
        }
        $this->LocalizationType = $localizationType;
        return $this;
    }
    /**
     * Get Note 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 string|null
     */
    public function getNote()
    {
        return isset($this->Note) ? $this->Note : null;
    }
    /**
     * Set Note 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 string $note
     * @return ExemptionFromEntryBan
     */
    public function setNote($note = null)
    {
        // validation for constraint: string
        if (!is_null($note) && !is_string($note)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($note, true), gettype($note)), __LINE__);
        }
        if (is_null($note) || (is_array($note) && empty($note))) {
            unset($this->Note);
        } else {
            $this->Note = $note;
        }
        return $this;
    }
    /**
     * Get OrderNumber 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 string|null
     */
    public function getOrderNumber()
    {
        return isset($this->OrderNumber) ? $this->OrderNumber : null;
    }
    /**
     * Set OrderNumber 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 string $orderNumber
     * @return ExemptionFromEntryBan
     */
    public function setOrderNumber($orderNumber = null)
    {
        // validation for constraint: string
        if (!is_null($orderNumber) && !is_string($orderNumber)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($orderNumber, true), gettype($orderNumber)), __LINE__);
        }
        if (is_null($orderNumber) || (is_array($orderNumber) && empty($orderNumber))) {
            unset($this->OrderNumber);
        } else {
            $this->OrderNumber = $orderNumber;
        }
        return $this;
    }
    /**
     * Get OrganizationalUnitCode value
     * @return string|null
     */
    public function getOrganizationalUnitCode()
    {
        return $this->OrganizationalUnitCode;
    }
    /**
     * Set OrganizationalUnitCode value
     * @param string $organizationalUnitCode
     * @return ExemptionFromEntryBan
     */
    public function setOrganizationalUnitCode($organizationalUnitCode = null)
    {
        // validation for constraint: string
        if (!is_null($organizationalUnitCode) && !is_string($organizationalUnitCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($organizationalUnitCode, true), gettype($organizationalUnitCode)), __LINE__);
        }
        $this->OrganizationalUnitCode = $organizationalUnitCode;
        return $this;
    }
    /**
     * Get Phone 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 string|null
     */
    public function getPhone()
    {
        return isset($this->Phone) ? $this->Phone : null;
    }
    /**
     * Set Phone 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 string $phone
     * @return ExemptionFromEntryBan
     */
    public function setPhone($phone = null)
    {
        // validation for constraint: string
        if (!is_null($phone) && !is_string($phone)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($phone, true), gettype($phone)), __LINE__);
        }
        if (is_null($phone) || (is_array($phone) && empty($phone))) {
            unset($this->Phone);
        } else {
            $this->Phone = $phone;
        }
        return $this;
    }
    /**
     * Get Roads 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 ArrayOfExemptionFromEntryBanRoad|null
     */
    public function getRoads()
    {
        return isset($this->Roads) ? $this->Roads : null;
    }
    /**
     * Set Roads 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 ArrayOfExemptionFromEntryBanRoad $roads
     * @return ExemptionFromEntryBan
     */
    public function setRoads(ArrayOfExemptionFromEntryBanRoad $roads = null)
    {
        if (is_null($roads) || (is_array($roads) && empty($roads))) {
            unset($this->Roads);
        } else {
            $this->Roads = $roads;
        }
        return $this;
    }
    /**
     * Get State value
     * @return string|null
     */
    public function getState()
    {
        return $this->State;
    }
    /**
     * Set State value
     * @uses ExemptionFromEntryBanState::valueIsValid()
     * @uses ExemptionFromEntryBanState::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $state
     * @return ExemptionFromEntryBan
     */
    public function setState($state = null)
    {
        // validation for constraint: enumeration
        if (!ExemptionFromEntryBanState::valueIsValid($state)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class ExemptionFromEntryBanState', is_array($state) ? implode(', ', $state) : var_export($state, true), implode(', ', ExemptionFromEntryBanState::getValidValues())), __LINE__);
        }
        $this->State = $state;
        return $this;
    }
    /**
     * Get Street 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 string|null
     */
    public function getStreet()
    {
        return isset($this->Street) ? $this->Street : null;
    }
    /**
     * Set Street 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 string $street
     * @return ExemptionFromEntryBan
     */
    public function setStreet($street = null)
    {
        // validation for constraint: string
        if (!is_null($street) && !is_string($street)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($street, true), gettype($street)), __LINE__);
        }
        if (is_null($street) || (is_array($street) && empty($street))) {
            unset($this->Street);
        } else {
            $this->Street = $street;
        }
        return $this;
    }
    /**
     * Get Surname 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 string|null
     */
    public function getSurname()
    {
        return isset($this->Surname) ? $this->Surname : null;
    }
    /**
     * Set Surname 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 string $surname
     * @return ExemptionFromEntryBan
     */
    public function setSurname($surname = null)
    {
        // validation for constraint: string
        if (!is_null($surname) && !is_string($surname)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($surname, true), gettype($surname)), __LINE__);
        }
        if (is_null($surname) || (is_array($surname) && empty($surname))) {
            unset($this->Surname);
        } else {
            $this->Surname = $surname;
        }
        return $this;
    }
    /**
     * Get TimeFrom 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 string|null
     */
    public function getTimeFrom()
    {
        return isset($this->TimeFrom) ? $this->TimeFrom : null;
    }
    /**
     * Set TimeFrom 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 string $timeFrom
     * @return ExemptionFromEntryBan
     */
    public function setTimeFrom($timeFrom = null)
    {
        // validation for constraint: string
        if (!is_null($timeFrom) && !is_string($timeFrom)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($timeFrom, true), gettype($timeFrom)), __LINE__);
        }
        if (is_null($timeFrom) || (is_array($timeFrom) && empty($timeFrom))) {
            unset($this->TimeFrom);
        } else {
            $this->TimeFrom = $timeFrom;
        }
        return $this;
    }
    /**
     * Get TimeTo 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 string|null
     */
    public function getTimeTo()
    {
        return isset($this->TimeTo) ? $this->TimeTo : null;
    }
    /**
     * Set TimeTo 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 string $timeTo
     * @return ExemptionFromEntryBan
     */
    public function setTimeTo($timeTo = null)
    {
        // validation for constraint: string
        if (!is_null($timeTo) && !is_string($timeTo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($timeTo, true), gettype($timeTo)), __LINE__);
        }
        if (is_null($timeTo) || (is_array($timeTo) && empty($timeTo))) {
            unset($this->TimeTo);
        } else {
            $this->TimeTo = $timeTo;
        }
        return $this;
    }
    /**
     * Get Title 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 string|null
     */
    public function getTitle()
    {
        return isset($this->Title) ? $this->Title : null;
    }
    /**
     * Set Title 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 string $title
     * @return ExemptionFromEntryBan
     */
    public function setTitle($title = null)
    {
        // validation for constraint: string
        if (!is_null($title) && !is_string($title)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($title, true), gettype($title)), __LINE__);
        }
        if (is_null($title) || (is_array($title) && empty($title))) {
            unset($this->Title);
        } else {
            $this->Title = $title;
        }
        return $this;
    }
    /**
     * Get Town 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 string|null
     */
    public function getTown()
    {
        return isset($this->Town) ? $this->Town : null;
    }
    /**
     * Set Town 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 string $town
     * @return ExemptionFromEntryBan
     */
    public function setTown($town = null)
    {
        // validation for constraint: string
        if (!is_null($town) && !is_string($town)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($town, true), gettype($town)), __LINE__);
        }
        if (is_null($town) || (is_array($town) && empty($town))) {
            unset($this->Town);
        } else {
            $this->Town = $town;
        }
        return $this;
    }
    /**
     * Get VehicleType 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 string|null
     */
    public function getVehicleType()
    {
        return isset($this->VehicleType) ? $this->VehicleType : null;
    }
    /**
     * Set VehicleType 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 string $vehicleType
     * @return ExemptionFromEntryBan
     */
    public function setVehicleType($vehicleType = null)
    {
        // validation for constraint: string
        if (!is_null($vehicleType) && !is_string($vehicleType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($vehicleType, true), gettype($vehicleType)), __LINE__);
        }
        if (is_null($vehicleType) || (is_array($vehicleType) && empty($vehicleType))) {
            unset($this->VehicleType);
        } else {
            $this->VehicleType = $vehicleType;
        }
        return $this;
    }
    /**
     * Get ZipCode 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 string|null
     */
    public function getZipCode()
    {
        return isset($this->ZipCode) ? $this->ZipCode : null;
    }
    /**
     * Set ZipCode 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 string $zipCode
     * @return ExemptionFromEntryBan
     */
    public function setZipCode($zipCode = null)
    {
        // validation for constraint: string
        if (!is_null($zipCode) && !is_string($zipCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($zipCode, true), gettype($zipCode)), __LINE__);
        }
        if (is_null($zipCode) || (is_array($zipCode) && empty($zipCode))) {
            unset($this->ZipCode);
        } else {
            $this->ZipCode = $zipCode;
        }
        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 ExemptionFromEntryBan
     */
    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__;
    }
}
