<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Sezione_Model StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:Sezione_Model
 * @subpackage Structs
 */
class Sezione_Model extends AbstractStructBase
{
    /**
     * The CAP
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $CAP;
    /**
     * The Comune
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Comune;
    /**
     * The Descrizione
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Descrizione;
    /**
     * The ID
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $ID;
    /**
     * The Indirizzo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Indirizzo;
    /**
     * The Latitudine
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $Latitudine;
    /**
     * The Localita
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Localita;
    /**
     * The Longitudine
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var float
     */
    public $Longitudine;
    /**
     * The Predefinita
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $Predefinita;
    /**
     * The Provincia
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Provincia;
    /**
     * The SezioneDiDefault
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $SezioneDiDefault;
    /**
     * The StampaInRicevute
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var bool
     */
    public $StampaInRicevute;
    /**
     * Constructor method for Sezione_Model
     * @uses Sezione_Model::setCAP()
     * @uses Sezione_Model::setComune()
     * @uses Sezione_Model::setDescrizione()
     * @uses Sezione_Model::setID()
     * @uses Sezione_Model::setIndirizzo()
     * @uses Sezione_Model::setLatitudine()
     * @uses Sezione_Model::setLocalita()
     * @uses Sezione_Model::setLongitudine()
     * @uses Sezione_Model::setPredefinita()
     * @uses Sezione_Model::setProvincia()
     * @uses Sezione_Model::setSezioneDiDefault()
     * @uses Sezione_Model::setStampaInRicevute()
     * @param string $cAP
     * @param string $comune
     * @param string $descrizione
     * @param string $iD
     * @param string $indirizzo
     * @param float $latitudine
     * @param string $localita
     * @param float $longitudine
     * @param bool $predefinita
     * @param string $provincia
     * @param bool $sezioneDiDefault
     * @param bool $stampaInRicevute
     */
    public function __construct($cAP = null, $comune = null, $descrizione = null, $iD = null, $indirizzo = null, $latitudine = null, $localita = null, $longitudine = null, $predefinita = null, $provincia = null, $sezioneDiDefault = null, $stampaInRicevute = null)
    {
        $this
            ->setCAP($cAP)
            ->setComune($comune)
            ->setDescrizione($descrizione)
            ->setID($iD)
            ->setIndirizzo($indirizzo)
            ->setLatitudine($latitudine)
            ->setLocalita($localita)
            ->setLongitudine($longitudine)
            ->setPredefinita($predefinita)
            ->setProvincia($provincia)
            ->setSezioneDiDefault($sezioneDiDefault)
            ->setStampaInRicevute($stampaInRicevute);
    }
    /**
     * Get CAP 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 getCAP()
    {
        return isset($this->CAP) ? $this->CAP : null;
    }
    /**
     * Set CAP 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 $cAP
     * @return Sezione_Model
     */
    public function setCAP($cAP = null)
    {
        // validation for constraint: string
        if (!is_null($cAP) && !is_string($cAP)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($cAP, true), gettype($cAP)), __LINE__);
        }
        if (is_null($cAP) || (is_array($cAP) && empty($cAP))) {
            unset($this->CAP);
        } else {
            $this->CAP = $cAP;
        }
        return $this;
    }
    /**
     * Get Comune 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 getComune()
    {
        return isset($this->Comune) ? $this->Comune : null;
    }
    /**
     * Set Comune 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 $comune
     * @return Sezione_Model
     */
    public function setComune($comune = null)
    {
        // validation for constraint: string
        if (!is_null($comune) && !is_string($comune)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($comune, true), gettype($comune)), __LINE__);
        }
        if (is_null($comune) || (is_array($comune) && empty($comune))) {
            unset($this->Comune);
        } else {
            $this->Comune = $comune;
        }
        return $this;
    }
    /**
     * Get Descrizione 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 getDescrizione()
    {
        return isset($this->Descrizione) ? $this->Descrizione : null;
    }
    /**
     * Set Descrizione 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 $descrizione
     * @return Sezione_Model
     */
    public function setDescrizione($descrizione = null)
    {
        // validation for constraint: string
        if (!is_null($descrizione) && !is_string($descrizione)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($descrizione, true), gettype($descrizione)), __LINE__);
        }
        if (is_null($descrizione) || (is_array($descrizione) && empty($descrizione))) {
            unset($this->Descrizione);
        } else {
            $this->Descrizione = $descrizione;
        }
        return $this;
    }
    /**
     * Get ID 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 getID()
    {
        return isset($this->ID) ? $this->ID : null;
    }
    /**
     * Set ID 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 $iD
     * @return Sezione_Model
     */
    public function setID($iD = null)
    {
        // validation for constraint: string
        if (!is_null($iD) && !is_string($iD)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($iD, true), gettype($iD)), __LINE__);
        }
        if (is_null($iD) || (is_array($iD) && empty($iD))) {
            unset($this->ID);
        } else {
            $this->ID = $iD;
        }
        return $this;
    }
    /**
     * Get Indirizzo 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 getIndirizzo()
    {
        return isset($this->Indirizzo) ? $this->Indirizzo : null;
    }
    /**
     * Set Indirizzo 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 $indirizzo
     * @return Sezione_Model
     */
    public function setIndirizzo($indirizzo = null)
    {
        // validation for constraint: string
        if (!is_null($indirizzo) && !is_string($indirizzo)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($indirizzo, true), gettype($indirizzo)), __LINE__);
        }
        if (is_null($indirizzo) || (is_array($indirizzo) && empty($indirizzo))) {
            unset($this->Indirizzo);
        } else {
            $this->Indirizzo = $indirizzo;
        }
        return $this;
    }
    /**
     * Get Latitudine value
     * @return float|null
     */
    public function getLatitudine()
    {
        return $this->Latitudine;
    }
    /**
     * Set Latitudine value
     * @param float $latitudine
     * @return Sezione_Model
     */
    public function setLatitudine($latitudine = null)
    {
        // validation for constraint: float
        if (!is_null($latitudine) && !(is_float($latitudine) || is_numeric($latitudine))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($latitudine, true), gettype($latitudine)), __LINE__);
        }
        $this->Latitudine = $latitudine;
        return $this;
    }
    /**
     * Get Localita 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 getLocalita()
    {
        return isset($this->Localita) ? $this->Localita : null;
    }
    /**
     * Set Localita 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 $localita
     * @return Sezione_Model
     */
    public function setLocalita($localita = null)
    {
        // validation for constraint: string
        if (!is_null($localita) && !is_string($localita)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($localita, true), gettype($localita)), __LINE__);
        }
        if (is_null($localita) || (is_array($localita) && empty($localita))) {
            unset($this->Localita);
        } else {
            $this->Localita = $localita;
        }
        return $this;
    }
    /**
     * Get Longitudine value
     * @return float|null
     */
    public function getLongitudine()
    {
        return $this->Longitudine;
    }
    /**
     * Set Longitudine value
     * @param float $longitudine
     * @return Sezione_Model
     */
    public function setLongitudine($longitudine = null)
    {
        // validation for constraint: float
        if (!is_null($longitudine) && !(is_float($longitudine) || is_numeric($longitudine))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a float value, %s given', var_export($longitudine, true), gettype($longitudine)), __LINE__);
        }
        $this->Longitudine = $longitudine;
        return $this;
    }
    /**
     * Get Predefinita value
     * @return bool|null
     */
    public function getPredefinita()
    {
        return $this->Predefinita;
    }
    /**
     * Set Predefinita value
     * @param bool $predefinita
     * @return Sezione_Model
     */
    public function setPredefinita($predefinita = null)
    {
        // validation for constraint: boolean
        if (!is_null($predefinita) && !is_bool($predefinita)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($predefinita, true), gettype($predefinita)), __LINE__);
        }
        $this->Predefinita = $predefinita;
        return $this;
    }
    /**
     * Get Provincia 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 getProvincia()
    {
        return isset($this->Provincia) ? $this->Provincia : null;
    }
    /**
     * Set Provincia 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 $provincia
     * @return Sezione_Model
     */
    public function setProvincia($provincia = null)
    {
        // validation for constraint: string
        if (!is_null($provincia) && !is_string($provincia)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($provincia, true), gettype($provincia)), __LINE__);
        }
        if (is_null($provincia) || (is_array($provincia) && empty($provincia))) {
            unset($this->Provincia);
        } else {
            $this->Provincia = $provincia;
        }
        return $this;
    }
    /**
     * Get SezioneDiDefault value
     * @return bool|null
     */
    public function getSezioneDiDefault()
    {
        return $this->SezioneDiDefault;
    }
    /**
     * Set SezioneDiDefault value
     * @param bool $sezioneDiDefault
     * @return Sezione_Model
     */
    public function setSezioneDiDefault($sezioneDiDefault = null)
    {
        // validation for constraint: boolean
        if (!is_null($sezioneDiDefault) && !is_bool($sezioneDiDefault)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($sezioneDiDefault, true), gettype($sezioneDiDefault)), __LINE__);
        }
        $this->SezioneDiDefault = $sezioneDiDefault;
        return $this;
    }
    /**
     * Get StampaInRicevute value
     * @return bool|null
     */
    public function getStampaInRicevute()
    {
        return $this->StampaInRicevute;
    }
    /**
     * Set StampaInRicevute value
     * @param bool $stampaInRicevute
     * @return Sezione_Model
     */
    public function setStampaInRicevute($stampaInRicevute = null)
    {
        // validation for constraint: boolean
        if (!is_null($stampaInRicevute) && !is_bool($stampaInRicevute)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a bool, %s given', var_export($stampaInRicevute, true), gettype($stampaInRicevute)), __LINE__);
        }
        $this->StampaInRicevute = $stampaInRicevute;
        return $this;
    }
}
