<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for IsEventAvailableAt-Response StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:IsEventAvailableAt-Response
 * @subpackage Structs
 */
class IsEventAvailableAt_Response extends ExtensibleDataContract
{
    /**
     * The EndSaleAt
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EndSaleAt;
    /**
     * The IsAvailableForDisplay
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $IsAvailableForDisplay;
    /**
     * The IsAvailableForSale
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $IsAvailableForSale;
    /**
     * The IsFutureSaleForDisplay
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $IsFutureSaleForDisplay;
    /**
     * The RuleLog
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $RuleLog;
    /**
     * The StartSaleFrom
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $StartSaleFrom;
    /**
     * The TouchedByRuleEngine
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $TouchedByRuleEngine;
    /**
     * Constructor method for IsEventAvailableAt-Response
     * @uses IsEventAvailableAt_Response::setEndSaleAt()
     * @uses IsEventAvailableAt_Response::setIsAvailableForDisplay()
     * @uses IsEventAvailableAt_Response::setIsAvailableForSale()
     * @uses IsEventAvailableAt_Response::setIsFutureSaleForDisplay()
     * @uses IsEventAvailableAt_Response::setRuleLog()
     * @uses IsEventAvailableAt_Response::setStartSaleFrom()
     * @uses IsEventAvailableAt_Response::setTouchedByRuleEngine()
     * @param string $endSaleAt
     * @param bool $isAvailableForDisplay
     * @param bool $isAvailableForSale
     * @param bool $isFutureSaleForDisplay
     * @param string $ruleLog
     * @param string $startSaleFrom
     * @param bool $touchedByRuleEngine
     */
    public function __construct($endSaleAt = null, $isAvailableForDisplay = null, $isAvailableForSale = null, $isFutureSaleForDisplay = null, $ruleLog = null, $startSaleFrom = null, $touchedByRuleEngine = null)
    {
        $this
            ->setEndSaleAt($endSaleAt)
            ->setIsAvailableForDisplay($isAvailableForDisplay)
            ->setIsAvailableForSale($isAvailableForSale)
            ->setIsFutureSaleForDisplay($isFutureSaleForDisplay)
            ->setRuleLog($ruleLog)
            ->setStartSaleFrom($startSaleFrom)
            ->setTouchedByRuleEngine($touchedByRuleEngine);
    }
    /**
     * Get EndSaleAt 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 getEndSaleAt()
    {
        return isset($this->EndSaleAt) ? $this->EndSaleAt : null;
    }
    /**
     * Set EndSaleAt 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 $endSaleAt
     * @return \patest\StructType\IsEventAvailableAt_Response
     */
    public function setEndSaleAt($endSaleAt = null)
    {
        // validation for constraint: string
        if (!is_null($endSaleAt) && !is_string($endSaleAt)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($endSaleAt, true), gettype($endSaleAt)), __LINE__);
        }
        if (is_null($endSaleAt) || (is_array($endSaleAt) && empty($endSaleAt))) {
            unset($this->EndSaleAt);
        } else {
            $this->EndSaleAt = $endSaleAt;
        }
        return $this;
    }
    /**
     * Get IsAvailableForDisplay value
     * @return bool|null
     */
    public function getIsAvailableForDisplay()
    {
        return $this->IsAvailableForDisplay;
    }
    /**
     * Set IsAvailableForDisplay value
     * @param bool $isAvailableForDisplay
     * @return \patest\StructType\IsEventAvailableAt_Response
     */
    public function setIsAvailableForDisplay($isAvailableForDisplay = null)
    {
        // validation for constraint: boolean
        if (!is_null($isAvailableForDisplay) && !is_bool($isAvailableForDisplay)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isAvailableForDisplay, true), gettype($isAvailableForDisplay)), __LINE__);
        }
        $this->IsAvailableForDisplay = $isAvailableForDisplay;
        return $this;
    }
    /**
     * Get IsAvailableForSale value
     * @return bool|null
     */
    public function getIsAvailableForSale()
    {
        return $this->IsAvailableForSale;
    }
    /**
     * Set IsAvailableForSale value
     * @param bool $isAvailableForSale
     * @return \patest\StructType\IsEventAvailableAt_Response
     */
    public function setIsAvailableForSale($isAvailableForSale = null)
    {
        // validation for constraint: boolean
        if (!is_null($isAvailableForSale) && !is_bool($isAvailableForSale)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isAvailableForSale, true), gettype($isAvailableForSale)), __LINE__);
        }
        $this->IsAvailableForSale = $isAvailableForSale;
        return $this;
    }
    /**
     * Get IsFutureSaleForDisplay value
     * @return bool|null
     */
    public function getIsFutureSaleForDisplay()
    {
        return $this->IsFutureSaleForDisplay;
    }
    /**
     * Set IsFutureSaleForDisplay value
     * @param bool $isFutureSaleForDisplay
     * @return \patest\StructType\IsEventAvailableAt_Response
     */
    public function setIsFutureSaleForDisplay($isFutureSaleForDisplay = null)
    {
        // validation for constraint: boolean
        if (!is_null($isFutureSaleForDisplay) && !is_bool($isFutureSaleForDisplay)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isFutureSaleForDisplay, true), gettype($isFutureSaleForDisplay)), __LINE__);
        }
        $this->IsFutureSaleForDisplay = $isFutureSaleForDisplay;
        return $this;
    }
    /**
     * Get RuleLog 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 getRuleLog()
    {
        return isset($this->RuleLog) ? $this->RuleLog : null;
    }
    /**
     * Set RuleLog 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 $ruleLog
     * @return \patest\StructType\IsEventAvailableAt_Response
     */
    public function setRuleLog($ruleLog = null)
    {
        // validation for constraint: string
        if (!is_null($ruleLog) && !is_string($ruleLog)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($ruleLog, true), gettype($ruleLog)), __LINE__);
        }
        if (is_null($ruleLog) || (is_array($ruleLog) && empty($ruleLog))) {
            unset($this->RuleLog);
        } else {
            $this->RuleLog = $ruleLog;
        }
        return $this;
    }
    /**
     * Get StartSaleFrom 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 getStartSaleFrom()
    {
        return isset($this->StartSaleFrom) ? $this->StartSaleFrom : null;
    }
    /**
     * Set StartSaleFrom 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 $startSaleFrom
     * @return \patest\StructType\IsEventAvailableAt_Response
     */
    public function setStartSaleFrom($startSaleFrom = null)
    {
        // validation for constraint: string
        if (!is_null($startSaleFrom) && !is_string($startSaleFrom)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($startSaleFrom, true), gettype($startSaleFrom)), __LINE__);
        }
        if (is_null($startSaleFrom) || (is_array($startSaleFrom) && empty($startSaleFrom))) {
            unset($this->StartSaleFrom);
        } else {
            $this->StartSaleFrom = $startSaleFrom;
        }
        return $this;
    }
    /**
     * Get TouchedByRuleEngine value
     * @return bool|null
     */
    public function getTouchedByRuleEngine()
    {
        return $this->TouchedByRuleEngine;
    }
    /**
     * Set TouchedByRuleEngine value
     * @param bool $touchedByRuleEngine
     * @return \patest\StructType\IsEventAvailableAt_Response
     */
    public function setTouchedByRuleEngine($touchedByRuleEngine = null)
    {
        // validation for constraint: boolean
        if (!is_null($touchedByRuleEngine) && !is_bool($touchedByRuleEngine)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($touchedByRuleEngine, true), gettype($touchedByRuleEngine)), __LINE__);
        }
        $this->TouchedByRuleEngine = $touchedByRuleEngine;
        return $this;
    }
}
