<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for GetEventi StructType
 * @subpackage Structs
 */
class GetEventi extends AbstractStructBase
{
    /**
     * The DaData
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DaData;
    /**
     * The AData
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $AData;
    /**
     * The IDSezione
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $IDSezione;
    /**
     * The IDGruppo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $IDGruppo;
    /**
     * The VincolaSezione
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $VincolaSezione;
    /**
     * Constructor method for GetEventi
     * @uses GetEventi::setDaData()
     * @uses GetEventi::setAData()
     * @uses GetEventi::setIDSezione()
     * @uses GetEventi::setIDGruppo()
     * @uses GetEventi::setVincolaSezione()
     * @param string $daData
     * @param string $aData
     * @param string $iDSezione
     * @param int $iDGruppo
     * @param bool $vincolaSezione
     */
    public function __construct($daData = null, $aData = null, $iDSezione = null, $iDGruppo = null, $vincolaSezione = null)
    {
        $this
            ->setDaData($daData)
            ->setAData($aData)
            ->setIDSezione($iDSezione)
            ->setIDGruppo($iDGruppo)
            ->setVincolaSezione($vincolaSezione);
    }
    /**
     * Get DaData 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 getDaData()
    {
        return isset($this->DaData) ? $this->DaData : null;
    }
    /**
     * Set DaData 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 $daData
     * @return GetEventi
     */
    public function setDaData($daData = null)
    {
        // validation for constraint: string
        if (!is_null($daData) && !is_string($daData)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($daData, true), gettype($daData)), __LINE__);
        }
        if (is_null($daData) || (is_array($daData) && empty($daData))) {
            unset($this->DaData);
        } else {
            $this->DaData = $daData;
        }
        return $this;
    }
    /**
     * Get AData 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 getAData()
    {
        return isset($this->AData) ? $this->AData : null;
    }
    /**
     * Set AData 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 $aData
     * @return GetEventi
     */
    public function setAData($aData = null)
    {
        // validation for constraint: string
        if (!is_null($aData) && !is_string($aData)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($aData, true), gettype($aData)), __LINE__);
        }
        if (is_null($aData) || (is_array($aData) && empty($aData))) {
            unset($this->AData);
        } else {
            $this->AData = $aData;
        }
        return $this;
    }
    /**
     * Get IDSezione 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 getIDSezione()
    {
        return isset($this->IDSezione) ? $this->IDSezione : null;
    }
    /**
     * Set IDSezione 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 $iDSezione
     * @return GetEventi
     */
    public function setIDSezione($iDSezione = null)
    {
        // validation for constraint: string
        if (!is_null($iDSezione) && !is_string($iDSezione)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($iDSezione, true), gettype($iDSezione)), __LINE__);
        }
        if (is_null($iDSezione) || (is_array($iDSezione) && empty($iDSezione))) {
            unset($this->IDSezione);
        } else {
            $this->IDSezione = $iDSezione;
        }
        return $this;
    }
    /**
     * Get IDGruppo value
     * @return int|null
     */
    public function getIDGruppo()
    {
        return $this->IDGruppo;
    }
    /**
     * Set IDGruppo value
     * @param int $iDGruppo
     * @return GetEventi
     */
    public function setIDGruppo($iDGruppo = null)
    {
        // validation for constraint: int
        if (!is_null($iDGruppo) && !(is_int($iDGruppo) || ctype_digit($iDGruppo))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($iDGruppo, true), gettype($iDGruppo)), __LINE__);
        }
        $this->IDGruppo = $iDGruppo;
        return $this;
    }
    /**
     * Get VincolaSezione value
     * @return bool|null
     */
    public function getVincolaSezione()
    {
        return $this->VincolaSezione;
    }
    /**
     * Set VincolaSezione value
     * @param bool $vincolaSezione
     * @return GetEventi
     */
    public function setVincolaSezione($vincolaSezione = null)
    {
        // validation for constraint: boolean
        if (!is_null($vincolaSezione) && !is_bool($vincolaSezione)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($vincolaSezione, true), gettype($vincolaSezione)), __LINE__);
        }
        $this->VincolaSezione = $vincolaSezione;
        return $this;
    }
}
