<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for SegnalazioneGuasto_Model StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:SegnalazioneGuasto_Model
 * @subpackage Structs
 */
class SegnalazioneGuasto_Model extends AbstractStructBase
{
    /**
     * The Articolo1
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var Articolo_Model
     */
    public $Articolo1;
    /**
     * The Articolo2
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var Articolo_Model
     */
    public $Articolo2;
    /**
     * The Data
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Data;
    /**
     * The Esercizio
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Esercizio;
    /**
     * The Immagine
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Immagine;
    /**
     * The Km
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $Km;
    /**
     * The KmPartenza
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $KmPartenza;
    /**
     * The Numeratore
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Numeratore;
    /**
     * The Numero
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Numero;
    /**
     * The Operatore
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var AnagraficaDettaglio_Model
     */
    public $Operatore;
    /**
     * The Ora
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Ora;
    /**
     * The Osservazioni
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Osservazioni;
    /**
     * The OsservazioniResponsabile
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $OsservazioniResponsabile;
    /**
     * The Responsabile
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var AnagraficaDettaglio_Model
     */
    public $Responsabile;
    /**
     * The Stato
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $Stato;
    /**
     * The Targa
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Targa;
    /**
     * The Tipologia
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $Tipologia;
    /**
     * The VeicoloFermo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $VeicoloFermo;
    /**
     * Constructor method for SegnalazioneGuasto_Model
     * @uses SegnalazioneGuasto_Model::setArticolo1()
     * @uses SegnalazioneGuasto_Model::setArticolo2()
     * @uses SegnalazioneGuasto_Model::setData()
     * @uses SegnalazioneGuasto_Model::setEsercizio()
     * @uses SegnalazioneGuasto_Model::setImmagine()
     * @uses SegnalazioneGuasto_Model::setKm()
     * @uses SegnalazioneGuasto_Model::setKmPartenza()
     * @uses SegnalazioneGuasto_Model::setNumeratore()
     * @uses SegnalazioneGuasto_Model::setNumero()
     * @uses SegnalazioneGuasto_Model::setOperatore()
     * @uses SegnalazioneGuasto_Model::setOra()
     * @uses SegnalazioneGuasto_Model::setOsservazioni()
     * @uses SegnalazioneGuasto_Model::setOsservazioniResponsabile()
     * @uses SegnalazioneGuasto_Model::setResponsabile()
     * @uses SegnalazioneGuasto_Model::setStato()
     * @uses SegnalazioneGuasto_Model::setTarga()
     * @uses SegnalazioneGuasto_Model::setTipologia()
     * @uses SegnalazioneGuasto_Model::setVeicoloFermo()
     * @param Articolo_Model $articolo1
     * @param Articolo_Model $articolo2
     * @param string $data
     * @param string $esercizio
     * @param string $immagine
     * @param float $km
     * @param float $kmPartenza
     * @param string $numeratore
     * @param string $numero
     * @param AnagraficaDettaglio_Model $operatore
     * @param string $ora
     * @param string $osservazioni
     * @param string $osservazioniResponsabile
     * @param AnagraficaDettaglio_Model $responsabile
     * @param string $stato
     * @param string $targa
     * @param string $tipologia
     * @param bool $veicoloFermo
     */
    public function __construct(Articolo_Model $articolo1 = null, Articolo_Model $articolo2 = null, $data = null, $esercizio = null, $immagine = null, $km = null, $kmPartenza = null, $numeratore = null, $numero = null, AnagraficaDettaglio_Model $operatore = null, $ora = null, $osservazioni = null, $osservazioniResponsabile = null, AnagraficaDettaglio_Model $responsabile = null, $stato = null, $targa = null, $tipologia = null, $veicoloFermo = null)
    {
        $this
            ->setArticolo1($articolo1)
            ->setArticolo2($articolo2)
            ->setData($data)
            ->setEsercizio($esercizio)
            ->setImmagine($immagine)
            ->setKm($km)
            ->setKmPartenza($kmPartenza)
            ->setNumeratore($numeratore)
            ->setNumero($numero)
            ->setOperatore($operatore)
            ->setOra($ora)
            ->setOsservazioni($osservazioni)
            ->setOsservazioniResponsabile($osservazioniResponsabile)
            ->setResponsabile($responsabile)
            ->setStato($stato)
            ->setTarga($targa)
            ->setTipologia($tipologia)
            ->setVeicoloFermo($veicoloFermo);
    }
    /**
     * Get Articolo1 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 Articolo_Model|null
     */
    public function getArticolo1()
    {
        return isset($this->Articolo1) ? $this->Articolo1 : null;
    }
    /**
     * Set Articolo1 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 Articolo_Model $articolo1
     * @return SegnalazioneGuasto_Model
     */
    public function setArticolo1(Articolo_Model $articolo1 = null)
    {
        if (is_null($articolo1) || (is_array($articolo1) && empty($articolo1))) {
            unset($this->Articolo1);
        } else {
            $this->Articolo1 = $articolo1;
        }
        return $this;
    }
    /**
     * Get Articolo2 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 Articolo_Model|null
     */
    public function getArticolo2()
    {
        return isset($this->Articolo2) ? $this->Articolo2 : null;
    }
    /**
     * Set Articolo2 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 Articolo_Model $articolo2
     * @return SegnalazioneGuasto_Model
     */
    public function setArticolo2(Articolo_Model $articolo2 = null)
    {
        if (is_null($articolo2) || (is_array($articolo2) && empty($articolo2))) {
            unset($this->Articolo2);
        } else {
            $this->Articolo2 = $articolo2;
        }
        return $this;
    }
    /**
     * Get Data 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 getData()
    {
        return isset($this->Data) ? $this->Data : null;
    }
    /**
     * Set Data 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 $data
     * @return SegnalazioneGuasto_Model
     */
    public function setData($data = null)
    {
        // validation for constraint: string
        if (!is_null($data) && !is_string($data)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($data, true), gettype($data)), __LINE__);
        }
        if (is_null($data) || (is_array($data) && empty($data))) {
            unset($this->Data);
        } else {
            $this->Data = $data;
        }
        return $this;
    }
    /**
     * Get Esercizio 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 getEsercizio()
    {
        return isset($this->Esercizio) ? $this->Esercizio : null;
    }
    /**
     * Set Esercizio 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 $esercizio
     * @return SegnalazioneGuasto_Model
     */
    public function setEsercizio($esercizio = null)
    {
        // validation for constraint: string
        if (!is_null($esercizio) && !is_string($esercizio)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($esercizio, true), gettype($esercizio)), __LINE__);
        }
        if (is_null($esercizio) || (is_array($esercizio) && empty($esercizio))) {
            unset($this->Esercizio);
        } else {
            $this->Esercizio = $esercizio;
        }
        return $this;
    }
    /**
     * Get Immagine 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 getImmagine()
    {
        return isset($this->Immagine) ? $this->Immagine : null;
    }
    /**
     * Set Immagine 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 $immagine
     * @return SegnalazioneGuasto_Model
     */
    public function setImmagine($immagine = null)
    {
        // validation for constraint: string
        if (!is_null($immagine) && !is_string($immagine)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($immagine, true), gettype($immagine)), __LINE__);
        }
        if (is_null($immagine) || (is_array($immagine) && empty($immagine))) {
            unset($this->Immagine);
        } else {
            $this->Immagine = $immagine;
        }
        return $this;
    }
    /**
     * Get Km value
     * @return float|null
     */
    public function getKm()
    {
        return $this->Km;
    }
    /**
     * Set Km value
     * @param float $km
     * @return SegnalazioneGuasto_Model
     */
    public function setKm($km = null)
    {
        // validation for constraint: float
        if (!is_null($km) && !(is_float($km) || is_numeric($km))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($km, true), gettype($km)), __LINE__);
        }
        $this->Km = $km;
        return $this;
    }
    /**
     * Get KmPartenza value
     * @return float|null
     */
    public function getKmPartenza()
    {
        return $this->KmPartenza;
    }
    /**
     * Set KmPartenza value
     * @param float $kmPartenza
     * @return SegnalazioneGuasto_Model
     */
    public function setKmPartenza($kmPartenza = null)
    {
        // validation for constraint: float
        if (!is_null($kmPartenza) && !(is_float($kmPartenza) || is_numeric($kmPartenza))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($kmPartenza, true), gettype($kmPartenza)), __LINE__);
        }
        $this->KmPartenza = $kmPartenza;
        return $this;
    }
    /**
     * Get Numeratore 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 getNumeratore()
    {
        return isset($this->Numeratore) ? $this->Numeratore : null;
    }
    /**
     * Set Numeratore 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 $numeratore
     * @return SegnalazioneGuasto_Model
     */
    public function setNumeratore($numeratore = null)
    {
        // validation for constraint: string
        if (!is_null($numeratore) && !is_string($numeratore)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($numeratore, true), gettype($numeratore)), __LINE__);
        }
        if (is_null($numeratore) || (is_array($numeratore) && empty($numeratore))) {
            unset($this->Numeratore);
        } else {
            $this->Numeratore = $numeratore;
        }
        return $this;
    }
    /**
     * Get Numero 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 getNumero()
    {
        return isset($this->Numero) ? $this->Numero : null;
    }
    /**
     * Set Numero 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 $numero
     * @return SegnalazioneGuasto_Model
     */
    public function setNumero($numero = null)
    {
        // validation for constraint: string
        if (!is_null($numero) && !is_string($numero)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($numero, true), gettype($numero)), __LINE__);
        }
        if (is_null($numero) || (is_array($numero) && empty($numero))) {
            unset($this->Numero);
        } else {
            $this->Numero = $numero;
        }
        return $this;
    }
    /**
     * Get Operatore 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 AnagraficaDettaglio_Model|null
     */
    public function getOperatore()
    {
        return isset($this->Operatore) ? $this->Operatore : null;
    }
    /**
     * Set Operatore 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 AnagraficaDettaglio_Model $operatore
     * @return SegnalazioneGuasto_Model
     */
    public function setOperatore(AnagraficaDettaglio_Model $operatore = null)
    {
        if (is_null($operatore) || (is_array($operatore) && empty($operatore))) {
            unset($this->Operatore);
        } else {
            $this->Operatore = $operatore;
        }
        return $this;
    }
    /**
     * Get Ora 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 getOra()
    {
        return isset($this->Ora) ? $this->Ora : null;
    }
    /**
     * Set Ora 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 $ora
     * @return SegnalazioneGuasto_Model
     */
    public function setOra($ora = null)
    {
        // validation for constraint: string
        if (!is_null($ora) && !is_string($ora)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($ora, true), gettype($ora)), __LINE__);
        }
        if (is_null($ora) || (is_array($ora) && empty($ora))) {
            unset($this->Ora);
        } else {
            $this->Ora = $ora;
        }
        return $this;
    }
    /**
     * Get Osservazioni 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 getOsservazioni()
    {
        return isset($this->Osservazioni) ? $this->Osservazioni : null;
    }
    /**
     * Set Osservazioni 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 $osservazioni
     * @return SegnalazioneGuasto_Model
     */
    public function setOsservazioni($osservazioni = null)
    {
        // validation for constraint: string
        if (!is_null($osservazioni) && !is_string($osservazioni)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($osservazioni, true), gettype($osservazioni)), __LINE__);
        }
        if (is_null($osservazioni) || (is_array($osservazioni) && empty($osservazioni))) {
            unset($this->Osservazioni);
        } else {
            $this->Osservazioni = $osservazioni;
        }
        return $this;
    }
    /**
     * Get OsservazioniResponsabile 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 getOsservazioniResponsabile()
    {
        return isset($this->OsservazioniResponsabile) ? $this->OsservazioniResponsabile : null;
    }
    /**
     * Set OsservazioniResponsabile 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 $osservazioniResponsabile
     * @return SegnalazioneGuasto_Model
     */
    public function setOsservazioniResponsabile($osservazioniResponsabile = null)
    {
        // validation for constraint: string
        if (!is_null($osservazioniResponsabile) && !is_string($osservazioniResponsabile)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($osservazioniResponsabile, true), gettype($osservazioniResponsabile)), __LINE__);
        }
        if (is_null($osservazioniResponsabile) || (is_array($osservazioniResponsabile) && empty($osservazioniResponsabile))) {
            unset($this->OsservazioniResponsabile);
        } else {
            $this->OsservazioniResponsabile = $osservazioniResponsabile;
        }
        return $this;
    }
    /**
     * Get Responsabile 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 AnagraficaDettaglio_Model|null
     */
    public function getResponsabile()
    {
        return isset($this->Responsabile) ? $this->Responsabile : null;
    }
    /**
     * Set Responsabile 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 AnagraficaDettaglio_Model $responsabile
     * @return SegnalazioneGuasto_Model
     */
    public function setResponsabile(AnagraficaDettaglio_Model $responsabile = null)
    {
        if (is_null($responsabile) || (is_array($responsabile) && empty($responsabile))) {
            unset($this->Responsabile);
        } else {
            $this->Responsabile = $responsabile;
        }
        return $this;
    }
    /**
     * Get Stato value
     * @return string|null
     */
    public function getStato()
    {
        return $this->Stato;
    }
    /**
     * Set Stato value
     * @uses StatoSegnalazioneGuasto::valueIsValid()
     * @uses StatoSegnalazioneGuasto::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $stato
     * @return SegnalazioneGuasto_Model
     */
    public function setStato($stato = null)
    {
        // validation for constraint: enumeration
        if (!StatoSegnalazioneGuasto::valueIsValid($stato)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class StatoSegnalazioneGuasto', is_array($stato) ? implode(', ', $stato) : var_export($stato, true), implode(', ', StatoSegnalazioneGuasto::getValidValues())), __LINE__);
        }
        $this->Stato = $stato;
        return $this;
    }
    /**
     * Get Targa 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 getTarga()
    {
        return isset($this->Targa) ? $this->Targa : null;
    }
    /**
     * Set Targa 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 $targa
     * @return SegnalazioneGuasto_Model
     */
    public function setTarga($targa = null)
    {
        // validation for constraint: string
        if (!is_null($targa) && !is_string($targa)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($targa, true), gettype($targa)), __LINE__);
        }
        if (is_null($targa) || (is_array($targa) && empty($targa))) {
            unset($this->Targa);
        } else {
            $this->Targa = $targa;
        }
        return $this;
    }
    /**
     * Get Tipologia value
     * @return string|null
     */
    public function getTipologia()
    {
        return $this->Tipologia;
    }
    /**
     * Set Tipologia value
     * @uses TipiSegnalazioneGuasto::valueIsValid()
     * @uses TipiSegnalazioneGuasto::getValidValues()
     * @throws \InvalidArgumentException
     * @param string $tipologia
     * @return SegnalazioneGuasto_Model
     */
    public function setTipologia($tipologia = null)
    {
        // validation for constraint: enumeration
        if (!TipiSegnalazioneGuasto::valueIsValid($tipologia)) {
            throw new \InvalidArgumentException(sprintf('Invalid value(s) %s, please use one of: %s from enumeration class TipiSegnalazioneGuasto', is_array($tipologia) ? implode(', ', $tipologia) : var_export($tipologia, true), implode(', ', TipiSegnalazioneGuasto::getValidValues())), __LINE__);
        }
        $this->Tipologia = $tipologia;
        return $this;
    }
    /**
     * Get VeicoloFermo value
     * @return bool|null
     */
    public function getVeicoloFermo()
    {
        return $this->VeicoloFermo;
    }
    /**
     * Set VeicoloFermo value
     * @param bool $veicoloFermo
     * @return SegnalazioneGuasto_Model
     */
    public function setVeicoloFermo($veicoloFermo = null)
    {
        // validation for constraint: boolean
        if (!is_null($veicoloFermo) && !is_bool($veicoloFermo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($veicoloFermo, true), gettype($veicoloFermo)), __LINE__);
        }
        $this->VeicoloFermo = $veicoloFermo;
        return $this;
    }
}
