<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Payment.LoyaltyPointsFilter StructType
 * @subpackage Structs
 */
class Payment_LoyaltyPointsFilter extends FilterEntity
{
    /**
     * The ExpiryFromDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ExpiryFromDate;
    /**
     * The ExpiryToDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ExpiryToDate;
    /**
     * The GrantFromDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $GrantFromDate;
    /**
     * The GrantToDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $GrantToDate;
    /**
     * The PendingFromDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $PendingFromDate;
    /**
     * The PendingToDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $PendingToDate;
    /**
     * Constructor method for Payment.LoyaltyPointsFilter
     * @uses Payment_LoyaltyPointsFilter::setExpiryFromDate()
     * @uses Payment_LoyaltyPointsFilter::setExpiryToDate()
     * @uses Payment_LoyaltyPointsFilter::setGrantFromDate()
     * @uses Payment_LoyaltyPointsFilter::setGrantToDate()
     * @uses Payment_LoyaltyPointsFilter::setPendingFromDate()
     * @uses Payment_LoyaltyPointsFilter::setPendingToDate()
     * @param string $expiryFromDate
     * @param string $expiryToDate
     * @param string $grantFromDate
     * @param string $grantToDate
     * @param string $pendingFromDate
     * @param string $pendingToDate
     */
    public function __construct($expiryFromDate = null, $expiryToDate = null, $grantFromDate = null, $grantToDate = null, $pendingFromDate = null, $pendingToDate = null)
    {
        $this
            ->setExpiryFromDate($expiryFromDate)
            ->setExpiryToDate($expiryToDate)
            ->setGrantFromDate($grantFromDate)
            ->setGrantToDate($grantToDate)
            ->setPendingFromDate($pendingFromDate)
            ->setPendingToDate($pendingToDate);
    }
    /**
     * Get ExpiryFromDate 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 getExpiryFromDate()
    {
        return isset($this->ExpiryFromDate) ? $this->ExpiryFromDate : null;
    }
    /**
     * Set ExpiryFromDate 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 $expiryFromDate
     * @return \patest\StructType\Payment_LoyaltyPointsFilter
     */
    public function setExpiryFromDate($expiryFromDate = null)
    {
        // validation for constraint: string
        if (!is_null($expiryFromDate) && !is_string($expiryFromDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($expiryFromDate, true), gettype($expiryFromDate)), __LINE__);
        }
        if (is_null($expiryFromDate) || (is_array($expiryFromDate) && empty($expiryFromDate))) {
            unset($this->ExpiryFromDate);
        } else {
            $this->ExpiryFromDate = $expiryFromDate;
        }
        return $this;
    }
    /**
     * Get ExpiryToDate 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 getExpiryToDate()
    {
        return isset($this->ExpiryToDate) ? $this->ExpiryToDate : null;
    }
    /**
     * Set ExpiryToDate 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 $expiryToDate
     * @return \patest\StructType\Payment_LoyaltyPointsFilter
     */
    public function setExpiryToDate($expiryToDate = null)
    {
        // validation for constraint: string
        if (!is_null($expiryToDate) && !is_string($expiryToDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($expiryToDate, true), gettype($expiryToDate)), __LINE__);
        }
        if (is_null($expiryToDate) || (is_array($expiryToDate) && empty($expiryToDate))) {
            unset($this->ExpiryToDate);
        } else {
            $this->ExpiryToDate = $expiryToDate;
        }
        return $this;
    }
    /**
     * Get GrantFromDate 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 getGrantFromDate()
    {
        return isset($this->GrantFromDate) ? $this->GrantFromDate : null;
    }
    /**
     * Set GrantFromDate 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 $grantFromDate
     * @return \patest\StructType\Payment_LoyaltyPointsFilter
     */
    public function setGrantFromDate($grantFromDate = null)
    {
        // validation for constraint: string
        if (!is_null($grantFromDate) && !is_string($grantFromDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($grantFromDate, true), gettype($grantFromDate)), __LINE__);
        }
        if (is_null($grantFromDate) || (is_array($grantFromDate) && empty($grantFromDate))) {
            unset($this->GrantFromDate);
        } else {
            $this->GrantFromDate = $grantFromDate;
        }
        return $this;
    }
    /**
     * Get GrantToDate 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 getGrantToDate()
    {
        return isset($this->GrantToDate) ? $this->GrantToDate : null;
    }
    /**
     * Set GrantToDate 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 $grantToDate
     * @return \patest\StructType\Payment_LoyaltyPointsFilter
     */
    public function setGrantToDate($grantToDate = null)
    {
        // validation for constraint: string
        if (!is_null($grantToDate) && !is_string($grantToDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($grantToDate, true), gettype($grantToDate)), __LINE__);
        }
        if (is_null($grantToDate) || (is_array($grantToDate) && empty($grantToDate))) {
            unset($this->GrantToDate);
        } else {
            $this->GrantToDate = $grantToDate;
        }
        return $this;
    }
    /**
     * Get PendingFromDate 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 getPendingFromDate()
    {
        return isset($this->PendingFromDate) ? $this->PendingFromDate : null;
    }
    /**
     * Set PendingFromDate 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 $pendingFromDate
     * @return \patest\StructType\Payment_LoyaltyPointsFilter
     */
    public function setPendingFromDate($pendingFromDate = null)
    {
        // validation for constraint: string
        if (!is_null($pendingFromDate) && !is_string($pendingFromDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($pendingFromDate, true), gettype($pendingFromDate)), __LINE__);
        }
        if (is_null($pendingFromDate) || (is_array($pendingFromDate) && empty($pendingFromDate))) {
            unset($this->PendingFromDate);
        } else {
            $this->PendingFromDate = $pendingFromDate;
        }
        return $this;
    }
    /**
     * Get PendingToDate 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 getPendingToDate()
    {
        return isset($this->PendingToDate) ? $this->PendingToDate : null;
    }
    /**
     * Set PendingToDate 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 $pendingToDate
     * @return \patest\StructType\Payment_LoyaltyPointsFilter
     */
    public function setPendingToDate($pendingToDate = null)
    {
        // validation for constraint: string
        if (!is_null($pendingToDate) && !is_string($pendingToDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($pendingToDate, true), gettype($pendingToDate)), __LINE__);
        }
        if (is_null($pendingToDate) || (is_array($pendingToDate) && empty($pendingToDate))) {
            unset($this->PendingToDate);
        } else {
            $this->PendingToDate = $pendingToDate;
        }
        return $this;
    }
}
