<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for FacilityPropertyBase StructType
 * @subpackage Structs
 */
abstract class FacilityPropertyBase extends Entity
{
    /**
     * The IsInternal
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $IsInternal;
    /**
     * The RequiresApproval
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var NullableInt32
     */
    public $RequiresApproval;
    /**
     * The OptDate1
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var NullableDateTime
     */
    public $OptDate1;
    /**
     * The OptDate2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var NullableDateTime
     */
    public $OptDate2;
    /**
     * The OptYesNo
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var bool
     */
    public $OptYesNo;
    /**
     * The OptMoney
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var NullableDecimal
     */
    public $OptMoney;
    /**
     * The OptInteger
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var NullableInt32
     */
    public $OptInteger;
    /**
     * The OptFloat
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 1
     * @var NullableDouble
     */
    public $OptFloat;
    /**
     * The Id
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Id;
    /**
     * The Name
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Name;
    /**
     * The ContactPersonFirstName
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $ContactPersonFirstName;
    /**
     * The ContactPersonLastName
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $ContactPersonLastName;
    /**
     * The Directions
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Directions;
    /**
     * The PersonnelEMail
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $PersonnelEMail;
    /**
     * The Notes
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Notes;
    /**
     * The Url
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $Url;
    /**
     * The AddressCity
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $AddressCity;
    /**
     * The AddressCountry
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $AddressCountry;
    /**
     * The AddressFax
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $AddressFax;
    /**
     * The AddressPhone1
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $AddressPhone1;
    /**
     * The AddressPhone2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $AddressPhone2;
    /**
     * The AddressState
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $AddressState;
    /**
     * The AddressStreet1
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $AddressStreet1;
    /**
     * The AddressStreet2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $AddressStreet2;
    /**
     * The AddressPostalCode
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $AddressPostalCode;
    /**
     * The AddressEmail
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $AddressEmail;
    /**
     * The DomainId
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $DomainId;
    /**
     * The Domain
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var Domain
     */
    public $Domain;
    /**
     * The ApproverId
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $ApproverId;
    /**
     * The Approver
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var User
     */
    public $Approver;
    /**
     * The TimeZonePreferenceId
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $TimeZonePreferenceId;
    /**
     * The TimeZonePreference
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var TimeZone
     */
    public $TimeZonePreference;
    /**
     * The OptText1
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $OptText1;
    /**
     * The OptText2
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $OptText2;
    /**
     * The OptText3
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $OptText3;
    /**
     * The OptText4
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $OptText4;
    /**
     * The OptMemo1
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $OptMemo1;
    /**
     * The OptCurrencyId
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $OptCurrencyId;
    /**
     * The OptCurrency
     * Meta informations extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var Currency
     */
    public $OptCurrency;
    /**
     * Constructor method for FacilityPropertyBase
     * @uses FacilityPropertyBase::setIsInternal()
     * @uses FacilityPropertyBase::setRequiresApproval()
     * @uses FacilityPropertyBase::setOptDate1()
     * @uses FacilityPropertyBase::setOptDate2()
     * @uses FacilityPropertyBase::setOptYesNo()
     * @uses FacilityPropertyBase::setOptMoney()
     * @uses FacilityPropertyBase::setOptInteger()
     * @uses FacilityPropertyBase::setOptFloat()
     * @uses FacilityPropertyBase::setId()
     * @uses FacilityPropertyBase::setName()
     * @uses FacilityPropertyBase::setContactPersonFirstName()
     * @uses FacilityPropertyBase::setContactPersonLastName()
     * @uses FacilityPropertyBase::setDirections()
     * @uses FacilityPropertyBase::setPersonnelEMail()
     * @uses FacilityPropertyBase::setNotes()
     * @uses FacilityPropertyBase::setUrl()
     * @uses FacilityPropertyBase::setAddressCity()
     * @uses FacilityPropertyBase::setAddressCountry()
     * @uses FacilityPropertyBase::setAddressFax()
     * @uses FacilityPropertyBase::setAddressPhone1()
     * @uses FacilityPropertyBase::setAddressPhone2()
     * @uses FacilityPropertyBase::setAddressState()
     * @uses FacilityPropertyBase::setAddressStreet1()
     * @uses FacilityPropertyBase::setAddressStreet2()
     * @uses FacilityPropertyBase::setAddressPostalCode()
     * @uses FacilityPropertyBase::setAddressEmail()
     * @uses FacilityPropertyBase::setDomainId()
     * @uses FacilityPropertyBase::setDomain()
     * @uses FacilityPropertyBase::setApproverId()
     * @uses FacilityPropertyBase::setApprover()
     * @uses FacilityPropertyBase::setTimeZonePreferenceId()
     * @uses FacilityPropertyBase::setTimeZonePreference()
     * @uses FacilityPropertyBase::setOptText1()
     * @uses FacilityPropertyBase::setOptText2()
     * @uses FacilityPropertyBase::setOptText3()
     * @uses FacilityPropertyBase::setOptText4()
     * @uses FacilityPropertyBase::setOptMemo1()
     * @uses FacilityPropertyBase::setOptCurrencyId()
     * @uses FacilityPropertyBase::setOptCurrency()
     * @param bool $isInternal
     * @param NullableInt32 $requiresApproval
     * @param NullableDateTime $optDate1
     * @param NullableDateTime $optDate2
     * @param bool $optYesNo
     * @param NullableDecimal $optMoney
     * @param NullableInt32 $optInteger
     * @param NullableDouble $optFloat
     * @param string $id
     * @param string $name
     * @param string $contactPersonFirstName
     * @param string $contactPersonLastName
     * @param string $directions
     * @param string $personnelEMail
     * @param string $notes
     * @param string $url
     * @param string $addressCity
     * @param string $addressCountry
     * @param string $addressFax
     * @param string $addressPhone1
     * @param string $addressPhone2
     * @param string $addressState
     * @param string $addressStreet1
     * @param string $addressStreet2
     * @param string $addressPostalCode
     * @param string $addressEmail
     * @param string $domainId
     * @param Domain $domain
     * @param string $approverId
     * @param User $approver
     * @param string $timeZonePreferenceId
     * @param TimeZone $timeZonePreference
     * @param string $optText1
     * @param string $optText2
     * @param string $optText3
     * @param string $optText4
     * @param string $optMemo1
     * @param string $optCurrencyId
     * @param Currency $optCurrency
     */
    public function __construct($isInternal = null, NullableInt32 $requiresApproval = null, NullableDateTime $optDate1 = null, NullableDateTime $optDate2 = null, $optYesNo = null, NullableDecimal $optMoney = null, NullableInt32 $optInteger = null, NullableDouble $optFloat = null, $id = null, $name = null, $contactPersonFirstName = null, $contactPersonLastName = null, $directions = null, $personnelEMail = null, $notes = null, $url = null, $addressCity = null, $addressCountry = null, $addressFax = null, $addressPhone1 = null, $addressPhone2 = null, $addressState = null, $addressStreet1 = null, $addressStreet2 = null, $addressPostalCode = null, $addressEmail = null, $domainId = null, Domain $domain = null, $approverId = null, User $approver = null, $timeZonePreferenceId = null, TimeZone $timeZonePreference = null, $optText1 = null, $optText2 = null, $optText3 = null, $optText4 = null, $optMemo1 = null, $optCurrencyId = null, Currency $optCurrency = null)
    {
        $this
            ->setIsInternal($isInternal)
            ->setRequiresApproval($requiresApproval)
            ->setOptDate1($optDate1)
            ->setOptDate2($optDate2)
            ->setOptYesNo($optYesNo)
            ->setOptMoney($optMoney)
            ->setOptInteger($optInteger)
            ->setOptFloat($optFloat)
            ->setId($id)
            ->setName($name)
            ->setContactPersonFirstName($contactPersonFirstName)
            ->setContactPersonLastName($contactPersonLastName)
            ->setDirections($directions)
            ->setPersonnelEMail($personnelEMail)
            ->setNotes($notes)
            ->setUrl($url)
            ->setAddressCity($addressCity)
            ->setAddressCountry($addressCountry)
            ->setAddressFax($addressFax)
            ->setAddressPhone1($addressPhone1)
            ->setAddressPhone2($addressPhone2)
            ->setAddressState($addressState)
            ->setAddressStreet1($addressStreet1)
            ->setAddressStreet2($addressStreet2)
            ->setAddressPostalCode($addressPostalCode)
            ->setAddressEmail($addressEmail)
            ->setDomainId($domainId)
            ->setDomain($domain)
            ->setApproverId($approverId)
            ->setApprover($approver)
            ->setTimeZonePreferenceId($timeZonePreferenceId)
            ->setTimeZonePreference($timeZonePreference)
            ->setOptText1($optText1)
            ->setOptText2($optText2)
            ->setOptText3($optText3)
            ->setOptText4($optText4)
            ->setOptMemo1($optMemo1)
            ->setOptCurrencyId($optCurrencyId)
            ->setOptCurrency($optCurrency);
    }
    /**
     * Get IsInternal value
     * @return bool
     */
    public function getIsInternal()
    {
        return $this->IsInternal;
    }
    /**
     * Set IsInternal value
     * @param bool $isInternal
     * @return FacilityPropertyBase
     */
    public function setIsInternal($isInternal = null)
    {
        $this->IsInternal = $isInternal;
        return $this;
    }
    /**
     * Get RequiresApproval value
     * @return NullableInt32
     */
    public function getRequiresApproval()
    {
        return $this->RequiresApproval;
    }
    /**
     * Set RequiresApproval value
     * @param NullableInt32 $requiresApproval
     * @return FacilityPropertyBase
     */
    public function setRequiresApproval(NullableInt32 $requiresApproval = null)
    {
        $this->RequiresApproval = $requiresApproval;
        return $this;
    }
    /**
     * Get OptDate1 value
     * @return NullableDateTime
     */
    public function getOptDate1()
    {
        return $this->OptDate1;
    }
    /**
     * Set OptDate1 value
     * @param NullableDateTime $optDate1
     * @return FacilityPropertyBase
     */
    public function setOptDate1(NullableDateTime $optDate1 = null)
    {
        $this->OptDate1 = $optDate1;
        return $this;
    }
    /**
     * Get OptDate2 value
     * @return NullableDateTime
     */
    public function getOptDate2()
    {
        return $this->OptDate2;
    }
    /**
     * Set OptDate2 value
     * @param NullableDateTime $optDate2
     * @return FacilityPropertyBase
     */
    public function setOptDate2(NullableDateTime $optDate2 = null)
    {
        $this->OptDate2 = $optDate2;
        return $this;
    }
    /**
     * Get OptYesNo value
     * @return bool
     */
    public function getOptYesNo()
    {
        return $this->OptYesNo;
    }
    /**
     * Set OptYesNo value
     * @param bool $optYesNo
     * @return FacilityPropertyBase
     */
    public function setOptYesNo($optYesNo = null)
    {
        $this->OptYesNo = $optYesNo;
        return $this;
    }
    /**
     * Get OptMoney value
     * @return NullableDecimal
     */
    public function getOptMoney()
    {
        return $this->OptMoney;
    }
    /**
     * Set OptMoney value
     * @param NullableDecimal $optMoney
     * @return FacilityPropertyBase
     */
    public function setOptMoney(NullableDecimal $optMoney = null)
    {
        $this->OptMoney = $optMoney;
        return $this;
    }
    /**
     * Get OptInteger value
     * @return NullableInt32
     */
    public function getOptInteger()
    {
        return $this->OptInteger;
    }
    /**
     * Set OptInteger value
     * @param NullableInt32 $optInteger
     * @return FacilityPropertyBase
     */
    public function setOptInteger(NullableInt32 $optInteger = null)
    {
        $this->OptInteger = $optInteger;
        return $this;
    }
    /**
     * Get OptFloat value
     * @return NullableDouble
     */
    public function getOptFloat()
    {
        return $this->OptFloat;
    }
    /**
     * Set OptFloat value
     * @param NullableDouble $optFloat
     * @return FacilityPropertyBase
     */
    public function setOptFloat(NullableDouble $optFloat = null)
    {
        $this->OptFloat = $optFloat;
        return $this;
    }
    /**
     * Get Id value
     * @return string|null
     */
    public function getId()
    {
        return $this->Id;
    }
    /**
     * Set Id value
     * @param string $id
     * @return FacilityPropertyBase
     */
    public function setId($id = null)
    {
        // validation for constraint: string
        if (!is_null($id) && !is_string($id)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($id)), __LINE__);
        }
        $this->Id = $id;
        return $this;
    }
    /**
     * Get Name value
     * @return string|null
     */
    public function getName()
    {
        return $this->Name;
    }
    /**
     * Set Name value
     * @param string $name
     * @return FacilityPropertyBase
     */
    public function setName($name = null)
    {
        // validation for constraint: string
        if (!is_null($name) && !is_string($name)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($name)), __LINE__);
        }
        $this->Name = $name;
        return $this;
    }
    /**
     * Get ContactPersonFirstName value
     * @return string|null
     */
    public function getContactPersonFirstName()
    {
        return $this->ContactPersonFirstName;
    }
    /**
     * Set ContactPersonFirstName value
     * @param string $contactPersonFirstName
     * @return FacilityPropertyBase
     */
    public function setContactPersonFirstName($contactPersonFirstName = null)
    {
        // validation for constraint: string
        if (!is_null($contactPersonFirstName) && !is_string($contactPersonFirstName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($contactPersonFirstName)), __LINE__);
        }
        $this->ContactPersonFirstName = $contactPersonFirstName;
        return $this;
    }
    /**
     * Get ContactPersonLastName value
     * @return string|null
     */
    public function getContactPersonLastName()
    {
        return $this->ContactPersonLastName;
    }
    /**
     * Set ContactPersonLastName value
     * @param string $contactPersonLastName
     * @return FacilityPropertyBase
     */
    public function setContactPersonLastName($contactPersonLastName = null)
    {
        // validation for constraint: string
        if (!is_null($contactPersonLastName) && !is_string($contactPersonLastName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($contactPersonLastName)), __LINE__);
        }
        $this->ContactPersonLastName = $contactPersonLastName;
        return $this;
    }
    /**
     * Get Directions value
     * @return string|null
     */
    public function getDirections()
    {
        return $this->Directions;
    }
    /**
     * Set Directions value
     * @param string $directions
     * @return FacilityPropertyBase
     */
    public function setDirections($directions = null)
    {
        // validation for constraint: string
        if (!is_null($directions) && !is_string($directions)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($directions)), __LINE__);
        }
        $this->Directions = $directions;
        return $this;
    }
    /**
     * Get PersonnelEMail value
     * @return string|null
     */
    public function getPersonnelEMail()
    {
        return $this->PersonnelEMail;
    }
    /**
     * Set PersonnelEMail value
     * @param string $personnelEMail
     * @return FacilityPropertyBase
     */
    public function setPersonnelEMail($personnelEMail = null)
    {
        // validation for constraint: string
        if (!is_null($personnelEMail) && !is_string($personnelEMail)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($personnelEMail)), __LINE__);
        }
        $this->PersonnelEMail = $personnelEMail;
        return $this;
    }
    /**
     * Get Notes value
     * @return string|null
     */
    public function getNotes()
    {
        return $this->Notes;
    }
    /**
     * Set Notes value
     * @param string $notes
     * @return FacilityPropertyBase
     */
    public function setNotes($notes = null)
    {
        // validation for constraint: string
        if (!is_null($notes) && !is_string($notes)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($notes)), __LINE__);
        }
        $this->Notes = $notes;
        return $this;
    }
    /**
     * Get Url value
     * @return string|null
     */
    public function getUrl()
    {
        return $this->Url;
    }
    /**
     * Set Url value
     * @param string $url
     * @return FacilityPropertyBase
     */
    public function setUrl($url = null)
    {
        // validation for constraint: string
        if (!is_null($url) && !is_string($url)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($url)), __LINE__);
        }
        $this->Url = $url;
        return $this;
    }
    /**
     * Get AddressCity value
     * @return string|null
     */
    public function getAddressCity()
    {
        return $this->AddressCity;
    }
    /**
     * Set AddressCity value
     * @param string $addressCity
     * @return FacilityPropertyBase
     */
    public function setAddressCity($addressCity = null)
    {
        // validation for constraint: string
        if (!is_null($addressCity) && !is_string($addressCity)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($addressCity)), __LINE__);
        }
        $this->AddressCity = $addressCity;
        return $this;
    }
    /**
     * Get AddressCountry value
     * @return string|null
     */
    public function getAddressCountry()
    {
        return $this->AddressCountry;
    }
    /**
     * Set AddressCountry value
     * @param string $addressCountry
     * @return FacilityPropertyBase
     */
    public function setAddressCountry($addressCountry = null)
    {
        // validation for constraint: string
        if (!is_null($addressCountry) && !is_string($addressCountry)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($addressCountry)), __LINE__);
        }
        $this->AddressCountry = $addressCountry;
        return $this;
    }
    /**
     * Get AddressFax value
     * @return string|null
     */
    public function getAddressFax()
    {
        return $this->AddressFax;
    }
    /**
     * Set AddressFax value
     * @param string $addressFax
     * @return FacilityPropertyBase
     */
    public function setAddressFax($addressFax = null)
    {
        // validation for constraint: string
        if (!is_null($addressFax) && !is_string($addressFax)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($addressFax)), __LINE__);
        }
        $this->AddressFax = $addressFax;
        return $this;
    }
    /**
     * Get AddressPhone1 value
     * @return string|null
     */
    public function getAddressPhone1()
    {
        return $this->AddressPhone1;
    }
    /**
     * Set AddressPhone1 value
     * @param string $addressPhone1
     * @return FacilityPropertyBase
     */
    public function setAddressPhone1($addressPhone1 = null)
    {
        // validation for constraint: string
        if (!is_null($addressPhone1) && !is_string($addressPhone1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($addressPhone1)), __LINE__);
        }
        $this->AddressPhone1 = $addressPhone1;
        return $this;
    }
    /**
     * Get AddressPhone2 value
     * @return string|null
     */
    public function getAddressPhone2()
    {
        return $this->AddressPhone2;
    }
    /**
     * Set AddressPhone2 value
     * @param string $addressPhone2
     * @return FacilityPropertyBase
     */
    public function setAddressPhone2($addressPhone2 = null)
    {
        // validation for constraint: string
        if (!is_null($addressPhone2) && !is_string($addressPhone2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($addressPhone2)), __LINE__);
        }
        $this->AddressPhone2 = $addressPhone2;
        return $this;
    }
    /**
     * Get AddressState value
     * @return string|null
     */
    public function getAddressState()
    {
        return $this->AddressState;
    }
    /**
     * Set AddressState value
     * @param string $addressState
     * @return FacilityPropertyBase
     */
    public function setAddressState($addressState = null)
    {
        // validation for constraint: string
        if (!is_null($addressState) && !is_string($addressState)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($addressState)), __LINE__);
        }
        $this->AddressState = $addressState;
        return $this;
    }
    /**
     * Get AddressStreet1 value
     * @return string|null
     */
    public function getAddressStreet1()
    {
        return $this->AddressStreet1;
    }
    /**
     * Set AddressStreet1 value
     * @param string $addressStreet1
     * @return FacilityPropertyBase
     */
    public function setAddressStreet1($addressStreet1 = null)
    {
        // validation for constraint: string
        if (!is_null($addressStreet1) && !is_string($addressStreet1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($addressStreet1)), __LINE__);
        }
        $this->AddressStreet1 = $addressStreet1;
        return $this;
    }
    /**
     * Get AddressStreet2 value
     * @return string|null
     */
    public function getAddressStreet2()
    {
        return $this->AddressStreet2;
    }
    /**
     * Set AddressStreet2 value
     * @param string $addressStreet2
     * @return FacilityPropertyBase
     */
    public function setAddressStreet2($addressStreet2 = null)
    {
        // validation for constraint: string
        if (!is_null($addressStreet2) && !is_string($addressStreet2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($addressStreet2)), __LINE__);
        }
        $this->AddressStreet2 = $addressStreet2;
        return $this;
    }
    /**
     * Get AddressPostalCode value
     * @return string|null
     */
    public function getAddressPostalCode()
    {
        return $this->AddressPostalCode;
    }
    /**
     * Set AddressPostalCode value
     * @param string $addressPostalCode
     * @return FacilityPropertyBase
     */
    public function setAddressPostalCode($addressPostalCode = null)
    {
        // validation for constraint: string
        if (!is_null($addressPostalCode) && !is_string($addressPostalCode)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($addressPostalCode)), __LINE__);
        }
        $this->AddressPostalCode = $addressPostalCode;
        return $this;
    }
    /**
     * Get AddressEmail value
     * @return string|null
     */
    public function getAddressEmail()
    {
        return $this->AddressEmail;
    }
    /**
     * Set AddressEmail value
     * @param string $addressEmail
     * @return FacilityPropertyBase
     */
    public function setAddressEmail($addressEmail = null)
    {
        // validation for constraint: string
        if (!is_null($addressEmail) && !is_string($addressEmail)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($addressEmail)), __LINE__);
        }
        $this->AddressEmail = $addressEmail;
        return $this;
    }
    /**
     * Get DomainId value
     * @return string|null
     */
    public function getDomainId()
    {
        return $this->DomainId;
    }
    /**
     * Set DomainId value
     * @param string $domainId
     * @return FacilityPropertyBase
     */
    public function setDomainId($domainId = null)
    {
        // validation for constraint: string
        if (!is_null($domainId) && !is_string($domainId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($domainId)), __LINE__);
        }
        $this->DomainId = $domainId;
        return $this;
    }
    /**
     * Get Domain value
     * @return Domain|null
     */
    public function getDomain()
    {
        return $this->Domain;
    }
    /**
     * Set Domain value
     * @param Domain $domain
     * @return FacilityPropertyBase
     */
    public function setDomain(Domain $domain = null)
    {
        $this->Domain = $domain;
        return $this;
    }
    /**
     * Get ApproverId value
     * @return string|null
     */
    public function getApproverId()
    {
        return $this->ApproverId;
    }
    /**
     * Set ApproverId value
     * @param string $approverId
     * @return FacilityPropertyBase
     */
    public function setApproverId($approverId = null)
    {
        // validation for constraint: string
        if (!is_null($approverId) && !is_string($approverId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($approverId)), __LINE__);
        }
        $this->ApproverId = $approverId;
        return $this;
    }
    /**
     * Get Approver value
     * @return User|null
     */
    public function getApprover()
    {
        return $this->Approver;
    }
    /**
     * Set Approver value
     * @param User $approver
     * @return FacilityPropertyBase
     */
    public function setApprover(User $approver = null)
    {
        $this->Approver = $approver;
        return $this;
    }
    /**
     * Get TimeZonePreferenceId value
     * @return string|null
     */
    public function getTimeZonePreferenceId()
    {
        return $this->TimeZonePreferenceId;
    }
    /**
     * Set TimeZonePreferenceId value
     * @param string $timeZonePreferenceId
     * @return FacilityPropertyBase
     */
    public function setTimeZonePreferenceId($timeZonePreferenceId = null)
    {
        // validation for constraint: string
        if (!is_null($timeZonePreferenceId) && !is_string($timeZonePreferenceId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($timeZonePreferenceId)), __LINE__);
        }
        $this->TimeZonePreferenceId = $timeZonePreferenceId;
        return $this;
    }
    /**
     * Get TimeZonePreference value
     * @return TimeZone|null
     */
    public function getTimeZonePreference()
    {
        return $this->TimeZonePreference;
    }
    /**
     * Set TimeZonePreference value
     * @param TimeZone $timeZonePreference
     * @return FacilityPropertyBase
     */
    public function setTimeZonePreference(TimeZone $timeZonePreference = null)
    {
        $this->TimeZonePreference = $timeZonePreference;
        return $this;
    }
    /**
     * Get OptText1 value
     * @return string|null
     */
    public function getOptText1()
    {
        return $this->OptText1;
    }
    /**
     * Set OptText1 value
     * @param string $optText1
     * @return FacilityPropertyBase
     */
    public function setOptText1($optText1 = null)
    {
        // validation for constraint: string
        if (!is_null($optText1) && !is_string($optText1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($optText1)), __LINE__);
        }
        $this->OptText1 = $optText1;
        return $this;
    }
    /**
     * Get OptText2 value
     * @return string|null
     */
    public function getOptText2()
    {
        return $this->OptText2;
    }
    /**
     * Set OptText2 value
     * @param string $optText2
     * @return FacilityPropertyBase
     */
    public function setOptText2($optText2 = null)
    {
        // validation for constraint: string
        if (!is_null($optText2) && !is_string($optText2)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($optText2)), __LINE__);
        }
        $this->OptText2 = $optText2;
        return $this;
    }
    /**
     * Get OptText3 value
     * @return string|null
     */
    public function getOptText3()
    {
        return $this->OptText3;
    }
    /**
     * Set OptText3 value
     * @param string $optText3
     * @return FacilityPropertyBase
     */
    public function setOptText3($optText3 = null)
    {
        // validation for constraint: string
        if (!is_null($optText3) && !is_string($optText3)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($optText3)), __LINE__);
        }
        $this->OptText3 = $optText3;
        return $this;
    }
    /**
     * Get OptText4 value
     * @return string|null
     */
    public function getOptText4()
    {
        return $this->OptText4;
    }
    /**
     * Set OptText4 value
     * @param string $optText4
     * @return FacilityPropertyBase
     */
    public function setOptText4($optText4 = null)
    {
        // validation for constraint: string
        if (!is_null($optText4) && !is_string($optText4)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($optText4)), __LINE__);
        }
        $this->OptText4 = $optText4;
        return $this;
    }
    /**
     * Get OptMemo1 value
     * @return string|null
     */
    public function getOptMemo1()
    {
        return $this->OptMemo1;
    }
    /**
     * Set OptMemo1 value
     * @param string $optMemo1
     * @return FacilityPropertyBase
     */
    public function setOptMemo1($optMemo1 = null)
    {
        // validation for constraint: string
        if (!is_null($optMemo1) && !is_string($optMemo1)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($optMemo1)), __LINE__);
        }
        $this->OptMemo1 = $optMemo1;
        return $this;
    }
    /**
     * Get OptCurrencyId value
     * @return string|null
     */
    public function getOptCurrencyId()
    {
        return $this->OptCurrencyId;
    }
    /**
     * Set OptCurrencyId value
     * @param string $optCurrencyId
     * @return FacilityPropertyBase
     */
    public function setOptCurrencyId($optCurrencyId = null)
    {
        // validation for constraint: string
        if (!is_null($optCurrencyId) && !is_string($optCurrencyId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value, please provide a string, "%s" given', gettype($optCurrencyId)), __LINE__);
        }
        $this->OptCurrencyId = $optCurrencyId;
        return $this;
    }
    /**
     * Get OptCurrency value
     * @return Currency|null
     */
    public function getOptCurrency()
    {
        return $this->OptCurrency;
    }
    /**
     * Set OptCurrency value
     * @param Currency $optCurrency
     * @return FacilityPropertyBase
     */
    public function setOptCurrency(Currency $optCurrency = null)
    {
        $this->OptCurrency = $optCurrency;
        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 FacilityPropertyBase
     */
    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__;
    }
}
