<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ContactPersonData Parameters
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:ContactPersonData
 * @subpackage Structs
 */
class ContactPersonData extends AbstractStructBase
{
    /**
     * The ContactPersonAcademicTitle
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ContactPersonAcademicTitle;
    /**
     * The ContactPersonEmail
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ContactPersonEmail;
    /**
     * The ContactPersonFax
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ContactPersonFax;
    /**
     * The ContactPersonFirstName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ContactPersonFirstName;
    /**
     * The ContactPersonLastName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ContactPersonLastName;
    /**
     * The ContactPersonPhone
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ContactPersonPhone;
    /**
     * The ContactPersonTitle
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ContactPersonTitle;
    /**
     * Constructor method for ContactPersonData
     * @uses ContactPersonData::setContactPersonAcademicTitle()
     * @uses ContactPersonData::setContactPersonEmail()
     * @uses ContactPersonData::setContactPersonFax()
     * @uses ContactPersonData::setContactPersonFirstName()
     * @uses ContactPersonData::setContactPersonLastName()
     * @uses ContactPersonData::setContactPersonPhone()
     * @uses ContactPersonData::setContactPersonTitle()
     * @param string $contactPersonAcademicTitle
     * @param string $contactPersonEmail
     * @param string $contactPersonFax
     * @param string $contactPersonFirstName
     * @param string $contactPersonLastName
     * @param string $contactPersonPhone
     * @param string $contactPersonTitle
     */
    public function __construct($contactPersonAcademicTitle = null, $contactPersonEmail = null, $contactPersonFax = null, $contactPersonFirstName = null, $contactPersonLastName = null, $contactPersonPhone = null, $contactPersonTitle = null)
    {
        $this
            ->setContactPersonAcademicTitle($contactPersonAcademicTitle)
            ->setContactPersonEmail($contactPersonEmail)
            ->setContactPersonFax($contactPersonFax)
            ->setContactPersonFirstName($contactPersonFirstName)
            ->setContactPersonLastName($contactPersonLastName)
            ->setContactPersonPhone($contactPersonPhone)
            ->setContactPersonTitle($contactPersonTitle);
    }
    /**
     * Get ContactPersonAcademicTitle 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 getContactPersonAcademicTitle()
    {
        return isset($this->ContactPersonAcademicTitle) ? $this->ContactPersonAcademicTitle : null;
    }
    /**
     * Set ContactPersonAcademicTitle 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 $contactPersonAcademicTitle
     * @return ContactPersonData
     */
    public function setContactPersonAcademicTitle($contactPersonAcademicTitle = null)
    {
        // validation for constraint: string
        if (!is_null($contactPersonAcademicTitle) && !is_string($contactPersonAcademicTitle)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($contactPersonAcademicTitle, true), gettype($contactPersonAcademicTitle)), __LINE__);
        }
        if (is_null($contactPersonAcademicTitle) || (is_array($contactPersonAcademicTitle) && empty($contactPersonAcademicTitle))) {
            unset($this->ContactPersonAcademicTitle);
        } else {
            $this->ContactPersonAcademicTitle = $contactPersonAcademicTitle;
        }
        return $this;
    }
    /**
     * Get ContactPersonEmail 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 getContactPersonEmail()
    {
        return isset($this->ContactPersonEmail) ? $this->ContactPersonEmail : null;
    }
    /**
     * Set ContactPersonEmail 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 $contactPersonEmail
     * @return ContactPersonData
     */
    public function setContactPersonEmail($contactPersonEmail = null)
    {
        // validation for constraint: string
        if (!is_null($contactPersonEmail) && !is_string($contactPersonEmail)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($contactPersonEmail, true), gettype($contactPersonEmail)), __LINE__);
        }
        if (is_null($contactPersonEmail) || (is_array($contactPersonEmail) && empty($contactPersonEmail))) {
            unset($this->ContactPersonEmail);
        } else {
            $this->ContactPersonEmail = $contactPersonEmail;
        }
        return $this;
    }
    /**
     * Get ContactPersonFax 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 getContactPersonFax()
    {
        return isset($this->ContactPersonFax) ? $this->ContactPersonFax : null;
    }
    /**
     * Set ContactPersonFax 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 $contactPersonFax
     * @return ContactPersonData
     */
    public function setContactPersonFax($contactPersonFax = null)
    {
        // validation for constraint: string
        if (!is_null($contactPersonFax) && !is_string($contactPersonFax)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($contactPersonFax, true), gettype($contactPersonFax)), __LINE__);
        }
        if (is_null($contactPersonFax) || (is_array($contactPersonFax) && empty($contactPersonFax))) {
            unset($this->ContactPersonFax);
        } else {
            $this->ContactPersonFax = $contactPersonFax;
        }
        return $this;
    }
    /**
     * Get ContactPersonFirstName 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 getContactPersonFirstName()
    {
        return isset($this->ContactPersonFirstName) ? $this->ContactPersonFirstName : null;
    }
    /**
     * Set ContactPersonFirstName 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 $contactPersonFirstName
     * @return ContactPersonData
     */
    public function setContactPersonFirstName($contactPersonFirstName = null)
    {
        // validation for constraint: string
        if (!is_null($contactPersonFirstName) && !is_string($contactPersonFirstName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($contactPersonFirstName, true), gettype($contactPersonFirstName)), __LINE__);
        }
        if (is_null($contactPersonFirstName) || (is_array($contactPersonFirstName) && empty($contactPersonFirstName))) {
            unset($this->ContactPersonFirstName);
        } else {
            $this->ContactPersonFirstName = $contactPersonFirstName;
        }
        return $this;
    }
    /**
     * Get ContactPersonLastName 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 getContactPersonLastName()
    {
        return isset($this->ContactPersonLastName) ? $this->ContactPersonLastName : null;
    }
    /**
     * Set ContactPersonLastName 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 $contactPersonLastName
     * @return ContactPersonData
     */
    public function setContactPersonLastName($contactPersonLastName = null)
    {
        // validation for constraint: string
        if (!is_null($contactPersonLastName) && !is_string($contactPersonLastName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($contactPersonLastName, true), gettype($contactPersonLastName)), __LINE__);
        }
        if (is_null($contactPersonLastName) || (is_array($contactPersonLastName) && empty($contactPersonLastName))) {
            unset($this->ContactPersonLastName);
        } else {
            $this->ContactPersonLastName = $contactPersonLastName;
        }
        return $this;
    }
    /**
     * Get ContactPersonPhone 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 getContactPersonPhone()
    {
        return isset($this->ContactPersonPhone) ? $this->ContactPersonPhone : null;
    }
    /**
     * Set ContactPersonPhone 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 $contactPersonPhone
     * @return ContactPersonData
     */
    public function setContactPersonPhone($contactPersonPhone = null)
    {
        // validation for constraint: string
        if (!is_null($contactPersonPhone) && !is_string($contactPersonPhone)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($contactPersonPhone, true), gettype($contactPersonPhone)), __LINE__);
        }
        if (is_null($contactPersonPhone) || (is_array($contactPersonPhone) && empty($contactPersonPhone))) {
            unset($this->ContactPersonPhone);
        } else {
            $this->ContactPersonPhone = $contactPersonPhone;
        }
        return $this;
    }
    /**
     * Get ContactPersonTitle 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 getContactPersonTitle()
    {
        return isset($this->ContactPersonTitle) ? $this->ContactPersonTitle : null;
    }
    /**
     * Set ContactPersonTitle 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 $contactPersonTitle
     * @return ContactPersonData
     */
    public function setContactPersonTitle($contactPersonTitle = null)
    {
        // validation for constraint: string
        if (!is_null($contactPersonTitle) && !is_string($contactPersonTitle)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($contactPersonTitle, true), gettype($contactPersonTitle)), __LINE__);
        }
        if (is_null($contactPersonTitle) || (is_array($contactPersonTitle) && empty($contactPersonTitle))) {
            unset($this->ContactPersonTitle);
        } else {
            $this->ContactPersonTitle = $contactPersonTitle;
        }
        return $this;
    }
}
