<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Printing.PrintableItem.SeatAllocationAudit StructType
 * @subpackage Structs
 */
class Printing_PrintableItem_SeatAllocationAudit extends AnyEntity
{
    /**
     * The Agent
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Printing_AuxDataItem_Account
     */
    public $Agent;
    /**
     * The AllocationTypes
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\RecordSetOfTicketing_Printing_AllocationType
     */
    public $AllocationTypes;
    /**
     * The ChangeFromDateType
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var int
     */
    public $ChangeFromDateType;
    /**
     * The EventsFromDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EventsFromDate;
    /**
     * The EventsToDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EventsToDate;
    /**
     * The SeatActivity
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $SeatActivity;
    /**
     * The SeatAllocationAuditDetails
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\RecordSetOfPrinting_PrintableItem_SeatAllocationAuditDetails
     */
    public $SeatAllocationAuditDetails;
    /**
     * The Show
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var \patest\StructType\Ticketing_Printing_Show
     */
    public $Show;
    /**
     * The SinceDate
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $SinceDate;
    /**
     * The TodaySince
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TodaySince;
    /**
     * The UserName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $UserName;
    /**
     * Constructor method for Printing.PrintableItem.SeatAllocationAudit
     * @uses Printing_PrintableItem_SeatAllocationAudit::setAgent()
     * @uses Printing_PrintableItem_SeatAllocationAudit::setAllocationTypes()
     * @uses Printing_PrintableItem_SeatAllocationAudit::setChangeFromDateType()
     * @uses Printing_PrintableItem_SeatAllocationAudit::setEventsFromDate()
     * @uses Printing_PrintableItem_SeatAllocationAudit::setEventsToDate()
     * @uses Printing_PrintableItem_SeatAllocationAudit::setSeatActivity()
     * @uses Printing_PrintableItem_SeatAllocationAudit::setSeatAllocationAuditDetails()
     * @uses Printing_PrintableItem_SeatAllocationAudit::setShow()
     * @uses Printing_PrintableItem_SeatAllocationAudit::setSinceDate()
     * @uses Printing_PrintableItem_SeatAllocationAudit::setTodaySince()
     * @uses Printing_PrintableItem_SeatAllocationAudit::setUserName()
     * @param \patest\StructType\Printing_AuxDataItem_Account $agent
     * @param \patest\StructType\RecordSetOfTicketing_Printing_AllocationType $allocationTypes
     * @param int $changeFromDateType
     * @param string $eventsFromDate
     * @param string $eventsToDate
     * @param string $seatActivity
     * @param \patest\StructType\RecordSetOfPrinting_PrintableItem_SeatAllocationAuditDetails $seatAllocationAuditDetails
     * @param \patest\StructType\Ticketing_Printing_Show $show
     * @param string $sinceDate
     * @param string $todaySince
     * @param string $userName
     */
    public function __construct(\patest\StructType\Printing_AuxDataItem_Account $agent = null, \patest\StructType\RecordSetOfTicketing_Printing_AllocationType $allocationTypes = null, $changeFromDateType = null, $eventsFromDate = null, $eventsToDate = null, $seatActivity = null, \patest\StructType\RecordSetOfPrinting_PrintableItem_SeatAllocationAuditDetails $seatAllocationAuditDetails = null, \patest\StructType\Ticketing_Printing_Show $show = null, $sinceDate = null, $todaySince = null, $userName = null)
    {
        $this
            ->setAgent($agent)
            ->setAllocationTypes($allocationTypes)
            ->setChangeFromDateType($changeFromDateType)
            ->setEventsFromDate($eventsFromDate)
            ->setEventsToDate($eventsToDate)
            ->setSeatActivity($seatActivity)
            ->setSeatAllocationAuditDetails($seatAllocationAuditDetails)
            ->setShow($show)
            ->setSinceDate($sinceDate)
            ->setTodaySince($todaySince)
            ->setUserName($userName);
    }
    /**
     * Get Agent 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\Printing_AuxDataItem_Account|null
     */
    public function getAgent()
    {
        return isset($this->Agent) ? $this->Agent : null;
    }
    /**
     * Set Agent 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\Printing_AuxDataItem_Account $agent
     * @return \patest\StructType\Printing_PrintableItem_SeatAllocationAudit
     */
    public function setAgent(\patest\StructType\Printing_AuxDataItem_Account $agent = null)
    {
        if (is_null($agent) || (is_array($agent) && empty($agent))) {
            unset($this->Agent);
        } else {
            $this->Agent = $agent;
        }
        return $this;
    }
    /**
     * Get AllocationTypes 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\RecordSetOfTicketing_Printing_AllocationType|null
     */
    public function getAllocationTypes()
    {
        return isset($this->AllocationTypes) ? $this->AllocationTypes : null;
    }
    /**
     * Set AllocationTypes 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\RecordSetOfTicketing_Printing_AllocationType $allocationTypes
     * @return \patest\StructType\Printing_PrintableItem_SeatAllocationAudit
     */
    public function setAllocationTypes(\patest\StructType\RecordSetOfTicketing_Printing_AllocationType $allocationTypes = null)
    {
        if (is_null($allocationTypes) || (is_array($allocationTypes) && empty($allocationTypes))) {
            unset($this->AllocationTypes);
        } else {
            $this->AllocationTypes = $allocationTypes;
        }
        return $this;
    }
    /**
     * Get ChangeFromDateType 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 getChangeFromDateType()
    {
        return isset($this->ChangeFromDateType) ? $this->ChangeFromDateType : null;
    }
    /**
     * Set ChangeFromDateType 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 $changeFromDateType
     * @return \patest\StructType\Printing_PrintableItem_SeatAllocationAudit
     */
    public function setChangeFromDateType($changeFromDateType = null)
    {
        // validation for constraint: int
        if (!is_null($changeFromDateType) && !(is_int($changeFromDateType) || ctype_digit($changeFromDateType))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($changeFromDateType, true), gettype($changeFromDateType)), __LINE__);
        }
        if (is_null($changeFromDateType) || (is_array($changeFromDateType) && empty($changeFromDateType))) {
            unset($this->ChangeFromDateType);
        } else {
            $this->ChangeFromDateType = $changeFromDateType;
        }
        return $this;
    }
    /**
     * Get EventsFromDate 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 getEventsFromDate()
    {
        return isset($this->EventsFromDate) ? $this->EventsFromDate : null;
    }
    /**
     * Set EventsFromDate 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 $eventsFromDate
     * @return \patest\StructType\Printing_PrintableItem_SeatAllocationAudit
     */
    public function setEventsFromDate($eventsFromDate = null)
    {
        // validation for constraint: string
        if (!is_null($eventsFromDate) && !is_string($eventsFromDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($eventsFromDate, true), gettype($eventsFromDate)), __LINE__);
        }
        if (is_null($eventsFromDate) || (is_array($eventsFromDate) && empty($eventsFromDate))) {
            unset($this->EventsFromDate);
        } else {
            $this->EventsFromDate = $eventsFromDate;
        }
        return $this;
    }
    /**
     * Get EventsToDate 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 getEventsToDate()
    {
        return isset($this->EventsToDate) ? $this->EventsToDate : null;
    }
    /**
     * Set EventsToDate 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 $eventsToDate
     * @return \patest\StructType\Printing_PrintableItem_SeatAllocationAudit
     */
    public function setEventsToDate($eventsToDate = null)
    {
        // validation for constraint: string
        if (!is_null($eventsToDate) && !is_string($eventsToDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($eventsToDate, true), gettype($eventsToDate)), __LINE__);
        }
        if (is_null($eventsToDate) || (is_array($eventsToDate) && empty($eventsToDate))) {
            unset($this->EventsToDate);
        } else {
            $this->EventsToDate = $eventsToDate;
        }
        return $this;
    }
    /**
     * Get SeatActivity 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 getSeatActivity()
    {
        return isset($this->SeatActivity) ? $this->SeatActivity : null;
    }
    /**
     * Set SeatActivity 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
     * @uses \patest\EnumType\SeatActivity::valueIsValid()
     * @uses \patest\EnumType\SeatActivity::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $seatActivity
     * @return \patest\StructType\Printing_PrintableItem_SeatAllocationAudit
     */
    public function setSeatActivity($seatActivity = null)
    {
        // validation for constraint: enumeration
        if (!\patest\EnumType\SeatActivity::valueIsValid($seatActivity)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class \patest\EnumType\SeatActivity', is_array($seatActivity) ? implode(', ', $seatActivity) : var_export($seatActivity, true), implode(', ', \patest\EnumType\SeatActivity::getValidValues())), __LINE__);
        }
        if (is_null($seatActivity) || (is_array($seatActivity) && empty($seatActivity))) {
            unset($this->SeatActivity);
        } else {
            $this->SeatActivity = $seatActivity;
        }
        return $this;
    }
    /**
     * Get SeatAllocationAuditDetails 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\RecordSetOfPrinting_PrintableItem_SeatAllocationAuditDetails|null
     */
    public function getSeatAllocationAuditDetails()
    {
        return isset($this->SeatAllocationAuditDetails) ? $this->SeatAllocationAuditDetails : null;
    }
    /**
     * Set SeatAllocationAuditDetails 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\RecordSetOfPrinting_PrintableItem_SeatAllocationAuditDetails $seatAllocationAuditDetails
     * @return \patest\StructType\Printing_PrintableItem_SeatAllocationAudit
     */
    public function setSeatAllocationAuditDetails(\patest\StructType\RecordSetOfPrinting_PrintableItem_SeatAllocationAuditDetails $seatAllocationAuditDetails = null)
    {
        if (is_null($seatAllocationAuditDetails) || (is_array($seatAllocationAuditDetails) && empty($seatAllocationAuditDetails))) {
            unset($this->SeatAllocationAuditDetails);
        } else {
            $this->SeatAllocationAuditDetails = $seatAllocationAuditDetails;
        }
        return $this;
    }
    /**
     * Get Show 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\Ticketing_Printing_Show|null
     */
    public function getShow()
    {
        return isset($this->Show) ? $this->Show : null;
    }
    /**
     * Set Show 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\Ticketing_Printing_Show $show
     * @return \patest\StructType\Printing_PrintableItem_SeatAllocationAudit
     */
    public function setShow(\patest\StructType\Ticketing_Printing_Show $show = null)
    {
        if (is_null($show) || (is_array($show) && empty($show))) {
            unset($this->Show);
        } else {
            $this->Show = $show;
        }
        return $this;
    }
    /**
     * Get SinceDate 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 getSinceDate()
    {
        return isset($this->SinceDate) ? $this->SinceDate : null;
    }
    /**
     * Set SinceDate 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 $sinceDate
     * @return \patest\StructType\Printing_PrintableItem_SeatAllocationAudit
     */
    public function setSinceDate($sinceDate = null)
    {
        // validation for constraint: string
        if (!is_null($sinceDate) && !is_string($sinceDate)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($sinceDate, true), gettype($sinceDate)), __LINE__);
        }
        if (is_null($sinceDate) || (is_array($sinceDate) && empty($sinceDate))) {
            unset($this->SinceDate);
        } else {
            $this->SinceDate = $sinceDate;
        }
        return $this;
    }
    /**
     * Get TodaySince 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 getTodaySince()
    {
        return isset($this->TodaySince) ? $this->TodaySince : null;
    }
    /**
     * Set TodaySince 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 $todaySince
     * @return \patest\StructType\Printing_PrintableItem_SeatAllocationAudit
     */
    public function setTodaySince($todaySince = null)
    {
        // validation for constraint: string
        if (!is_null($todaySince) && !is_string($todaySince)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($todaySince, true), gettype($todaySince)), __LINE__);
        }
        if (is_null($todaySince) || (is_array($todaySince) && empty($todaySince))) {
            unset($this->TodaySince);
        } else {
            $this->TodaySince = $todaySince;
        }
        return $this;
    }
    /**
     * Get UserName 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 getUserName()
    {
        return isset($this->UserName) ? $this->UserName : null;
    }
    /**
     * Set UserName 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 $userName
     * @return \patest\StructType\Printing_PrintableItem_SeatAllocationAudit
     */
    public function setUserName($userName = null)
    {
        // validation for constraint: string
        if (!is_null($userName) && !is_string($userName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($userName, true), gettype($userName)), __LINE__);
        }
        if (is_null($userName) || (is_array($userName) && empty($userName))) {
            unset($this->UserName);
        } else {
            $this->UserName = $userName;
        }
        return $this;
    }
}
