<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Contact StructType
 * Meta information extracted from the WSDL
 * - type: listRel:Contact
 * @subpackage Structs
 */
class Contact extends Record
{
    /**
     * The customForm
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $customForm;
    /**
     * The entityId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $entityId;
    /**
     * The contactSource
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $contactSource;
    /**
     * The company
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $company;
    /**
     * The salutation
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $salutation;
    /**
     * The firstName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $firstName;
    /**
     * The middleName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $middleName;
    /**
     * The lastName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $lastName;
    /**
     * The title
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $title;
    /**
     * The phone
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $phone;
    /**
     * The fax
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $fax;
    /**
     * The email
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $email;
    /**
     * The defaultAddress
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $defaultAddress;
    /**
     * The isPrivate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $isPrivate;
    /**
     * The isInactive
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $isInactive;
    /**
     * The subsidiary
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $subsidiary;
    /**
     * The phoneticName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $phoneticName;
    /**
     * The categoryList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\CategoryList
     */
    public $categoryList;
    /**
     * The altEmail
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $altEmail;
    /**
     * The officePhone
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $officePhone;
    /**
     * The homePhone
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $homePhone;
    /**
     * The mobilePhone
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $mobilePhone;
    /**
     * The supervisor
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $supervisor;
    /**
     * The supervisorPhone
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $supervisorPhone;
    /**
     * The assistant
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $assistant;
    /**
     * The assistantPhone
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $assistantPhone;
    /**
     * The comments
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $comments;
    /**
     * The globalSubscriptionStatus
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $globalSubscriptionStatus;
    /**
     * The image
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\RecordRef
     */
    public $image;
    /**
     * The billPay
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $billPay;
    /**
     * The dateCreated
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $dateCreated;
    /**
     * The lastModifiedDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $lastModifiedDate;
    /**
     * The addressbookList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\ContactAddressbookList
     */
    public $addressbookList;
    /**
     * The subscriptionsList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\SubscriptionsList
     */
    public $subscriptionsList;
    /**
     * The customFieldList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var \StructType\CustomFieldList
     */
    public $customFieldList;
    /**
     * The internalId
     * @var string
     */
    public $internalId;
    /**
     * The externalId
     * @var string
     */
    public $externalId;
    /**
     * Constructor method for Contact
     * @uses Contact::setCustomForm()
     * @uses Contact::setEntityId()
     * @uses Contact::setContactSource()
     * @uses Contact::setCompany()
     * @uses Contact::setSalutation()
     * @uses Contact::setFirstName()
     * @uses Contact::setMiddleName()
     * @uses Contact::setLastName()
     * @uses Contact::setTitle()
     * @uses Contact::setPhone()
     * @uses Contact::setFax()
     * @uses Contact::setEmail()
     * @uses Contact::setDefaultAddress()
     * @uses Contact::setIsPrivate()
     * @uses Contact::setIsInactive()
     * @uses Contact::setSubsidiary()
     * @uses Contact::setPhoneticName()
     * @uses Contact::setCategoryList()
     * @uses Contact::setAltEmail()
     * @uses Contact::setOfficePhone()
     * @uses Contact::setHomePhone()
     * @uses Contact::setMobilePhone()
     * @uses Contact::setSupervisor()
     * @uses Contact::setSupervisorPhone()
     * @uses Contact::setAssistant()
     * @uses Contact::setAssistantPhone()
     * @uses Contact::setComments()
     * @uses Contact::setGlobalSubscriptionStatus()
     * @uses Contact::setImage()
     * @uses Contact::setBillPay()
     * @uses Contact::setDateCreated()
     * @uses Contact::setLastModifiedDate()
     * @uses Contact::setAddressbookList()
     * @uses Contact::setSubscriptionsList()
     * @uses Contact::setCustomFieldList()
     * @uses Contact::setInternalId()
     * @uses Contact::setExternalId()
     * @param \StructType\RecordRef $customForm
     * @param string $entityId
     * @param \StructType\RecordRef $contactSource
     * @param \StructType\RecordRef $company
     * @param string $salutation
     * @param string $firstName
     * @param string $middleName
     * @param string $lastName
     * @param string $title
     * @param string $phone
     * @param string $fax
     * @param string $email
     * @param string $defaultAddress
     * @param bool $isPrivate
     * @param bool $isInactive
     * @param \StructType\RecordRef $subsidiary
     * @param string $phoneticName
     * @param \StructType\CategoryList $categoryList
     * @param string $altEmail
     * @param string $officePhone
     * @param string $homePhone
     * @param string $mobilePhone
     * @param \StructType\RecordRef $supervisor
     * @param string $supervisorPhone
     * @param \StructType\RecordRef $assistant
     * @param string $assistantPhone
     * @param string $comments
     * @param string $globalSubscriptionStatus
     * @param \StructType\RecordRef $image
     * @param bool $billPay
     * @param string $dateCreated
     * @param string $lastModifiedDate
     * @param \StructType\ContactAddressbookList $addressbookList
     * @param \StructType\SubscriptionsList $subscriptionsList
     * @param \StructType\CustomFieldList $customFieldList
     * @param string $internalId
     * @param string $externalId
     */
    public function __construct(\StructType\RecordRef $customForm = null, $entityId = null, \StructType\RecordRef $contactSource = null, \StructType\RecordRef $company = null, $salutation = null, $firstName = null, $middleName = null, $lastName = null, $title = null, $phone = null, $fax = null, $email = null, $defaultAddress = null, $isPrivate = null, $isInactive = null, \StructType\RecordRef $subsidiary = null, $phoneticName = null, \StructType\CategoryList $categoryList = null, $altEmail = null, $officePhone = null, $homePhone = null, $mobilePhone = null, \StructType\RecordRef $supervisor = null, $supervisorPhone = null, \StructType\RecordRef $assistant = null, $assistantPhone = null, $comments = null, $globalSubscriptionStatus = null, \StructType\RecordRef $image = null, $billPay = null, $dateCreated = null, $lastModifiedDate = null, \StructType\ContactAddressbookList $addressbookList = null, \StructType\SubscriptionsList $subscriptionsList = null, \StructType\CustomFieldList $customFieldList = null, $internalId = null, $externalId = null)
    {
        $this
            ->setCustomForm($customForm)
            ->setEntityId($entityId)
            ->setContactSource($contactSource)
            ->setCompany($company)
            ->setSalutation($salutation)
            ->setFirstName($firstName)
            ->setMiddleName($middleName)
            ->setLastName($lastName)
            ->setTitle($title)
            ->setPhone($phone)
            ->setFax($fax)
            ->setEmail($email)
            ->setDefaultAddress($defaultAddress)
            ->setIsPrivate($isPrivate)
            ->setIsInactive($isInactive)
            ->setSubsidiary($subsidiary)
            ->setPhoneticName($phoneticName)
            ->setCategoryList($categoryList)
            ->setAltEmail($altEmail)
            ->setOfficePhone($officePhone)
            ->setHomePhone($homePhone)
            ->setMobilePhone($mobilePhone)
            ->setSupervisor($supervisor)
            ->setSupervisorPhone($supervisorPhone)
            ->setAssistant($assistant)
            ->setAssistantPhone($assistantPhone)
            ->setComments($comments)
            ->setGlobalSubscriptionStatus($globalSubscriptionStatus)
            ->setImage($image)
            ->setBillPay($billPay)
            ->setDateCreated($dateCreated)
            ->setLastModifiedDate($lastModifiedDate)
            ->setAddressbookList($addressbookList)
            ->setSubscriptionsList($subscriptionsList)
            ->setCustomFieldList($customFieldList)
            ->setInternalId($internalId)
            ->setExternalId($externalId);
    }
    /**
     * Get customForm value
     * @return \StructType\RecordRef|null
     */
    public function getCustomForm()
    {
        return $this->customForm;
    }
    /**
     * Set customForm value
     * @param \StructType\RecordRef $customForm
     * @return \StructType\Contact
     */
    public function setCustomForm(\StructType\RecordRef $customForm = null)
    {
        $this->customForm = $customForm;
        return $this;
    }
    /**
     * Get entityId value
     * @return string|null
     */
    public function getEntityId()
    {
        return $this->entityId;
    }
    /**
     * Set entityId value
     * @param string $entityId
     * @return \StructType\Contact
     */
    public function setEntityId($entityId = null)
    {
        // validation for constraint: string
        if (!is_null($entityId) && !is_string($entityId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($entityId, true), gettype($entityId)), __LINE__);
        }
        $this->entityId = $entityId;
        return $this;
    }
    /**
     * Get contactSource value
     * @return \StructType\RecordRef|null
     */
    public function getContactSource()
    {
        return $this->contactSource;
    }
    /**
     * Set contactSource value
     * @param \StructType\RecordRef $contactSource
     * @return \StructType\Contact
     */
    public function setContactSource(\StructType\RecordRef $contactSource = null)
    {
        $this->contactSource = $contactSource;
        return $this;
    }
    /**
     * Get company value
     * @return \StructType\RecordRef|null
     */
    public function getCompany()
    {
        return $this->company;
    }
    /**
     * Set company value
     * @param \StructType\RecordRef $company
     * @return \StructType\Contact
     */
    public function setCompany(\StructType\RecordRef $company = null)
    {
        $this->company = $company;
        return $this;
    }
    /**
     * Get salutation value
     * @return string|null
     */
    public function getSalutation()
    {
        return $this->salutation;
    }
    /**
     * Set salutation value
     * @param string $salutation
     * @return \StructType\Contact
     */
    public function setSalutation($salutation = null)
    {
        // validation for constraint: string
        if (!is_null($salutation) && !is_string($salutation)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($salutation, true), gettype($salutation)), __LINE__);
        }
        $this->salutation = $salutation;
        return $this;
    }
    /**
     * Get firstName value
     * @return string|null
     */
    public function getFirstName()
    {
        return $this->firstName;
    }
    /**
     * Set firstName value
     * @param string $firstName
     * @return \StructType\Contact
     */
    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__);
        }
        $this->firstName = $firstName;
        return $this;
    }
    /**
     * Get middleName value
     * @return string|null
     */
    public function getMiddleName()
    {
        return $this->middleName;
    }
    /**
     * Set middleName value
     * @param string $middleName
     * @return \StructType\Contact
     */
    public function setMiddleName($middleName = null)
    {
        // validation for constraint: string
        if (!is_null($middleName) && !is_string($middleName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($middleName, true), gettype($middleName)), __LINE__);
        }
        $this->middleName = $middleName;
        return $this;
    }
    /**
     * Get lastName value
     * @return string|null
     */
    public function getLastName()
    {
        return $this->lastName;
    }
    /**
     * Set lastName value
     * @param string $lastName
     * @return \StructType\Contact
     */
    public function setLastName($lastName = null)
    {
        // validation for constraint: string
        if (!is_null($lastName) && !is_string($lastName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($lastName, true), gettype($lastName)), __LINE__);
        }
        $this->lastName = $lastName;
        return $this;
    }
    /**
     * Get title value
     * @return string|null
     */
    public function getTitle()
    {
        return $this->title;
    }
    /**
     * Set title value
     * @param string $title
     * @return \StructType\Contact
     */
    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__);
        }
        $this->title = $title;
        return $this;
    }
    /**
     * Get phone value
     * @return string|null
     */
    public function getPhone()
    {
        return $this->phone;
    }
    /**
     * Set phone value
     * @param string $phone
     * @return \StructType\Contact
     */
    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__);
        }
        $this->phone = $phone;
        return $this;
    }
    /**
     * Get fax value
     * @return string|null
     */
    public function getFax()
    {
        return $this->fax;
    }
    /**
     * Set fax value
     * @param string $fax
     * @return \StructType\Contact
     */
    public function setFax($fax = null)
    {
        // validation for constraint: string
        if (!is_null($fax) && !is_string($fax)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($fax, true), gettype($fax)), __LINE__);
        }
        $this->fax = $fax;
        return $this;
    }
    /**
     * Get email value
     * @return string|null
     */
    public function getEmail()
    {
        return $this->email;
    }
    /**
     * Set email value
     * @param string $email
     * @return \StructType\Contact
     */
    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__);
        }
        $this->email = $email;
        return $this;
    }
    /**
     * Get defaultAddress value
     * @return string|null
     */
    public function getDefaultAddress()
    {
        return $this->defaultAddress;
    }
    /**
     * Set defaultAddress value
     * @param string $defaultAddress
     * @return \StructType\Contact
     */
    public function setDefaultAddress($defaultAddress = null)
    {
        // validation for constraint: string
        if (!is_null($defaultAddress) && !is_string($defaultAddress)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($defaultAddress, true), gettype($defaultAddress)), __LINE__);
        }
        $this->defaultAddress = $defaultAddress;
        return $this;
    }
    /**
     * Get isPrivate value
     * @return bool|null
     */
    public function getIsPrivate()
    {
        return $this->isPrivate;
    }
    /**
     * Set isPrivate value
     * @param bool $isPrivate
     * @return \StructType\Contact
     */
    public function setIsPrivate($isPrivate = null)
    {
        // validation for constraint: boolean
        if (!is_null($isPrivate) && !is_bool($isPrivate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isPrivate, true), gettype($isPrivate)), __LINE__);
        }
        $this->isPrivate = $isPrivate;
        return $this;
    }
    /**
     * Get isInactive value
     * @return bool|null
     */
    public function getIsInactive()
    {
        return $this->isInactive;
    }
    /**
     * Set isInactive value
     * @param bool $isInactive
     * @return \StructType\Contact
     */
    public function setIsInactive($isInactive = null)
    {
        // validation for constraint: boolean
        if (!is_null($isInactive) && !is_bool($isInactive)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isInactive, true), gettype($isInactive)), __LINE__);
        }
        $this->isInactive = $isInactive;
        return $this;
    }
    /**
     * Get subsidiary value
     * @return \StructType\RecordRef|null
     */
    public function getSubsidiary()
    {
        return $this->subsidiary;
    }
    /**
     * Set subsidiary value
     * @param \StructType\RecordRef $subsidiary
     * @return \StructType\Contact
     */
    public function setSubsidiary(\StructType\RecordRef $subsidiary = null)
    {
        $this->subsidiary = $subsidiary;
        return $this;
    }
    /**
     * Get phoneticName value
     * @return string|null
     */
    public function getPhoneticName()
    {
        return $this->phoneticName;
    }
    /**
     * Set phoneticName value
     * @param string $phoneticName
     * @return \StructType\Contact
     */
    public function setPhoneticName($phoneticName = null)
    {
        // validation for constraint: string
        if (!is_null($phoneticName) && !is_string($phoneticName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($phoneticName, true), gettype($phoneticName)), __LINE__);
        }
        $this->phoneticName = $phoneticName;
        return $this;
    }
    /**
     * Get categoryList value
     * @return \StructType\CategoryList|null
     */
    public function getCategoryList()
    {
        return $this->categoryList;
    }
    /**
     * Set categoryList value
     * @param \StructType\CategoryList $categoryList
     * @return \StructType\Contact
     */
    public function setCategoryList(\StructType\CategoryList $categoryList = null)
    {
        $this->categoryList = $categoryList;
        return $this;
    }
    /**
     * Get altEmail value
     * @return string|null
     */
    public function getAltEmail()
    {
        return $this->altEmail;
    }
    /**
     * Set altEmail value
     * @param string $altEmail
     * @return \StructType\Contact
     */
    public function setAltEmail($altEmail = null)
    {
        // validation for constraint: string
        if (!is_null($altEmail) && !is_string($altEmail)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($altEmail, true), gettype($altEmail)), __LINE__);
        }
        $this->altEmail = $altEmail;
        return $this;
    }
    /**
     * Get officePhone value
     * @return string|null
     */
    public function getOfficePhone()
    {
        return $this->officePhone;
    }
    /**
     * Set officePhone value
     * @param string $officePhone
     * @return \StructType\Contact
     */
    public function setOfficePhone($officePhone = null)
    {
        // validation for constraint: string
        if (!is_null($officePhone) && !is_string($officePhone)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($officePhone, true), gettype($officePhone)), __LINE__);
        }
        $this->officePhone = $officePhone;
        return $this;
    }
    /**
     * Get homePhone value
     * @return string|null
     */
    public function getHomePhone()
    {
        return $this->homePhone;
    }
    /**
     * Set homePhone value
     * @param string $homePhone
     * @return \StructType\Contact
     */
    public function setHomePhone($homePhone = null)
    {
        // validation for constraint: string
        if (!is_null($homePhone) && !is_string($homePhone)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($homePhone, true), gettype($homePhone)), __LINE__);
        }
        $this->homePhone = $homePhone;
        return $this;
    }
    /**
     * Get mobilePhone value
     * @return string|null
     */
    public function getMobilePhone()
    {
        return $this->mobilePhone;
    }
    /**
     * Set mobilePhone value
     * @param string $mobilePhone
     * @return \StructType\Contact
     */
    public function setMobilePhone($mobilePhone = null)
    {
        // validation for constraint: string
        if (!is_null($mobilePhone) && !is_string($mobilePhone)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($mobilePhone, true), gettype($mobilePhone)), __LINE__);
        }
        $this->mobilePhone = $mobilePhone;
        return $this;
    }
    /**
     * Get supervisor value
     * @return \StructType\RecordRef|null
     */
    public function getSupervisor()
    {
        return $this->supervisor;
    }
    /**
     * Set supervisor value
     * @param \StructType\RecordRef $supervisor
     * @return \StructType\Contact
     */
    public function setSupervisor(\StructType\RecordRef $supervisor = null)
    {
        $this->supervisor = $supervisor;
        return $this;
    }
    /**
     * Get supervisorPhone value
     * @return string|null
     */
    public function getSupervisorPhone()
    {
        return $this->supervisorPhone;
    }
    /**
     * Set supervisorPhone value
     * @param string $supervisorPhone
     * @return \StructType\Contact
     */
    public function setSupervisorPhone($supervisorPhone = null)
    {
        // validation for constraint: string
        if (!is_null($supervisorPhone) && !is_string($supervisorPhone)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($supervisorPhone, true), gettype($supervisorPhone)), __LINE__);
        }
        $this->supervisorPhone = $supervisorPhone;
        return $this;
    }
    /**
     * Get assistant value
     * @return \StructType\RecordRef|null
     */
    public function getAssistant()
    {
        return $this->assistant;
    }
    /**
     * Set assistant value
     * @param \StructType\RecordRef $assistant
     * @return \StructType\Contact
     */
    public function setAssistant(\StructType\RecordRef $assistant = null)
    {
        $this->assistant = $assistant;
        return $this;
    }
    /**
     * Get assistantPhone value
     * @return string|null
     */
    public function getAssistantPhone()
    {
        return $this->assistantPhone;
    }
    /**
     * Set assistantPhone value
     * @param string $assistantPhone
     * @return \StructType\Contact
     */
    public function setAssistantPhone($assistantPhone = null)
    {
        // validation for constraint: string
        if (!is_null($assistantPhone) && !is_string($assistantPhone)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($assistantPhone, true), gettype($assistantPhone)), __LINE__);
        }
        $this->assistantPhone = $assistantPhone;
        return $this;
    }
    /**
     * Get comments value
     * @return string|null
     */
    public function getComments()
    {
        return $this->comments;
    }
    /**
     * Set comments value
     * @param string $comments
     * @return \StructType\Contact
     */
    public function setComments($comments = null)
    {
        // validation for constraint: string
        if (!is_null($comments) && !is_string($comments)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($comments, true), gettype($comments)), __LINE__);
        }
        $this->comments = $comments;
        return $this;
    }
    /**
     * Get globalSubscriptionStatus value
     * @return string|null
     */
    public function getGlobalSubscriptionStatus()
    {
        return $this->globalSubscriptionStatus;
    }
    /**
     * Set globalSubscriptionStatus value
     * @uses \EnumType\GlobalSubscriptionStatus::valueIsValid()
     * @uses \EnumType\GlobalSubscriptionStatus::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $globalSubscriptionStatus
     * @return \StructType\Contact
     */
    public function setGlobalSubscriptionStatus($globalSubscriptionStatus = null)
    {
        // validation for constraint: enumeration
        if (!\EnumType\GlobalSubscriptionStatus::valueIsValid($globalSubscriptionStatus)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \EnumType\GlobalSubscriptionStatus', is_array($globalSubscriptionStatus) ? implode(', ', $globalSubscriptionStatus) : var_export($globalSubscriptionStatus, true), implode(', ', \EnumType\GlobalSubscriptionStatus::getValidValues())), __LINE__);
        }
        $this->globalSubscriptionStatus = $globalSubscriptionStatus;
        return $this;
    }
    /**
     * Get image value
     * @return \StructType\RecordRef|null
     */
    public function getImage()
    {
        return $this->image;
    }
    /**
     * Set image value
     * @param \StructType\RecordRef $image
     * @return \StructType\Contact
     */
    public function setImage(\StructType\RecordRef $image = null)
    {
        $this->image = $image;
        return $this;
    }
    /**
     * Get billPay value
     * @return bool|null
     */
    public function getBillPay()
    {
        return $this->billPay;
    }
    /**
     * Set billPay value
     * @param bool $billPay
     * @return \StructType\Contact
     */
    public function setBillPay($billPay = null)
    {
        // validation for constraint: boolean
        if (!is_null($billPay) && !is_bool($billPay)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($billPay, true), gettype($billPay)), __LINE__);
        }
        $this->billPay = $billPay;
        return $this;
    }
    /**
     * Get dateCreated value
     * @return string|null
     */
    public function getDateCreated()
    {
        return $this->dateCreated;
    }
    /**
     * Set dateCreated value
     * @param string $dateCreated
     * @return \StructType\Contact
     */
    public function setDateCreated($dateCreated = null)
    {
        // validation for constraint: string
        if (!is_null($dateCreated) && !is_string($dateCreated)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($dateCreated, true), gettype($dateCreated)), __LINE__);
        }
        $this->dateCreated = $dateCreated;
        return $this;
    }
    /**
     * Get lastModifiedDate value
     * @return string|null
     */
    public function getLastModifiedDate()
    {
        return $this->lastModifiedDate;
    }
    /**
     * Set lastModifiedDate value
     * @param string $lastModifiedDate
     * @return \StructType\Contact
     */
    public function setLastModifiedDate($lastModifiedDate = null)
    {
        // validation for constraint: string
        if (!is_null($lastModifiedDate) && !is_string($lastModifiedDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($lastModifiedDate, true), gettype($lastModifiedDate)), __LINE__);
        }
        $this->lastModifiedDate = $lastModifiedDate;
        return $this;
    }
    /**
     * Get addressbookList value
     * @return \StructType\ContactAddressbookList|null
     */
    public function getAddressbookList()
    {
        return $this->addressbookList;
    }
    /**
     * Set addressbookList value
     * @param \StructType\ContactAddressbookList $addressbookList
     * @return \StructType\Contact
     */
    public function setAddressbookList(\StructType\ContactAddressbookList $addressbookList = null)
    {
        $this->addressbookList = $addressbookList;
        return $this;
    }
    /**
     * Get subscriptionsList value
     * @return \StructType\SubscriptionsList|null
     */
    public function getSubscriptionsList()
    {
        return $this->subscriptionsList;
    }
    /**
     * Set subscriptionsList value
     * @param \StructType\SubscriptionsList $subscriptionsList
     * @return \StructType\Contact
     */
    public function setSubscriptionsList(\StructType\SubscriptionsList $subscriptionsList = null)
    {
        $this->subscriptionsList = $subscriptionsList;
        return $this;
    }
    /**
     * Get customFieldList value
     * @return \StructType\CustomFieldList|null
     */
    public function getCustomFieldList()
    {
        return $this->customFieldList;
    }
    /**
     * Set customFieldList value
     * @param \StructType\CustomFieldList $customFieldList
     * @return \StructType\Contact
     */
    public function setCustomFieldList(\StructType\CustomFieldList $customFieldList = null)
    {
        $this->customFieldList = $customFieldList;
        return $this;
    }
    /**
     * Get internalId value
     * @return string|null
     */
    public function getInternalId()
    {
        return $this->internalId;
    }
    /**
     * Set internalId value
     * @param string $internalId
     * @return \StructType\Contact
     */
    public function setInternalId($internalId = null)
    {
        // validation for constraint: string
        if (!is_null($internalId) && !is_string($internalId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($internalId, true), gettype($internalId)), __LINE__);
        }
        $this->internalId = $internalId;
        return $this;
    }
    /**
     * Get externalId value
     * @return string|null
     */
    public function getExternalId()
    {
        return $this->externalId;
    }
    /**
     * Set externalId value
     * @param string $externalId
     * @return \StructType\Contact
     */
    public function setExternalId($externalId = null)
    {
        // validation for constraint: string
        if (!is_null($externalId) && !is_string($externalId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($externalId, true), gettype($externalId)), __LINE__);
        }
        $this->externalId = $externalId;
        return $this;
    }
}
