<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for TPartecipante StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:TPartecipante
 * @subpackage Structs
 */
class TPartecipante extends Partecipante
{
    /**
     * The Annotazioni
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Annotazioni;
    /**
     * The IDDettaglio
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $IDDettaglio;
    /**
     * The Minorenne
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $Minorenne;
    /**
     * The NoteOperatore
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $NoteOperatore;
    /**
     * The OraFineTurno
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $OraFineTurno;
    /**
     * The OraInizioTurno
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $OraInizioTurno;
    /**
     * The Presenza
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $Presenza;
    /**
     * The QualificaAutista
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var Qualifica
     */
    public $QualificaAutista;
    /**
     * The QualificaSanitaria
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var Qualifica
     */
    public $QualificaSanitaria;
    /**
     * The ResponsabileTurno
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $ResponsabileTurno;
    /**
     * Constructor method for TPartecipante
     * @uses TPartecipante::setAnnotazioni()
     * @uses TPartecipante::setIDDettaglio()
     * @uses TPartecipante::setMinorenne()
     * @uses TPartecipante::setNoteOperatore()
     * @uses TPartecipante::setOraFineTurno()
     * @uses TPartecipante::setOraInizioTurno()
     * @uses TPartecipante::setPresenza()
     * @uses TPartecipante::setQualificaAutista()
     * @uses TPartecipante::setQualificaSanitaria()
     * @uses TPartecipante::setResponsabileTurno()
     * @param string $annotazioni
     * @param int $iDDettaglio
     * @param bool $minorenne
     * @param string $noteOperatore
     * @param string $oraFineTurno
     * @param string $oraInizioTurno
     * @param string $presenza
     * @param Qualifica $qualificaAutista
     * @param Qualifica $qualificaSanitaria
     * @param bool $responsabileTurno
     */
    public function __construct($annotazioni = null, $iDDettaglio = null, $minorenne = null, $noteOperatore = null, $oraFineTurno = null, $oraInizioTurno = null, $presenza = null, Qualifica $qualificaAutista = null, Qualifica $qualificaSanitaria = null, $responsabileTurno = null)
    {
        $this
            ->setAnnotazioni($annotazioni)
            ->setIDDettaglio($iDDettaglio)
            ->setMinorenne($minorenne)
            ->setNoteOperatore($noteOperatore)
            ->setOraFineTurno($oraFineTurno)
            ->setOraInizioTurno($oraInizioTurno)
            ->setPresenza($presenza)
            ->setQualificaAutista($qualificaAutista)
            ->setQualificaSanitaria($qualificaSanitaria)
            ->setResponsabileTurno($responsabileTurno);
    }
    /**
     * Get Annotazioni 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 getAnnotazioni()
    {
        return isset($this->Annotazioni) ? $this->Annotazioni : null;
    }
    /**
     * Set Annotazioni 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 $annotazioni
     * @return TPartecipante
     */
    public function setAnnotazioni($annotazioni = null)
    {
        // validation for constraint: string
        if (!is_null($annotazioni) && !is_string($annotazioni)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($annotazioni, true), gettype($annotazioni)), __LINE__);
        }
        if (is_null($annotazioni) || (is_array($annotazioni) && empty($annotazioni))) {
            unset($this->Annotazioni);
        } else {
            $this->Annotazioni = $annotazioni;
        }
        return $this;
    }
    /**
     * Get IDDettaglio value
     * @return int|null
     */
    public function getIDDettaglio()
    {
        return $this->IDDettaglio;
    }
    /**
     * Set IDDettaglio value
     * @param int $iDDettaglio
     * @return TPartecipante
     */
    public function setIDDettaglio($iDDettaglio = null)
    {
        // validation for constraint: int
        if (!is_null($iDDettaglio) && !(is_int($iDDettaglio) || ctype_digit($iDDettaglio))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($iDDettaglio, true), gettype($iDDettaglio)), __LINE__);
        }
        $this->IDDettaglio = $iDDettaglio;
        return $this;
    }
    /**
     * Get Minorenne value
     * @return bool|null
     */
    public function getMinorenne()
    {
        return $this->Minorenne;
    }
    /**
     * Set Minorenne value
     * @param bool $minorenne
     * @return TPartecipante
     */
    public function setMinorenne($minorenne = null)
    {
        // validation for constraint: boolean
        if (!is_null($minorenne) && !is_bool($minorenne)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($minorenne, true), gettype($minorenne)), __LINE__);
        }
        $this->Minorenne = $minorenne;
        return $this;
    }
    /**
     * Get NoteOperatore 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 getNoteOperatore()
    {
        return isset($this->NoteOperatore) ? $this->NoteOperatore : null;
    }
    /**
     * Set NoteOperatore 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 $noteOperatore
     * @return TPartecipante
     */
    public function setNoteOperatore($noteOperatore = null)
    {
        // validation for constraint: string
        if (!is_null($noteOperatore) && !is_string($noteOperatore)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($noteOperatore, true), gettype($noteOperatore)), __LINE__);
        }
        if (is_null($noteOperatore) || (is_array($noteOperatore) && empty($noteOperatore))) {
            unset($this->NoteOperatore);
        } else {
            $this->NoteOperatore = $noteOperatore;
        }
        return $this;
    }
    /**
     * Get OraFineTurno 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 getOraFineTurno()
    {
        return isset($this->OraFineTurno) ? $this->OraFineTurno : null;
    }
    /**
     * Set OraFineTurno 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 $oraFineTurno
     * @return TPartecipante
     */
    public function setOraFineTurno($oraFineTurno = null)
    {
        // validation for constraint: string
        if (!is_null($oraFineTurno) && !is_string($oraFineTurno)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($oraFineTurno, true), gettype($oraFineTurno)), __LINE__);
        }
        if (is_null($oraFineTurno) || (is_array($oraFineTurno) && empty($oraFineTurno))) {
            unset($this->OraFineTurno);
        } else {
            $this->OraFineTurno = $oraFineTurno;
        }
        return $this;
    }
    /**
     * Get OraInizioTurno 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 getOraInizioTurno()
    {
        return isset($this->OraInizioTurno) ? $this->OraInizioTurno : null;
    }
    /**
     * Set OraInizioTurno 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 $oraInizioTurno
     * @return TPartecipante
     */
    public function setOraInizioTurno($oraInizioTurno = null)
    {
        // validation for constraint: string
        if (!is_null($oraInizioTurno) && !is_string($oraInizioTurno)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($oraInizioTurno, true), gettype($oraInizioTurno)), __LINE__);
        }
        if (is_null($oraInizioTurno) || (is_array($oraInizioTurno) && empty($oraInizioTurno))) {
            unset($this->OraInizioTurno);
        } else {
            $this->OraInizioTurno = $oraInizioTurno;
        }
        return $this;
    }
    /**
     * Get Presenza value
     * @return string|null
     */
    public function getPresenza()
    {
        return $this->Presenza;
    }
    /**
     * Set Presenza value
     * @uses StatoPresenzaPartecipante::valueIsValid()
     * @uses StatoPresenzaPartecipante::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $presenza
     * @return TPartecipante
     */
    public function setPresenza($presenza = null)
    {
        // validation for constraint: enumeration
        if (!StatoPresenzaPartecipante::valueIsValid($presenza)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class StatoPresenzaPartecipante', is_array($presenza) ? implode(', ', $presenza) : var_export($presenza, true), implode(', ', StatoPresenzaPartecipante::getValidValues())), __LINE__);
        }
        $this->Presenza = $presenza;
        return $this;
    }
    /**
     * Get QualificaAutista 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 Qualifica|null
     */
    public function getQualificaAutista()
    {
        return isset($this->QualificaAutista) ? $this->QualificaAutista : null;
    }
    /**
     * Set QualificaAutista 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 Qualifica $qualificaAutista
     * @return TPartecipante
     */
    public function setQualificaAutista(Qualifica $qualificaAutista = null)
    {
        if (is_null($qualificaAutista) || (is_array($qualificaAutista) && empty($qualificaAutista))) {
            unset($this->QualificaAutista);
        } else {
            $this->QualificaAutista = $qualificaAutista;
        }
        return $this;
    }
    /**
     * Get QualificaSanitaria 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 Qualifica|null
     */
    public function getQualificaSanitaria()
    {
        return isset($this->QualificaSanitaria) ? $this->QualificaSanitaria : null;
    }
    /**
     * Set QualificaSanitaria 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 Qualifica $qualificaSanitaria
     * @return TPartecipante
     */
    public function setQualificaSanitaria(Qualifica $qualificaSanitaria = null)
    {
        if (is_null($qualificaSanitaria) || (is_array($qualificaSanitaria) && empty($qualificaSanitaria))) {
            unset($this->QualificaSanitaria);
        } else {
            $this->QualificaSanitaria = $qualificaSanitaria;
        }
        return $this;
    }
    /**
     * Get ResponsabileTurno value
     * @return bool|null
     */
    public function getResponsabileTurno()
    {
        return $this->ResponsabileTurno;
    }
    /**
     * Set ResponsabileTurno value
     * @param bool $responsabileTurno
     * @return TPartecipante
     */
    public function setResponsabileTurno($responsabileTurno = null)
    {
        // validation for constraint: boolean
        if (!is_null($responsabileTurno) && !is_bool($responsabileTurno)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($responsabileTurno, true), gettype($responsabileTurno)), __LINE__);
        }
        $this->ResponsabileTurno = $responsabileTurno;
        return $this;
    }
}
