<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Printing.AuxDataItem.StandaloneCustomer StructType
 * @subpackage Structs
 */
class Printing_AuxDataItem_StandaloneCustomer extends Printing_AuxDataItem_StandaloneClient
{
    /**
     * The Birthday
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Birthday;
    /**
     * The CardId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CardId;
    /**
     * The Gender
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Gender;
    /**
     * The IsHouseholdRepresentative
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $IsHouseholdRepresentative;
    /**
     * The JobTitleName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $JobTitleName;
    /**
     * The JobTitleType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $JobTitleType;
    /**
     * The MaritalStatusName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $MaritalStatusName;
    /**
     * The Name
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Printing_AuxDataItem_Customer_PersonName
     */
    public $Name;
    /**
     * The TitleName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\GlobalString
     */
    public $TitleName;
    /**
     * The TitleType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TitleType;
    /**
     * The WorkPlace
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $WorkPlace;
    /**
     * Constructor method for Printing.AuxDataItem.StandaloneCustomer
     * @uses Printing_AuxDataItem_StandaloneCustomer::setBirthday()
     * @uses Printing_AuxDataItem_StandaloneCustomer::setCardId()
     * @uses Printing_AuxDataItem_StandaloneCustomer::setGender()
     * @uses Printing_AuxDataItem_StandaloneCustomer::setIsHouseholdRepresentative()
     * @uses Printing_AuxDataItem_StandaloneCustomer::setJobTitleName()
     * @uses Printing_AuxDataItem_StandaloneCustomer::setJobTitleType()
     * @uses Printing_AuxDataItem_StandaloneCustomer::setMaritalStatusName()
     * @uses Printing_AuxDataItem_StandaloneCustomer::setName()
     * @uses Printing_AuxDataItem_StandaloneCustomer::setTitleName()
     * @uses Printing_AuxDataItem_StandaloneCustomer::setTitleType()
     * @uses Printing_AuxDataItem_StandaloneCustomer::setWorkPlace()
     * @param string $birthday
     * @param string $cardId
     * @param string $gender
     * @param bool $isHouseholdRepresentative
     * @param \patest\StructType\GlobalString $jobTitleName
     * @param string $jobTitleType
     * @param \patest\StructType\GlobalString $maritalStatusName
     * @param \patest\StructType\Printing_AuxDataItem_Customer_PersonName $name
     * @param \patest\StructType\GlobalString $titleName
     * @param string $titleType
     * @param string $workPlace
     */
    public function __construct($birthday = null, $cardId = null, $gender = null, $isHouseholdRepresentative = null, \patest\StructType\GlobalString $jobTitleName = null, $jobTitleType = null, \patest\StructType\GlobalString $maritalStatusName = null, \patest\StructType\Printing_AuxDataItem_Customer_PersonName $name = null, \patest\StructType\GlobalString $titleName = null, $titleType = null, $workPlace = null)
    {
        $this
            ->setBirthday($birthday)
            ->setCardId($cardId)
            ->setGender($gender)
            ->setIsHouseholdRepresentative($isHouseholdRepresentative)
            ->setJobTitleName($jobTitleName)
            ->setJobTitleType($jobTitleType)
            ->setMaritalStatusName($maritalStatusName)
            ->setName($name)
            ->setTitleName($titleName)
            ->setTitleType($titleType)
            ->setWorkPlace($workPlace);
    }
    /**
     * Get Birthday 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 getBirthday()
    {
        return isset($this->Birthday) ? $this->Birthday : null;
    }
    /**
     * Set Birthday 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 $birthday
     * @return \patest\StructType\Printing_AuxDataItem_StandaloneCustomer
     */
    public function setBirthday($birthday = null)
    {
        // validation for constraint: string
        if (!is_null($birthday) && !is_string($birthday)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($birthday, true), gettype($birthday)), __LINE__);
        }
        if (is_null($birthday) || (is_array($birthday) && empty($birthday))) {
            unset($this->Birthday);
        } else {
            $this->Birthday = $birthday;
        }
        return $this;
    }
    /**
     * Get CardId 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 getCardId()
    {
        return isset($this->CardId) ? $this->CardId : null;
    }
    /**
     * Set CardId 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 $cardId
     * @return \patest\StructType\Printing_AuxDataItem_StandaloneCustomer
     */
    public function setCardId($cardId = null)
    {
        // validation for constraint: string
        if (!is_null($cardId) && !is_string($cardId)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($cardId, true), gettype($cardId)), __LINE__);
        }
        if (is_null($cardId) || (is_array($cardId) && empty($cardId))) {
            unset($this->CardId);
        } else {
            $this->CardId = $cardId;
        }
        return $this;
    }
    /**
     * Get Gender 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 getGender()
    {
        return isset($this->Gender) ? $this->Gender : null;
    }
    /**
     * Set Gender 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
     * @uses \patest\EnumType\GenderKind::valueIsValid()
     * @uses \patest\EnumType\GenderKind::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $gender
     * @return \patest\StructType\Printing_AuxDataItem_StandaloneCustomer
     */
    public function setGender($gender = null)
    {
        // validation for constraint: enumeration
        if (!\patest\EnumType\GenderKind::valueIsValid($gender)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \patest\EnumType\GenderKind', is_array($gender) ? implode(', ', $gender) : var_export($gender, true), implode(', ', \patest\EnumType\GenderKind::getValidValues())), __LINE__);
        }
        if (is_null($gender) || (is_array($gender) && empty($gender))) {
            unset($this->Gender);
        } else {
            $this->Gender = $gender;
        }
        return $this;
    }
    /**
     * Get IsHouseholdRepresentative 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 bool|null
     */
    public function getIsHouseholdRepresentative()
    {
        return isset($this->IsHouseholdRepresentative) ? $this->IsHouseholdRepresentative : null;
    }
    /**
     * Set IsHouseholdRepresentative 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 bool $isHouseholdRepresentative
     * @return \patest\StructType\Printing_AuxDataItem_StandaloneCustomer
     */
    public function setIsHouseholdRepresentative($isHouseholdRepresentative = null)
    {
        // validation for constraint: boolean
        if (!is_null($isHouseholdRepresentative) && !is_bool($isHouseholdRepresentative)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isHouseholdRepresentative, true), gettype($isHouseholdRepresentative)), __LINE__);
        }
        if (is_null($isHouseholdRepresentative) || (is_array($isHouseholdRepresentative) && empty($isHouseholdRepresentative))) {
            unset($this->IsHouseholdRepresentative);
        } else {
            $this->IsHouseholdRepresentative = $isHouseholdRepresentative;
        }
        return $this;
    }
    /**
     * Get JobTitleName value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\GlobalString|null
     */
    public function getJobTitleName()
    {
        return isset($this->JobTitleName) ? $this->JobTitleName : null;
    }
    /**
     * Set JobTitleName value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\GlobalString $jobTitleName
     * @return \patest\StructType\Printing_AuxDataItem_StandaloneCustomer
     */
    public function setJobTitleName(\patest\StructType\GlobalString $jobTitleName = null)
    {
        if (is_null($jobTitleName) || (is_array($jobTitleName) && empty($jobTitleName))) {
            unset($this->JobTitleName);
        } else {
            $this->JobTitleName = $jobTitleName;
        }
        return $this;
    }
    /**
     * Get JobTitleType 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 getJobTitleType()
    {
        return isset($this->JobTitleType) ? $this->JobTitleType : null;
    }
    /**
     * Set JobTitleType 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
     * @uses \patest\EnumType\TitleKind::valueIsValid()
     * @uses \patest\EnumType\TitleKind::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $jobTitleType
     * @return \patest\StructType\Printing_AuxDataItem_StandaloneCustomer
     */
    public function setJobTitleType($jobTitleType = null)
    {
        // validation for constraint: enumeration
        if (!\patest\EnumType\TitleKind::valueIsValid($jobTitleType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \patest\EnumType\TitleKind', is_array($jobTitleType) ? implode(', ', $jobTitleType) : var_export($jobTitleType, true), implode(', ', \patest\EnumType\TitleKind::getValidValues())), __LINE__);
        }
        if (is_null($jobTitleType) || (is_array($jobTitleType) && empty($jobTitleType))) {
            unset($this->JobTitleType);
        } else {
            $this->JobTitleType = $jobTitleType;
        }
        return $this;
    }
    /**
     * Get MaritalStatusName value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\GlobalString|null
     */
    public function getMaritalStatusName()
    {
        return isset($this->MaritalStatusName) ? $this->MaritalStatusName : null;
    }
    /**
     * Set MaritalStatusName value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\GlobalString $maritalStatusName
     * @return \patest\StructType\Printing_AuxDataItem_StandaloneCustomer
     */
    public function setMaritalStatusName(\patest\StructType\GlobalString $maritalStatusName = null)
    {
        if (is_null($maritalStatusName) || (is_array($maritalStatusName) && empty($maritalStatusName))) {
            unset($this->MaritalStatusName);
        } else {
            $this->MaritalStatusName = $maritalStatusName;
        }
        return $this;
    }
    /**
     * Get Name value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\Printing_AuxDataItem_Customer_PersonName|null
     */
    public function getName()
    {
        return isset($this->Name) ? $this->Name : null;
    }
    /**
     * Set Name value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\Printing_AuxDataItem_Customer_PersonName $name
     * @return \patest\StructType\Printing_AuxDataItem_StandaloneCustomer
     */
    public function setName(\patest\StructType\Printing_AuxDataItem_Customer_PersonName $name = null)
    {
        if (is_null($name) || (is_array($name) && empty($name))) {
            unset($this->Name);
        } else {
            $this->Name = $name;
        }
        return $this;
    }
    /**
     * Get TitleName value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\GlobalString|null
     */
    public function getTitleName()
    {
        return isset($this->TitleName) ? $this->TitleName : null;
    }
    /**
     * Set TitleName value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\GlobalString $titleName
     * @return \patest\StructType\Printing_AuxDataItem_StandaloneCustomer
     */
    public function setTitleName(\patest\StructType\GlobalString $titleName = null)
    {
        if (is_null($titleName) || (is_array($titleName) && empty($titleName))) {
            unset($this->TitleName);
        } else {
            $this->TitleName = $titleName;
        }
        return $this;
    }
    /**
     * Get TitleType 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 getTitleType()
    {
        return isset($this->TitleType) ? $this->TitleType : null;
    }
    /**
     * Set TitleType 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
     * @uses \patest\EnumType\TitleKind::valueIsValid()
     * @uses \patest\EnumType\TitleKind::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $titleType
     * @return \patest\StructType\Printing_AuxDataItem_StandaloneCustomer
     */
    public function setTitleType($titleType = null)
    {
        // validation for constraint: enumeration
        if (!\patest\EnumType\TitleKind::valueIsValid($titleType)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \patest\EnumType\TitleKind', is_array($titleType) ? implode(', ', $titleType) : var_export($titleType, true), implode(', ', \patest\EnumType\TitleKind::getValidValues())), __LINE__);
        }
        if (is_null($titleType) || (is_array($titleType) && empty($titleType))) {
            unset($this->TitleType);
        } else {
            $this->TitleType = $titleType;
        }
        return $this;
    }
    /**
     * Get WorkPlace 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 getWorkPlace()
    {
        return isset($this->WorkPlace) ? $this->WorkPlace : null;
    }
    /**
     * Set WorkPlace 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 $workPlace
     * @return \patest\StructType\Printing_AuxDataItem_StandaloneCustomer
     */
    public function setWorkPlace($workPlace = null)
    {
        // validation for constraint: string
        if (!is_null($workPlace) && !is_string($workPlace)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($workPlace, true), gettype($workPlace)), __LINE__);
        }
        if (is_null($workPlace) || (is_array($workPlace) && empty($workPlace))) {
            unset($this->WorkPlace);
        } else {
            $this->WorkPlace = $workPlace;
        }
        return $this;
    }
}
