<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for MissioneBase_Model StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:MissioneBase_Model
 * @subpackage Structs
 */
class MissioneBase_Model extends AbstractStructBase
{
    /**
     * The Anno
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $Anno;
    /**
     * The DaIncassare
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $DaIncassare;
    /**
     * The IDCentrale
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $IDCentrale;
    /**
     * The IDMissione
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $IDMissione;
    /**
     * The IDMissioneAnno
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $IDMissioneAnno;
    /**
     * The IDMissioneAssegnazione
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $IDMissioneAssegnazione;
    /**
     * The NoteMissione
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $NoteMissione;
    /**
     * The Partenza_OrarioPresunto
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Partenza_OrarioPresunto;
    /**
     * The SezioneDiRiferimento
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var Sezione
     */
    public $SezioneDiRiferimento;
    /**
     * The TipoPercorso
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $TipoPercorso;
    /**
     * Constructor method for MissioneBase_Model
     * @uses MissioneBase_Model::setAnno()
     * @uses MissioneBase_Model::setDaIncassare()
     * @uses MissioneBase_Model::setIDCentrale()
     * @uses MissioneBase_Model::setIDMissione()
     * @uses MissioneBase_Model::setIDMissioneAnno()
     * @uses MissioneBase_Model::setIDMissioneAssegnazione()
     * @uses MissioneBase_Model::setNoteMissione()
     * @uses MissioneBase_Model::setPartenza_OrarioPresunto()
     * @uses MissioneBase_Model::setSezioneDiRiferimento()
     * @uses MissioneBase_Model::setTipoPercorso()
     * @param int $anno
     * @param bool $daIncassare
     * @param string $iDCentrale
     * @param int $iDMissione
     * @param int $iDMissioneAnno
     * @param int $iDMissioneAssegnazione
     * @param string $noteMissione
     * @param string $partenza_OrarioPresunto
     * @param Sezione $sezioneDiRiferimento
     * @param int $tipoPercorso
     */
    public function __construct($anno = null, $daIncassare = null, $iDCentrale = null, $iDMissione = null, $iDMissioneAnno = null, $iDMissioneAssegnazione = null, $noteMissione = null, $partenza_OrarioPresunto = null, Sezione $sezioneDiRiferimento = null, $tipoPercorso = null)
    {
        $this
            ->setAnno($anno)
            ->setDaIncassare($daIncassare)
            ->setIDCentrale($iDCentrale)
            ->setIDMissione($iDMissione)
            ->setIDMissioneAnno($iDMissioneAnno)
            ->setIDMissioneAssegnazione($iDMissioneAssegnazione)
            ->setNoteMissione($noteMissione)
            ->setPartenza_OrarioPresunto($partenza_OrarioPresunto)
            ->setSezioneDiRiferimento($sezioneDiRiferimento)
            ->setTipoPercorso($tipoPercorso);
    }
    /**
     * Get Anno value
     * @return int|null
     */
    public function getAnno()
    {
        return $this->Anno;
    }
    /**
     * Set Anno value
     * @param int $anno
     * @return MissioneBase_Model
     */
    public function setAnno($anno = null)
    {
        // validation for constraint: int
        if (!is_null($anno) && !(is_int($anno) || ctype_digit($anno))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($anno, true), gettype($anno)), __LINE__);
        }
        $this->Anno = $anno;
        return $this;
    }
    /**
     * Get DaIncassare value
     * @return bool|null
     */
    public function getDaIncassare()
    {
        return $this->DaIncassare;
    }
    /**
     * Set DaIncassare value
     * @param bool $daIncassare
     * @return MissioneBase_Model
     */
    public function setDaIncassare($daIncassare = null)
    {
        // validation for constraint: boolean
        if (!is_null($daIncassare) && !is_bool($daIncassare)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($daIncassare, true), gettype($daIncassare)), __LINE__);
        }
        $this->DaIncassare = $daIncassare;
        return $this;
    }
    /**
     * Get IDCentrale 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 getIDCentrale()
    {
        return isset($this->IDCentrale) ? $this->IDCentrale : null;
    }
    /**
     * Set IDCentrale 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 $iDCentrale
     * @return MissioneBase_Model
     */
    public function setIDCentrale($iDCentrale = null)
    {
        // validation for constraint: string
        if (!is_null($iDCentrale) && !is_string($iDCentrale)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($iDCentrale, true), gettype($iDCentrale)), __LINE__);
        }
        if (is_null($iDCentrale) || (is_array($iDCentrale) && empty($iDCentrale))) {
            unset($this->IDCentrale);
        } else {
            $this->IDCentrale = $iDCentrale;
        }
        return $this;
    }
    /**
     * Get IDMissione value
     * @return int|null
     */
    public function getIDMissione()
    {
        return $this->IDMissione;
    }
    /**
     * Set IDMissione value
     * @param int $iDMissione
     * @return MissioneBase_Model
     */
    public function setIDMissione($iDMissione = null)
    {
        // validation for constraint: int
        if (!is_null($iDMissione) && !(is_int($iDMissione) || ctype_digit($iDMissione))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($iDMissione, true), gettype($iDMissione)), __LINE__);
        }
        $this->IDMissione = $iDMissione;
        return $this;
    }
    /**
     * Get IDMissioneAnno value
     * @return int|null
     */
    public function getIDMissioneAnno()
    {
        return $this->IDMissioneAnno;
    }
    /**
     * Set IDMissioneAnno value
     * @param int $iDMissioneAnno
     * @return MissioneBase_Model
     */
    public function setIDMissioneAnno($iDMissioneAnno = null)
    {
        // validation for constraint: int
        if (!is_null($iDMissioneAnno) && !(is_int($iDMissioneAnno) || ctype_digit($iDMissioneAnno))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($iDMissioneAnno, true), gettype($iDMissioneAnno)), __LINE__);
        }
        $this->IDMissioneAnno = $iDMissioneAnno;
        return $this;
    }
    /**
     * Get IDMissioneAssegnazione value
     * @return int|null
     */
    public function getIDMissioneAssegnazione()
    {
        return $this->IDMissioneAssegnazione;
    }
    /**
     * Set IDMissioneAssegnazione value
     * @param int $iDMissioneAssegnazione
     * @return MissioneBase_Model
     */
    public function setIDMissioneAssegnazione($iDMissioneAssegnazione = null)
    {
        // validation for constraint: int
        if (!is_null($iDMissioneAssegnazione) && !(is_int($iDMissioneAssegnazione) || ctype_digit($iDMissioneAssegnazione))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($iDMissioneAssegnazione, true), gettype($iDMissioneAssegnazione)), __LINE__);
        }
        $this->IDMissioneAssegnazione = $iDMissioneAssegnazione;
        return $this;
    }
    /**
     * Get NoteMissione 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 getNoteMissione()
    {
        return isset($this->NoteMissione) ? $this->NoteMissione : null;
    }
    /**
     * Set NoteMissione 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 $noteMissione
     * @return MissioneBase_Model
     */
    public function setNoteMissione($noteMissione = null)
    {
        // validation for constraint: string
        if (!is_null($noteMissione) && !is_string($noteMissione)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($noteMissione, true), gettype($noteMissione)), __LINE__);
        }
        if (is_null($noteMissione) || (is_array($noteMissione) && empty($noteMissione))) {
            unset($this->NoteMissione);
        } else {
            $this->NoteMissione = $noteMissione;
        }
        return $this;
    }
    /**
     * Get Partenza_OrarioPresunto 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 getPartenza_OrarioPresunto()
    {
        return isset($this->Partenza_OrarioPresunto) ? $this->Partenza_OrarioPresunto : null;
    }
    /**
     * Set Partenza_OrarioPresunto 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 $partenza_OrarioPresunto
     * @return MissioneBase_Model
     */
    public function setPartenza_OrarioPresunto($partenza_OrarioPresunto = null)
    {
        // validation for constraint: string
        if (!is_null($partenza_OrarioPresunto) && !is_string($partenza_OrarioPresunto)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($partenza_OrarioPresunto, true), gettype($partenza_OrarioPresunto)), __LINE__);
        }
        if (is_null($partenza_OrarioPresunto) || (is_array($partenza_OrarioPresunto) && empty($partenza_OrarioPresunto))) {
            unset($this->Partenza_OrarioPresunto);
        } else {
            $this->Partenza_OrarioPresunto = $partenza_OrarioPresunto;
        }
        return $this;
    }
    /**
     * Get SezioneDiRiferimento 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 Sezione|null
     */
    public function getSezioneDiRiferimento()
    {
        return isset($this->SezioneDiRiferimento) ? $this->SezioneDiRiferimento : null;
    }
    /**
     * Set SezioneDiRiferimento 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 Sezione $sezioneDiRiferimento
     * @return MissioneBase_Model
     */
    public function setSezioneDiRiferimento(Sezione $sezioneDiRiferimento = null)
    {
        if (is_null($sezioneDiRiferimento) || (is_array($sezioneDiRiferimento) && empty($sezioneDiRiferimento))) {
            unset($this->SezioneDiRiferimento);
        } else {
            $this->SezioneDiRiferimento = $sezioneDiRiferimento;
        }
        return $this;
    }
    /**
     * Get TipoPercorso value
     * @return int|null
     */
    public function getTipoPercorso()
    {
        return $this->TipoPercorso;
    }
    /**
     * Set TipoPercorso value
     * @param int $tipoPercorso
     * @return MissioneBase_Model
     */
    public function setTipoPercorso($tipoPercorso = null)
    {
        // validation for constraint: int
        if (!is_null($tipoPercorso) && !(is_int($tipoPercorso) || ctype_digit($tipoPercorso))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($tipoPercorso, true), gettype($tipoPercorso)), __LINE__);
        }
        $this->TipoPercorso = $tipoPercorso;
        return $this;
    }
}
