<?php

namespace patest\StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for bSRO.Sales.SubscriptionsEventsInformation StructType
 * @subpackage Structs
 */
class BSRO_Sales_SubscriptionsEventsInformation extends AnyEntity
{
    /**
     * The EventsAssigned
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EventsAssigned;
    /**
     * The EventsQuantity
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EventsQuantity;
    /**
     * The EventsSelected
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $EventsSelected;
    /**
     * The PriceLevel
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $PriceLevel;
    /**
     * The SeriesGroupName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $SeriesGroupName;
    /**
     * The SeriesName
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $SeriesName;
    /**
     * The SubscriptionPeriod
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $SubscriptionPeriod;
    /**
     * Constructor method for bSRO.Sales.SubscriptionsEventsInformation
     * @uses BSRO_Sales_SubscriptionsEventsInformation::setEventsAssigned()
     * @uses BSRO_Sales_SubscriptionsEventsInformation::setEventsQuantity()
     * @uses BSRO_Sales_SubscriptionsEventsInformation::setEventsSelected()
     * @uses BSRO_Sales_SubscriptionsEventsInformation::setPriceLevel()
     * @uses BSRO_Sales_SubscriptionsEventsInformation::setSeriesGroupName()
     * @uses BSRO_Sales_SubscriptionsEventsInformation::setSeriesName()
     * @uses BSRO_Sales_SubscriptionsEventsInformation::setSubscriptionPeriod()
     * @param string $eventsAssigned
     * @param string $eventsQuantity
     * @param string $eventsSelected
     * @param string $priceLevel
     * @param string $seriesGroupName
     * @param string $seriesName
     * @param string $subscriptionPeriod
     */
    public function __construct($eventsAssigned = null, $eventsQuantity = null, $eventsSelected = null, $priceLevel = null, $seriesGroupName = null, $seriesName = null, $subscriptionPeriod = null)
    {
        $this
            ->setEventsAssigned($eventsAssigned)
            ->setEventsQuantity($eventsQuantity)
            ->setEventsSelected($eventsSelected)
            ->setPriceLevel($priceLevel)
            ->setSeriesGroupName($seriesGroupName)
            ->setSeriesName($seriesName)
            ->setSubscriptionPeriod($subscriptionPeriod);
    }
    /**
     * Get EventsAssigned 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 getEventsAssigned()
    {
        return isset($this->EventsAssigned) ? $this->EventsAssigned : null;
    }
    /**
     * Set EventsAssigned 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 $eventsAssigned
     * @return \patest\StructType\BSRO_Sales_SubscriptionsEventsInformation
     */
    public function setEventsAssigned($eventsAssigned = null)
    {
        // validation for constraint: string
        if (!is_null($eventsAssigned) && !is_string($eventsAssigned)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($eventsAssigned, true), gettype($eventsAssigned)), __LINE__);
        }
        if (is_null($eventsAssigned) || (is_array($eventsAssigned) && empty($eventsAssigned))) {
            unset($this->EventsAssigned);
        } else {
            $this->EventsAssigned = $eventsAssigned;
        }
        return $this;
    }
    /**
     * Get EventsQuantity 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 getEventsQuantity()
    {
        return isset($this->EventsQuantity) ? $this->EventsQuantity : null;
    }
    /**
     * Set EventsQuantity 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 $eventsQuantity
     * @return \patest\StructType\BSRO_Sales_SubscriptionsEventsInformation
     */
    public function setEventsQuantity($eventsQuantity = null)
    {
        // validation for constraint: string
        if (!is_null($eventsQuantity) && !is_string($eventsQuantity)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($eventsQuantity, true), gettype($eventsQuantity)), __LINE__);
        }
        if (is_null($eventsQuantity) || (is_array($eventsQuantity) && empty($eventsQuantity))) {
            unset($this->EventsQuantity);
        } else {
            $this->EventsQuantity = $eventsQuantity;
        }
        return $this;
    }
    /**
     * Get EventsSelected 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 getEventsSelected()
    {
        return isset($this->EventsSelected) ? $this->EventsSelected : null;
    }
    /**
     * Set EventsSelected 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 $eventsSelected
     * @return \patest\StructType\BSRO_Sales_SubscriptionsEventsInformation
     */
    public function setEventsSelected($eventsSelected = null)
    {
        // validation for constraint: string
        if (!is_null($eventsSelected) && !is_string($eventsSelected)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($eventsSelected, true), gettype($eventsSelected)), __LINE__);
        }
        if (is_null($eventsSelected) || (is_array($eventsSelected) && empty($eventsSelected))) {
            unset($this->EventsSelected);
        } else {
            $this->EventsSelected = $eventsSelected;
        }
        return $this;
    }
    /**
     * Get PriceLevel 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 getPriceLevel()
    {
        return isset($this->PriceLevel) ? $this->PriceLevel : null;
    }
    /**
     * Set PriceLevel 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 $priceLevel
     * @return \patest\StructType\BSRO_Sales_SubscriptionsEventsInformation
     */
    public function setPriceLevel($priceLevel = null)
    {
        // validation for constraint: string
        if (!is_null($priceLevel) && !is_string($priceLevel)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($priceLevel, true), gettype($priceLevel)), __LINE__);
        }
        if (is_null($priceLevel) || (is_array($priceLevel) && empty($priceLevel))) {
            unset($this->PriceLevel);
        } else {
            $this->PriceLevel = $priceLevel;
        }
        return $this;
    }
    /**
     * Get SeriesGroupName 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 getSeriesGroupName()
    {
        return isset($this->SeriesGroupName) ? $this->SeriesGroupName : null;
    }
    /**
     * Set SeriesGroupName 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 $seriesGroupName
     * @return \patest\StructType\BSRO_Sales_SubscriptionsEventsInformation
     */
    public function setSeriesGroupName($seriesGroupName = null)
    {
        // validation for constraint: string
        if (!is_null($seriesGroupName) && !is_string($seriesGroupName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($seriesGroupName, true), gettype($seriesGroupName)), __LINE__);
        }
        if (is_null($seriesGroupName) || (is_array($seriesGroupName) && empty($seriesGroupName))) {
            unset($this->SeriesGroupName);
        } else {
            $this->SeriesGroupName = $seriesGroupName;
        }
        return $this;
    }
    /**
     * Get SeriesName 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 getSeriesName()
    {
        return isset($this->SeriesName) ? $this->SeriesName : null;
    }
    /**
     * Set SeriesName 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 $seriesName
     * @return \patest\StructType\BSRO_Sales_SubscriptionsEventsInformation
     */
    public function setSeriesName($seriesName = null)
    {
        // validation for constraint: string
        if (!is_null($seriesName) && !is_string($seriesName)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($seriesName, true), gettype($seriesName)), __LINE__);
        }
        if (is_null($seriesName) || (is_array($seriesName) && empty($seriesName))) {
            unset($this->SeriesName);
        } else {
            $this->SeriesName = $seriesName;
        }
        return $this;
    }
    /**
     * Get SubscriptionPeriod 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 getSubscriptionPeriod()
    {
        return isset($this->SubscriptionPeriod) ? $this->SubscriptionPeriod : null;
    }
    /**
     * Set SubscriptionPeriod 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 $subscriptionPeriod
     * @return \patest\StructType\BSRO_Sales_SubscriptionsEventsInformation
     */
    public function setSubscriptionPeriod($subscriptionPeriod = null)
    {
        // validation for constraint: string
        if (!is_null($subscriptionPeriod) && !is_string($subscriptionPeriod)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($subscriptionPeriod, true), gettype($subscriptionPeriod)), __LINE__);
        }
        if (is_null($subscriptionPeriod) || (is_array($subscriptionPeriod) && empty($subscriptionPeriod))) {
            unset($this->SubscriptionPeriod);
        } else {
            $this->SubscriptionPeriod = $subscriptionPeriod;
        }
        return $this;
    }
}
