<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Sales.SeatGeekAcknowledgement StructType
 * @subpackage Structs
 */
class Sales_SeatGeekAcknowledgement extends PersistableEntity
{
    /**
     * The Action
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Action;
    /**
     * The Category
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Category;
    /**
     * The ContentHash
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ContentHash;
    /**
     * The CreationDateTime
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CreationDateTime;
    /**
     * The IsRequired
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var bool
     */
    public $IsRequired;
    /**
     * The RichText
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $RichText;
    /**
     * The SeatGeekId
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $SeatGeekId;
    /**
     * The Slug
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Slug;
    /**
     * Constructor method for Sales.SeatGeekAcknowledgement
     * @uses Sales_SeatGeekAcknowledgement::setAction()
     * @uses Sales_SeatGeekAcknowledgement::setCategory()
     * @uses Sales_SeatGeekAcknowledgement::setContentHash()
     * @uses Sales_SeatGeekAcknowledgement::setCreationDateTime()
     * @uses Sales_SeatGeekAcknowledgement::setIsRequired()
     * @uses Sales_SeatGeekAcknowledgement::setRichText()
     * @uses Sales_SeatGeekAcknowledgement::setSeatGeekId()
     * @uses Sales_SeatGeekAcknowledgement::setSlug()
     * @param string $action
     * @param string $category
     * @param string $contentHash
     * @param string $creationDateTime
     * @param bool $isRequired
     * @param string $richText
     * @param int $seatGeekId
     * @param string $slug
     */
    public function __construct($action = null, $category = null, $contentHash = null, $creationDateTime = null, $isRequired = null, $richText = null, $seatGeekId = null, $slug = null)
    {
        $this
            ->setAction($action)
            ->setCategory($category)
            ->setContentHash($contentHash)
            ->setCreationDateTime($creationDateTime)
            ->setIsRequired($isRequired)
            ->setRichText($richText)
            ->setSeatGeekId($seatGeekId)
            ->setSlug($slug);
    }
    /**
     * Get Action 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 getAction()
    {
        return isset($this->Action) ? $this->Action : null;
    }
    /**
     * Set Action 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 $action
     * @return \patest\StructType\Sales_SeatGeekAcknowledgement
     */
    public function setAction($action = null)
    {
        // validation for constraint: string
        if (!is_null($action) && !is_string($action)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($action, true), gettype($action)), __LINE__);
        }
        if (is_null($action) || (is_array($action) && empty($action))) {
            unset($this->Action);
        } else {
            $this->Action = $action;
        }
        return $this;
    }
    /**
     * Get Category 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 getCategory()
    {
        return isset($this->Category) ? $this->Category : null;
    }
    /**
     * Set Category 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 $category
     * @return \patest\StructType\Sales_SeatGeekAcknowledgement
     */
    public function setCategory($category = null)
    {
        // validation for constraint: string
        if (!is_null($category) && !is_string($category)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($category, true), gettype($category)), __LINE__);
        }
        if (is_null($category) || (is_array($category) && empty($category))) {
            unset($this->Category);
        } else {
            $this->Category = $category;
        }
        return $this;
    }
    /**
     * Get ContentHash 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 getContentHash()
    {
        return isset($this->ContentHash) ? $this->ContentHash : null;
    }
    /**
     * Set ContentHash 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 $contentHash
     * @return \patest\StructType\Sales_SeatGeekAcknowledgement
     */
    public function setContentHash($contentHash = null)
    {
        // validation for constraint: string
        if (!is_null($contentHash) && !is_string($contentHash)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($contentHash, true), gettype($contentHash)), __LINE__);
        }
        if (is_null($contentHash) || (is_array($contentHash) && empty($contentHash))) {
            unset($this->ContentHash);
        } else {
            $this->ContentHash = $contentHash;
        }
        return $this;
    }
    /**
     * Get CreationDateTime 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 getCreationDateTime()
    {
        return isset($this->CreationDateTime) ? $this->CreationDateTime : null;
    }
    /**
     * Set CreationDateTime 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 $creationDateTime
     * @return \patest\StructType\Sales_SeatGeekAcknowledgement
     */
    public function setCreationDateTime($creationDateTime = null)
    {
        // validation for constraint: string
        if (!is_null($creationDateTime) && !is_string($creationDateTime)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($creationDateTime, true), gettype($creationDateTime)), __LINE__);
        }
        if (is_null($creationDateTime) || (is_array($creationDateTime) && empty($creationDateTime))) {
            unset($this->CreationDateTime);
        } else {
            $this->CreationDateTime = $creationDateTime;
        }
        return $this;
    }
    /**
     * Get IsRequired 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 bool|null
     */
    public function getIsRequired()
    {
        return isset($this->IsRequired) ? $this->IsRequired : null;
    }
    /**
     * Set IsRequired 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 bool $isRequired
     * @return \patest\StructType\Sales_SeatGeekAcknowledgement
     */
    public function setIsRequired($isRequired = null)
    {
        // validation for constraint: boolean
        if (!is_null($isRequired) && !is_bool($isRequired)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($isRequired, true), gettype($isRequired)), __LINE__);
        }
        if (is_null($isRequired) || (is_array($isRequired) && empty($isRequired))) {
            unset($this->IsRequired);
        } else {
            $this->IsRequired = $isRequired;
        }
        return $this;
    }
    /**
     * Get RichText 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 getRichText()
    {
        return isset($this->RichText) ? $this->RichText : null;
    }
    /**
     * Set RichText 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 $richText
     * @return \patest\StructType\Sales_SeatGeekAcknowledgement
     */
    public function setRichText($richText = null)
    {
        // validation for constraint: string
        if (!is_null($richText) && !is_string($richText)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($richText, true), gettype($richText)), __LINE__);
        }
        if (is_null($richText) || (is_array($richText) && empty($richText))) {
            unset($this->RichText);
        } else {
            $this->RichText = $richText;
        }
        return $this;
    }
    /**
     * Get SeatGeekId 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 int|null
     */
    public function getSeatGeekId()
    {
        return isset($this->SeatGeekId) ? $this->SeatGeekId : null;
    }
    /**
     * Set SeatGeekId 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 int $seatGeekId
     * @return \patest\StructType\Sales_SeatGeekAcknowledgement
     */
    public function setSeatGeekId($seatGeekId = null)
    {
        // validation for constraint: int
        if (!is_null($seatGeekId) && !(is_int($seatGeekId) || ctype_digit($seatGeekId))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($seatGeekId, true), gettype($seatGeekId)), __LINE__);
        }
        if (is_null($seatGeekId) || (is_array($seatGeekId) && empty($seatGeekId))) {
            unset($this->SeatGeekId);
        } else {
            $this->SeatGeekId = $seatGeekId;
        }
        return $this;
    }
    /**
     * Get Slug 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 getSlug()
    {
        return isset($this->Slug) ? $this->Slug : null;
    }
    /**
     * Set Slug 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 $slug
     * @return \patest\StructType\Sales_SeatGeekAcknowledgement
     */
    public function setSlug($slug = null)
    {
        // validation for constraint: string
        if (!is_null($slug) && !is_string($slug)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($slug, true), gettype($slug)), __LINE__);
        }
        if (is_null($slug) || (is_array($slug) && empty($slug))) {
            unset($this->Slug);
        } else {
            $this->Slug = $slug;
        }
        return $this;
    }
}
