<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for MembershipCriteria StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:MembershipCriteria
 * @subpackage Structs
 */
class MembershipCriteria extends AbstractCriteria
{
    /**
     * The MembershipAllianceId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfguid
     */
    public $MembershipAllianceId;
    /**
     * The MembershipDefinitionId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfguid
     */
    public $MembershipDefinitionId;
    /**
     * The MembershipId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfguid
     */
    public $MembershipId;
    /**
     * The MembershipNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $MembershipNumber;
    /**
     * The OwnerCardId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $OwnerCardId;
    /**
     * The OwnerCrmId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $OwnerCrmId;
    /**
     * The OwnerLastName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $OwnerLastName;
    /**
     * The OwnerPhone
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $OwnerPhone;
    /**
     * The OwnerZipCode
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $OwnerZipCode;
    /**
     * The RenewedOnly
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfboolean
     */
    public $RenewedOnly;
    /**
     * The ReservedOnly
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfboolean
     */
    public $ReservedOnly;
    /**
     * The SchemaId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfguid
     */
    public $SchemaId;
    /**
     * The SchemaLevelId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfguid
     */
    public $SchemaLevelId;
    /**
     * The UnprintedOnly
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfboolean
     */
    public $UnprintedOnly;
    /**
     * The PrintStatus
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfPrintStatus8Q8HnG_P7
     */
    public $PrintStatus;
    /**
     * Constructor method for MembershipCriteria
     * @uses MembershipCriteria::setMembershipAllianceId()
     * @uses MembershipCriteria::setMembershipDefinitionId()
     * @uses MembershipCriteria::setMembershipId()
     * @uses MembershipCriteria::setMembershipNumber()
     * @uses MembershipCriteria::setOwnerCardId()
     * @uses MembershipCriteria::setOwnerCrmId()
     * @uses MembershipCriteria::setOwnerLastName()
     * @uses MembershipCriteria::setOwnerPhone()
     * @uses MembershipCriteria::setOwnerZipCode()
     * @uses MembershipCriteria::setRenewedOnly()
     * @uses MembershipCriteria::setReservedOnly()
     * @uses MembershipCriteria::setSchemaId()
     * @uses MembershipCriteria::setSchemaLevelId()
     * @uses MembershipCriteria::setUnprintedOnly()
     * @uses MembershipCriteria::setPrintStatus()
     * @param \patest\StructType\SinglePropertyCriteriaOfguid $membershipAllianceId
     * @param \patest\StructType\SinglePropertyCriteriaOfguid $membershipDefinitionId
     * @param \patest\StructType\SinglePropertyCriteriaOfguid $membershipId
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $membershipNumber
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $ownerCardId
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $ownerCrmId
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $ownerLastName
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $ownerPhone
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $ownerZipCode
     * @param \patest\StructType\SinglePropertyCriteriaOfboolean $renewedOnly
     * @param \patest\StructType\SinglePropertyCriteriaOfboolean $reservedOnly
     * @param \patest\StructType\SinglePropertyCriteriaOfguid $schemaId
     * @param \patest\StructType\SinglePropertyCriteriaOfguid $schemaLevelId
     * @param \patest\StructType\SinglePropertyCriteriaOfboolean $unprintedOnly
     * @param \patest\StructType\SinglePropertyCriteriaOfPrintStatus8Q8HnG_P7 $printStatus
     */
    public function __construct(\patest\StructType\SinglePropertyCriteriaOfguid $membershipAllianceId = null, \patest\StructType\SinglePropertyCriteriaOfguid $membershipDefinitionId = null, \patest\StructType\SinglePropertyCriteriaOfguid $membershipId = null, \patest\StructType\SinglePropertyCriteriaOfstring $membershipNumber = null, \patest\StructType\SinglePropertyCriteriaOfstring $ownerCardId = null, \patest\StructType\SinglePropertyCriteriaOfstring $ownerCrmId = null, \patest\StructType\SinglePropertyCriteriaOfstring $ownerLastName = null, \patest\StructType\SinglePropertyCriteriaOfstring $ownerPhone = null, \patest\StructType\SinglePropertyCriteriaOfstring $ownerZipCode = null, \patest\StructType\SinglePropertyCriteriaOfboolean $renewedOnly = null, \patest\StructType\SinglePropertyCriteriaOfboolean $reservedOnly = null, \patest\StructType\SinglePropertyCriteriaOfguid $schemaId = null, \patest\StructType\SinglePropertyCriteriaOfguid $schemaLevelId = null, \patest\StructType\SinglePropertyCriteriaOfboolean $unprintedOnly = null, \patest\StructType\SinglePropertyCriteriaOfPrintStatus8Q8HnG_P7 $printStatus = null)
    {
        $this
            ->setMembershipAllianceId($membershipAllianceId)
            ->setMembershipDefinitionId($membershipDefinitionId)
            ->setMembershipId($membershipId)
            ->setMembershipNumber($membershipNumber)
            ->setOwnerCardId($ownerCardId)
            ->setOwnerCrmId($ownerCrmId)
            ->setOwnerLastName($ownerLastName)
            ->setOwnerPhone($ownerPhone)
            ->setOwnerZipCode($ownerZipCode)
            ->setRenewedOnly($renewedOnly)
            ->setReservedOnly($reservedOnly)
            ->setSchemaId($schemaId)
            ->setSchemaLevelId($schemaLevelId)
            ->setUnprintedOnly($unprintedOnly)
            ->setPrintStatus($printStatus);
    }
    /**
     * Get MembershipAllianceId 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 getMembershipAllianceId()
    {
        return isset($this->MembershipAllianceId) ? $this->MembershipAllianceId : null;
    }
    /**
     * Set MembershipAllianceId 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 $membershipAllianceId
     * @return \patest\StructType\MembershipCriteria
     */
    public function setMembershipAllianceId(\patest\StructType\SinglePropertyCriteriaOfguid $membershipAllianceId = null)
    {
        if (is_null($membershipAllianceId) || (is_array($membershipAllianceId) && empty($membershipAllianceId))) {
            unset($this->MembershipAllianceId);
        } else {
            $this->MembershipAllianceId = $membershipAllianceId;
        }
        return $this;
    }
    /**
     * Get MembershipDefinitionId 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 getMembershipDefinitionId()
    {
        return isset($this->MembershipDefinitionId) ? $this->MembershipDefinitionId : null;
    }
    /**
     * Set MembershipDefinitionId 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 $membershipDefinitionId
     * @return \patest\StructType\MembershipCriteria
     */
    public function setMembershipDefinitionId(\patest\StructType\SinglePropertyCriteriaOfguid $membershipDefinitionId = null)
    {
        if (is_null($membershipDefinitionId) || (is_array($membershipDefinitionId) && empty($membershipDefinitionId))) {
            unset($this->MembershipDefinitionId);
        } else {
            $this->MembershipDefinitionId = $membershipDefinitionId;
        }
        return $this;
    }
    /**
     * Get MembershipId 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 getMembershipId()
    {
        return isset($this->MembershipId) ? $this->MembershipId : null;
    }
    /**
     * Set MembershipId 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 $membershipId
     * @return \patest\StructType\MembershipCriteria
     */
    public function setMembershipId(\patest\StructType\SinglePropertyCriteriaOfguid $membershipId = null)
    {
        if (is_null($membershipId) || (is_array($membershipId) && empty($membershipId))) {
            unset($this->MembershipId);
        } else {
            $this->MembershipId = $membershipId;
        }
        return $this;
    }
    /**
     * Get MembershipNumber 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 getMembershipNumber()
    {
        return isset($this->MembershipNumber) ? $this->MembershipNumber : null;
    }
    /**
     * Set MembershipNumber 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 $membershipNumber
     * @return \patest\StructType\MembershipCriteria
     */
    public function setMembershipNumber(\patest\StructType\SinglePropertyCriteriaOfstring $membershipNumber = null)
    {
        if (is_null($membershipNumber) || (is_array($membershipNumber) && empty($membershipNumber))) {
            unset($this->MembershipNumber);
        } else {
            $this->MembershipNumber = $membershipNumber;
        }
        return $this;
    }
    /**
     * Get OwnerCardId 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 getOwnerCardId()
    {
        return isset($this->OwnerCardId) ? $this->OwnerCardId : null;
    }
    /**
     * Set OwnerCardId 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 $ownerCardId
     * @return \patest\StructType\MembershipCriteria
     */
    public function setOwnerCardId(\patest\StructType\SinglePropertyCriteriaOfstring $ownerCardId = null)
    {
        if (is_null($ownerCardId) || (is_array($ownerCardId) && empty($ownerCardId))) {
            unset($this->OwnerCardId);
        } else {
            $this->OwnerCardId = $ownerCardId;
        }
        return $this;
    }
    /**
     * Get OwnerCrmId 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 getOwnerCrmId()
    {
        return isset($this->OwnerCrmId) ? $this->OwnerCrmId : null;
    }
    /**
     * Set OwnerCrmId 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 $ownerCrmId
     * @return \patest\StructType\MembershipCriteria
     */
    public function setOwnerCrmId(\patest\StructType\SinglePropertyCriteriaOfstring $ownerCrmId = null)
    {
        if (is_null($ownerCrmId) || (is_array($ownerCrmId) && empty($ownerCrmId))) {
            unset($this->OwnerCrmId);
        } else {
            $this->OwnerCrmId = $ownerCrmId;
        }
        return $this;
    }
    /**
     * Get OwnerLastName 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 getOwnerLastName()
    {
        return isset($this->OwnerLastName) ? $this->OwnerLastName : null;
    }
    /**
     * Set OwnerLastName 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 $ownerLastName
     * @return \patest\StructType\MembershipCriteria
     */
    public function setOwnerLastName(\patest\StructType\SinglePropertyCriteriaOfstring $ownerLastName = null)
    {
        if (is_null($ownerLastName) || (is_array($ownerLastName) && empty($ownerLastName))) {
            unset($this->OwnerLastName);
        } else {
            $this->OwnerLastName = $ownerLastName;
        }
        return $this;
    }
    /**
     * Get OwnerPhone 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 getOwnerPhone()
    {
        return isset($this->OwnerPhone) ? $this->OwnerPhone : null;
    }
    /**
     * Set OwnerPhone 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 $ownerPhone
     * @return \patest\StructType\MembershipCriteria
     */
    public function setOwnerPhone(\patest\StructType\SinglePropertyCriteriaOfstring $ownerPhone = null)
    {
        if (is_null($ownerPhone) || (is_array($ownerPhone) && empty($ownerPhone))) {
            unset($this->OwnerPhone);
        } else {
            $this->OwnerPhone = $ownerPhone;
        }
        return $this;
    }
    /**
     * Get OwnerZipCode 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 getOwnerZipCode()
    {
        return isset($this->OwnerZipCode) ? $this->OwnerZipCode : null;
    }
    /**
     * Set OwnerZipCode 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 $ownerZipCode
     * @return \patest\StructType\MembershipCriteria
     */
    public function setOwnerZipCode(\patest\StructType\SinglePropertyCriteriaOfstring $ownerZipCode = null)
    {
        if (is_null($ownerZipCode) || (is_array($ownerZipCode) && empty($ownerZipCode))) {
            unset($this->OwnerZipCode);
        } else {
            $this->OwnerZipCode = $ownerZipCode;
        }
        return $this;
    }
    /**
     * Get RenewedOnly 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\SinglePropertyCriteriaOfboolean|null
     */
    public function getRenewedOnly()
    {
        return isset($this->RenewedOnly) ? $this->RenewedOnly : null;
    }
    /**
     * Set RenewedOnly 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\SinglePropertyCriteriaOfboolean $renewedOnly
     * @return \patest\StructType\MembershipCriteria
     */
    public function setRenewedOnly(\patest\StructType\SinglePropertyCriteriaOfboolean $renewedOnly = null)
    {
        if (is_null($renewedOnly) || (is_array($renewedOnly) && empty($renewedOnly))) {
            unset($this->RenewedOnly);
        } else {
            $this->RenewedOnly = $renewedOnly;
        }
        return $this;
    }
    /**
     * Get ReservedOnly 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\SinglePropertyCriteriaOfboolean|null
     */
    public function getReservedOnly()
    {
        return isset($this->ReservedOnly) ? $this->ReservedOnly : null;
    }
    /**
     * Set ReservedOnly 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\SinglePropertyCriteriaOfboolean $reservedOnly
     * @return \patest\StructType\MembershipCriteria
     */
    public function setReservedOnly(\patest\StructType\SinglePropertyCriteriaOfboolean $reservedOnly = null)
    {
        if (is_null($reservedOnly) || (is_array($reservedOnly) && empty($reservedOnly))) {
            unset($this->ReservedOnly);
        } else {
            $this->ReservedOnly = $reservedOnly;
        }
        return $this;
    }
    /**
     * Get SchemaId 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 getSchemaId()
    {
        return isset($this->SchemaId) ? $this->SchemaId : null;
    }
    /**
     * Set SchemaId 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 $schemaId
     * @return \patest\StructType\MembershipCriteria
     */
    public function setSchemaId(\patest\StructType\SinglePropertyCriteriaOfguid $schemaId = null)
    {
        if (is_null($schemaId) || (is_array($schemaId) && empty($schemaId))) {
            unset($this->SchemaId);
        } else {
            $this->SchemaId = $schemaId;
        }
        return $this;
    }
    /**
     * Get SchemaLevelId 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 getSchemaLevelId()
    {
        return isset($this->SchemaLevelId) ? $this->SchemaLevelId : null;
    }
    /**
     * Set SchemaLevelId 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 $schemaLevelId
     * @return \patest\StructType\MembershipCriteria
     */
    public function setSchemaLevelId(\patest\StructType\SinglePropertyCriteriaOfguid $schemaLevelId = null)
    {
        if (is_null($schemaLevelId) || (is_array($schemaLevelId) && empty($schemaLevelId))) {
            unset($this->SchemaLevelId);
        } else {
            $this->SchemaLevelId = $schemaLevelId;
        }
        return $this;
    }
    /**
     * Get UnprintedOnly 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\SinglePropertyCriteriaOfboolean|null
     */
    public function getUnprintedOnly()
    {
        return isset($this->UnprintedOnly) ? $this->UnprintedOnly : null;
    }
    /**
     * Set UnprintedOnly 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\SinglePropertyCriteriaOfboolean $unprintedOnly
     * @return \patest\StructType\MembershipCriteria
     */
    public function setUnprintedOnly(\patest\StructType\SinglePropertyCriteriaOfboolean $unprintedOnly = null)
    {
        if (is_null($unprintedOnly) || (is_array($unprintedOnly) && empty($unprintedOnly))) {
            unset($this->UnprintedOnly);
        } else {
            $this->UnprintedOnly = $unprintedOnly;
        }
        return $this;
    }
    /**
     * Get PrintStatus 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\SinglePropertyCriteriaOfPrintStatus8Q8HnG_P7|null
     */
    public function getPrintStatus()
    {
        return isset($this->PrintStatus) ? $this->PrintStatus : null;
    }
    /**
     * Set PrintStatus 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\SinglePropertyCriteriaOfPrintStatus8Q8HnG_P7 $printStatus
     * @return \patest\StructType\MembershipCriteria
     */
    public function setPrintStatus(\patest\StructType\SinglePropertyCriteriaOfPrintStatus8Q8HnG_P7 $printStatus = null)
    {
        if (is_null($printStatus) || (is_array($printStatus) && empty($printStatus))) {
            unset($this->PrintStatus);
        } else {
            $this->PrintStatus = $printStatus;
        }
        return $this;
    }
}
