<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for ClientCriteria StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:ClientCriteria
 * @subpackage Structs
 */
class ClientCriteria extends AbstractCriteria
{
    /**
     * The AccountName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $AccountName;
    /**
     * The CardId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $CardId;
    /**
     * The ContactId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfguid
     */
    public $ContactId;
    /**
     * The CrmId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $CrmId;
    /**
     * The Email
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $Email;
    /**
     * The FirstName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $FirstName;
    /**
     * The LastName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $LastName;
    /**
     * The OtherName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $OtherName;
    /**
     * The Phone
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $Phone;
    /**
     * The VatRegistrationNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $VatRegistrationNumber;
    /**
     * The WebSite
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $WebSite;
    /**
     * The ZipCode
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $ZipCode;
    /**
     * Constructor method for ClientCriteria
     * @uses ClientCriteria::setAccountName()
     * @uses ClientCriteria::setCardId()
     * @uses ClientCriteria::setContactId()
     * @uses ClientCriteria::setCrmId()
     * @uses ClientCriteria::setEmail()
     * @uses ClientCriteria::setFirstName()
     * @uses ClientCriteria::setLastName()
     * @uses ClientCriteria::setOtherName()
     * @uses ClientCriteria::setPhone()
     * @uses ClientCriteria::setVatRegistrationNumber()
     * @uses ClientCriteria::setWebSite()
     * @uses ClientCriteria::setZipCode()
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $accountName
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $cardId
     * @param \patest\StructType\SinglePropertyCriteriaOfguid $contactId
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $crmId
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $email
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $firstName
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $lastName
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $otherName
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $phone
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $vatRegistrationNumber
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $webSite
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $zipCode
     */
    public function __construct(\patest\StructType\SinglePropertyCriteriaOfstring $accountName = null, \patest\StructType\SinglePropertyCriteriaOfstring $cardId = null, \patest\StructType\SinglePropertyCriteriaOfguid $contactId = null, \patest\StructType\SinglePropertyCriteriaOfstring $crmId = null, \patest\StructType\SinglePropertyCriteriaOfstring $email = null, \patest\StructType\SinglePropertyCriteriaOfstring $firstName = null, \patest\StructType\SinglePropertyCriteriaOfstring $lastName = null, \patest\StructType\SinglePropertyCriteriaOfstring $otherName = null, \patest\StructType\SinglePropertyCriteriaOfstring $phone = null, \patest\StructType\SinglePropertyCriteriaOfstring $vatRegistrationNumber = null, \patest\StructType\SinglePropertyCriteriaOfstring $webSite = null, \patest\StructType\SinglePropertyCriteriaOfstring $zipCode = null)
    {
        $this
            ->setAccountName($accountName)
            ->setCardId($cardId)
            ->setContactId($contactId)
            ->setCrmId($crmId)
            ->setEmail($email)
            ->setFirstName($firstName)
            ->setLastName($lastName)
            ->setOtherName($otherName)
            ->setPhone($phone)
            ->setVatRegistrationNumber($vatRegistrationNumber)
            ->setWebSite($webSite)
            ->setZipCode($zipCode);
    }
    /**
     * Get AccountName 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\SinglePropertyCriteriaOfstring|null
     */
    public function getAccountName()
    {
        return isset($this->AccountName) ? $this->AccountName : null;
    }
    /**
     * Set AccountName 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\SinglePropertyCriteriaOfstring $accountName
     * @return \patest\StructType\ClientCriteria
     */
    public function setAccountName(\patest\StructType\SinglePropertyCriteriaOfstring $accountName = null)
    {
        if (is_null($accountName) || (is_array($accountName) && empty($accountName))) {
            unset($this->AccountName);
        } else {
            $this->AccountName = $accountName;
        }
        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 \patest\StructType\SinglePropertyCriteriaOfstring|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 \patest\StructType\SinglePropertyCriteriaOfstring $cardId
     * @return \patest\StructType\ClientCriteria
     */
    public function setCardId(\patest\StructType\SinglePropertyCriteriaOfstring $cardId = null)
    {
        if (is_null($cardId) || (is_array($cardId) && empty($cardId))) {
            unset($this->CardId);
        } else {
            $this->CardId = $cardId;
        }
        return $this;
    }
    /**
     * Get ContactId 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\SinglePropertyCriteriaOfguid|null
     */
    public function getContactId()
    {
        return isset($this->ContactId) ? $this->ContactId : null;
    }
    /**
     * Set ContactId 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\SinglePropertyCriteriaOfguid $contactId
     * @return \patest\StructType\ClientCriteria
     */
    public function setContactId(\patest\StructType\SinglePropertyCriteriaOfguid $contactId = null)
    {
        if (is_null($contactId) || (is_array($contactId) && empty($contactId))) {
            unset($this->ContactId);
        } else {
            $this->ContactId = $contactId;
        }
        return $this;
    }
    /**
     * Get CrmId 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\SinglePropertyCriteriaOfstring|null
     */
    public function getCrmId()
    {
        return isset($this->CrmId) ? $this->CrmId : null;
    }
    /**
     * Set CrmId 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\SinglePropertyCriteriaOfstring $crmId
     * @return \patest\StructType\ClientCriteria
     */
    public function setCrmId(\patest\StructType\SinglePropertyCriteriaOfstring $crmId = null)
    {
        if (is_null($crmId) || (is_array($crmId) && empty($crmId))) {
            unset($this->CrmId);
        } else {
            $this->CrmId = $crmId;
        }
        return $this;
    }
    /**
     * Get Email value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\SinglePropertyCriteriaOfstring|null
     */
    public function getEmail()
    {
        return isset($this->Email) ? $this->Email : null;
    }
    /**
     * Set Email value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $email
     * @return \patest\StructType\ClientCriteria
     */
    public function setEmail(\patest\StructType\SinglePropertyCriteriaOfstring $email = null)
    {
        if (is_null($email) || (is_array($email) && empty($email))) {
            unset($this->Email);
        } else {
            $this->Email = $email;
        }
        return $this;
    }
    /**
     * Get FirstName value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\SinglePropertyCriteriaOfstring|null
     */
    public function getFirstName()
    {
        return isset($this->FirstName) ? $this->FirstName : null;
    }
    /**
     * Set FirstName value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $firstName
     * @return \patest\StructType\ClientCriteria
     */
    public function setFirstName(\patest\StructType\SinglePropertyCriteriaOfstring $firstName = null)
    {
        if (is_null($firstName) || (is_array($firstName) && empty($firstName))) {
            unset($this->FirstName);
        } else {
            $this->FirstName = $firstName;
        }
        return $this;
    }
    /**
     * Get LastName 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\SinglePropertyCriteriaOfstring|null
     */
    public function getLastName()
    {
        return isset($this->LastName) ? $this->LastName : null;
    }
    /**
     * Set LastName 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\SinglePropertyCriteriaOfstring $lastName
     * @return \patest\StructType\ClientCriteria
     */
    public function setLastName(\patest\StructType\SinglePropertyCriteriaOfstring $lastName = null)
    {
        if (is_null($lastName) || (is_array($lastName) && empty($lastName))) {
            unset($this->LastName);
        } else {
            $this->LastName = $lastName;
        }
        return $this;
    }
    /**
     * Get OtherName 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\SinglePropertyCriteriaOfstring|null
     */
    public function getOtherName()
    {
        return isset($this->OtherName) ? $this->OtherName : null;
    }
    /**
     * Set OtherName 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\SinglePropertyCriteriaOfstring $otherName
     * @return \patest\StructType\ClientCriteria
     */
    public function setOtherName(\patest\StructType\SinglePropertyCriteriaOfstring $otherName = null)
    {
        if (is_null($otherName) || (is_array($otherName) && empty($otherName))) {
            unset($this->OtherName);
        } else {
            $this->OtherName = $otherName;
        }
        return $this;
    }
    /**
     * Get Phone value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\SinglePropertyCriteriaOfstring|null
     */
    public function getPhone()
    {
        return isset($this->Phone) ? $this->Phone : null;
    }
    /**
     * Set Phone value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $phone
     * @return \patest\StructType\ClientCriteria
     */
    public function setPhone(\patest\StructType\SinglePropertyCriteriaOfstring $phone = null)
    {
        if (is_null($phone) || (is_array($phone) && empty($phone))) {
            unset($this->Phone);
        } else {
            $this->Phone = $phone;
        }
        return $this;
    }
    /**
     * Get VatRegistrationNumber 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\SinglePropertyCriteriaOfstring|null
     */
    public function getVatRegistrationNumber()
    {
        return isset($this->VatRegistrationNumber) ? $this->VatRegistrationNumber : null;
    }
    /**
     * Set VatRegistrationNumber 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\SinglePropertyCriteriaOfstring $vatRegistrationNumber
     * @return \patest\StructType\ClientCriteria
     */
    public function setVatRegistrationNumber(\patest\StructType\SinglePropertyCriteriaOfstring $vatRegistrationNumber = null)
    {
        if (is_null($vatRegistrationNumber) || (is_array($vatRegistrationNumber) && empty($vatRegistrationNumber))) {
            unset($this->VatRegistrationNumber);
        } else {
            $this->VatRegistrationNumber = $vatRegistrationNumber;
        }
        return $this;
    }
    /**
     * Get WebSite 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\SinglePropertyCriteriaOfstring|null
     */
    public function getWebSite()
    {
        return isset($this->WebSite) ? $this->WebSite : null;
    }
    /**
     * Set WebSite 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\SinglePropertyCriteriaOfstring $webSite
     * @return \patest\StructType\ClientCriteria
     */
    public function setWebSite(\patest\StructType\SinglePropertyCriteriaOfstring $webSite = null)
    {
        if (is_null($webSite) || (is_array($webSite) && empty($webSite))) {
            unset($this->WebSite);
        } else {
            $this->WebSite = $webSite;
        }
        return $this;
    }
    /**
     * Get ZipCode value
     * An additional test has been added (isset) before returning the property value as
     * this property may have been unset before, due to the fact that this property is
     * removable from the request (nillable=true+minOccurs=0)
     * @return \patest\StructType\SinglePropertyCriteriaOfstring|null
     */
    public function getZipCode()
    {
        return isset($this->ZipCode) ? $this->ZipCode : null;
    }
    /**
     * Set ZipCode value
     * This property is removable from request (nillable=true+minOccurs=0), therefore
     * if the value assigned to this property is null, it is removed from this object
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $zipCode
     * @return \patest\StructType\ClientCriteria
     */
    public function setZipCode(\patest\StructType\SinglePropertyCriteriaOfstring $zipCode = null)
    {
        if (is_null($zipCode) || (is_array($zipCode) && empty($zipCode))) {
            unset($this->ZipCode);
        } else {
            $this->ZipCode = $zipCode;
        }
        return $this;
    }
}
