<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for GiftCardCriteria StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:GiftCardCriteria
 * @subpackage Structs
 */
class GiftCardCriteria extends AbstractCriteria
{
    /**
     * The GiftCardId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfguid
     */
    public $GiftCardId;
    /**
     * The GiftCardNumber
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfstring
     */
    public $GiftCardNumber;
    /**
     * The GiftCardProgramId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfguid
     */
    public $GiftCardProgramId;
    /**
     * The GiftCardTypeId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfguid
     */
    public $GiftCardTypeId;
    /**
     * The TransactionGuid
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\SinglePropertyCriteriaOfguid
     */
    public $TransactionGuid;
    /**
     * Constructor method for GiftCardCriteria
     * @uses GiftCardCriteria::setGiftCardId()
     * @uses GiftCardCriteria::setGiftCardNumber()
     * @uses GiftCardCriteria::setGiftCardProgramId()
     * @uses GiftCardCriteria::setGiftCardTypeId()
     * @uses GiftCardCriteria::setTransactionGuid()
     * @param \patest\StructType\SinglePropertyCriteriaOfguid $giftCardId
     * @param \patest\StructType\SinglePropertyCriteriaOfstring $giftCardNumber
     * @param \patest\StructType\SinglePropertyCriteriaOfguid $giftCardProgramId
     * @param \patest\StructType\SinglePropertyCriteriaOfguid $giftCardTypeId
     * @param \patest\StructType\SinglePropertyCriteriaOfguid $transactionGuid
     */
    public function __construct(\patest\StructType\SinglePropertyCriteriaOfguid $giftCardId = null, \patest\StructType\SinglePropertyCriteriaOfstring $giftCardNumber = null, \patest\StructType\SinglePropertyCriteriaOfguid $giftCardProgramId = null, \patest\StructType\SinglePropertyCriteriaOfguid $giftCardTypeId = null, \patest\StructType\SinglePropertyCriteriaOfguid $transactionGuid = null)
    {
        $this
            ->setGiftCardId($giftCardId)
            ->setGiftCardNumber($giftCardNumber)
            ->setGiftCardProgramId($giftCardProgramId)
            ->setGiftCardTypeId($giftCardTypeId)
            ->setTransactionGuid($transactionGuid);
    }
    /**
     * Get GiftCardId 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 getGiftCardId()
    {
        return isset($this->GiftCardId) ? $this->GiftCardId : null;
    }
    /**
     * Set GiftCardId 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 $giftCardId
     * @return \patest\StructType\GiftCardCriteria
     */
    public function setGiftCardId(\patest\StructType\SinglePropertyCriteriaOfguid $giftCardId = null)
    {
        if (is_null($giftCardId) || (is_array($giftCardId) && empty($giftCardId))) {
            unset($this->GiftCardId);
        } else {
            $this->GiftCardId = $giftCardId;
        }
        return $this;
    }
    /**
     * Get GiftCardNumber 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 getGiftCardNumber()
    {
        return isset($this->GiftCardNumber) ? $this->GiftCardNumber : null;
    }
    /**
     * Set GiftCardNumber 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 $giftCardNumber
     * @return \patest\StructType\GiftCardCriteria
     */
    public function setGiftCardNumber(\patest\StructType\SinglePropertyCriteriaOfstring $giftCardNumber = null)
    {
        if (is_null($giftCardNumber) || (is_array($giftCardNumber) && empty($giftCardNumber))) {
            unset($this->GiftCardNumber);
        } else {
            $this->GiftCardNumber = $giftCardNumber;
        }
        return $this;
    }
    /**
     * Get GiftCardProgramId 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 getGiftCardProgramId()
    {
        return isset($this->GiftCardProgramId) ? $this->GiftCardProgramId : null;
    }
    /**
     * Set GiftCardProgramId 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 $giftCardProgramId
     * @return \patest\StructType\GiftCardCriteria
     */
    public function setGiftCardProgramId(\patest\StructType\SinglePropertyCriteriaOfguid $giftCardProgramId = null)
    {
        if (is_null($giftCardProgramId) || (is_array($giftCardProgramId) && empty($giftCardProgramId))) {
            unset($this->GiftCardProgramId);
        } else {
            $this->GiftCardProgramId = $giftCardProgramId;
        }
        return $this;
    }
    /**
     * Get GiftCardTypeId 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 getGiftCardTypeId()
    {
        return isset($this->GiftCardTypeId) ? $this->GiftCardTypeId : null;
    }
    /**
     * Set GiftCardTypeId 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 $giftCardTypeId
     * @return \patest\StructType\GiftCardCriteria
     */
    public function setGiftCardTypeId(\patest\StructType\SinglePropertyCriteriaOfguid $giftCardTypeId = null)
    {
        if (is_null($giftCardTypeId) || (is_array($giftCardTypeId) && empty($giftCardTypeId))) {
            unset($this->GiftCardTypeId);
        } else {
            $this->GiftCardTypeId = $giftCardTypeId;
        }
        return $this;
    }
    /**
     * Get TransactionGuid 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 getTransactionGuid()
    {
        return isset($this->TransactionGuid) ? $this->TransactionGuid : null;
    }
    /**
     * Set TransactionGuid 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 $transactionGuid
     * @return \patest\StructType\GiftCardCriteria
     */
    public function setTransactionGuid(\patest\StructType\SinglePropertyCriteriaOfguid $transactionGuid = null)
    {
        if (is_null($transactionGuid) || (is_array($transactionGuid) && empty($transactionGuid))) {
            unset($this->TransactionGuid);
        } else {
            $this->TransactionGuid = $transactionGuid;
        }
        return $this;
    }
}
