<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for RichiestaCartellinoBase StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:RichiestaCartellinoBase
 * @subpackage Structs
 */
class RichiestaCartellinoBase extends AbstractStructBase
{
    /**
     * The DataFine
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DataFine;
    /**
     * The DataInizio
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DataInizio;
    /**
     * The DatiBollatura
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var RichestaCartellino_DatiBollatura
     */
    public $DatiBollatura;
    /**
     * The Identificativo
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var RichiestaCartellino_Identificativo
     */
    public $Identificativo;
    /**
     * The MotivoRichiesta
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var RichiestaCartellino_Motivo
     */
    public $MotivoRichiesta;
    /**
     * The OraFine
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $OraFine;
    /**
     * The OraInizio
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $OraInizio;
    /**
     * The Richiedente
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var Anagrafica_Model
     */
    public $Richiedente;
    /**
     * Constructor method for RichiestaCartellinoBase
     * @uses RichiestaCartellinoBase::setDataFine()
     * @uses RichiestaCartellinoBase::setDataInizio()
     * @uses RichiestaCartellinoBase::setDatiBollatura()
     * @uses RichiestaCartellinoBase::setIdentificativo()
     * @uses RichiestaCartellinoBase::setMotivoRichiesta()
     * @uses RichiestaCartellinoBase::setOraFine()
     * @uses RichiestaCartellinoBase::setOraInizio()
     * @uses RichiestaCartellinoBase::setRichiedente()
     * @param string $dataFine
     * @param string $dataInizio
     * @param RichestaCartellino_DatiBollatura $datiBollatura
     * @param RichiestaCartellino_Identificativo $identificativo
     * @param RichiestaCartellino_Motivo $motivoRichiesta
     * @param string $oraFine
     * @param string $oraInizio
     * @param Anagrafica_Model $richiedente
     */
    public function __construct($dataFine = null, $dataInizio = null, RichestaCartellino_DatiBollatura $datiBollatura = null, RichiestaCartellino_Identificativo $identificativo = null, RichiestaCartellino_Motivo $motivoRichiesta = null, $oraFine = null, $oraInizio = null, Anagrafica_Model $richiedente = null)
    {
        $this
            ->setDataFine($dataFine)
            ->setDataInizio($dataInizio)
            ->setDatiBollatura($datiBollatura)
            ->setIdentificativo($identificativo)
            ->setMotivoRichiesta($motivoRichiesta)
            ->setOraFine($oraFine)
            ->setOraInizio($oraInizio)
            ->setRichiedente($richiedente);
    }
    /**
     * Get DataFine 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 getDataFine()
    {
        return isset($this->DataFine) ? $this->DataFine : null;
    }
    /**
     * Set DataFine 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 $dataFine
     * @return RichiestaCartellinoBase
     */
    public function setDataFine($dataFine = null)
    {
        // validation for constraint: string
        if (!is_null($dataFine) && !is_string($dataFine)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($dataFine, true), gettype($dataFine)), __LINE__);
        }
        if (is_null($dataFine) || (is_array($dataFine) && empty($dataFine))) {
            unset($this->DataFine);
        } else {
            $this->DataFine = $dataFine;
        }
        return $this;
    }
    /**
     * Get DataInizio 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 getDataInizio()
    {
        return isset($this->DataInizio) ? $this->DataInizio : null;
    }
    /**
     * Set DataInizio 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 $dataInizio
     * @return RichiestaCartellinoBase
     */
    public function setDataInizio($dataInizio = null)
    {
        // validation for constraint: string
        if (!is_null($dataInizio) && !is_string($dataInizio)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($dataInizio, true), gettype($dataInizio)), __LINE__);
        }
        if (is_null($dataInizio) || (is_array($dataInizio) && empty($dataInizio))) {
            unset($this->DataInizio);
        } else {
            $this->DataInizio = $dataInizio;
        }
        return $this;
    }
    /**
     * Get DatiBollatura 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 RichestaCartellino_DatiBollatura|null
     */
    public function getDatiBollatura()
    {
        return isset($this->DatiBollatura) ? $this->DatiBollatura : null;
    }
    /**
     * Set DatiBollatura 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 RichestaCartellino_DatiBollatura $datiBollatura
     * @return RichiestaCartellinoBase
     */
    public function setDatiBollatura(RichestaCartellino_DatiBollatura $datiBollatura = null)
    {
        if (is_null($datiBollatura) || (is_array($datiBollatura) && empty($datiBollatura))) {
            unset($this->DatiBollatura);
        } else {
            $this->DatiBollatura = $datiBollatura;
        }
        return $this;
    }
    /**
     * Get Identificativo 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 RichiestaCartellino_Identificativo|null
     */
    public function getIdentificativo()
    {
        return isset($this->Identificativo) ? $this->Identificativo : null;
    }
    /**
     * Set Identificativo 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 RichiestaCartellino_Identificativo $identificativo
     * @return RichiestaCartellinoBase
     */
    public function setIdentificativo(RichiestaCartellino_Identificativo $identificativo = null)
    {
        if (is_null($identificativo) || (is_array($identificativo) && empty($identificativo))) {
            unset($this->Identificativo);
        } else {
            $this->Identificativo = $identificativo;
        }
        return $this;
    }
    /**
     * Get MotivoRichiesta 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 RichiestaCartellino_Motivo|null
     */
    public function getMotivoRichiesta()
    {
        return isset($this->MotivoRichiesta) ? $this->MotivoRichiesta : null;
    }
    /**
     * Set MotivoRichiesta 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 RichiestaCartellino_Motivo $motivoRichiesta
     * @return RichiestaCartellinoBase
     */
    public function setMotivoRichiesta(RichiestaCartellino_Motivo $motivoRichiesta = null)
    {
        if (is_null($motivoRichiesta) || (is_array($motivoRichiesta) && empty($motivoRichiesta))) {
            unset($this->MotivoRichiesta);
        } else {
            $this->MotivoRichiesta = $motivoRichiesta;
        }
        return $this;
    }
    /**
     * Get OraFine 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 getOraFine()
    {
        return isset($this->OraFine) ? $this->OraFine : null;
    }
    /**
     * Set OraFine 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 $oraFine
     * @return RichiestaCartellinoBase
     */
    public function setOraFine($oraFine = null)
    {
        // validation for constraint: string
        if (!is_null($oraFine) && !is_string($oraFine)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($oraFine, true), gettype($oraFine)), __LINE__);
        }
        if (is_null($oraFine) || (is_array($oraFine) && empty($oraFine))) {
            unset($this->OraFine);
        } else {
            $this->OraFine = $oraFine;
        }
        return $this;
    }
    /**
     * Get OraInizio 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 getOraInizio()
    {
        return isset($this->OraInizio) ? $this->OraInizio : null;
    }
    /**
     * Set OraInizio 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 $oraInizio
     * @return RichiestaCartellinoBase
     */
    public function setOraInizio($oraInizio = null)
    {
        // validation for constraint: string
        if (!is_null($oraInizio) && !is_string($oraInizio)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($oraInizio, true), gettype($oraInizio)), __LINE__);
        }
        if (is_null($oraInizio) || (is_array($oraInizio) && empty($oraInizio))) {
            unset($this->OraInizio);
        } else {
            $this->OraInizio = $oraInizio;
        }
        return $this;
    }
    /**
     * Get Richiedente 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 Anagrafica_Model|null
     */
    public function getRichiedente()
    {
        return isset($this->Richiedente) ? $this->Richiedente : null;
    }
    /**
     * Set Richiedente 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 Anagrafica_Model $richiedente
     * @return RichiestaCartellinoBase
     */
    public function setRichiedente(Anagrafica_Model $richiedente = null)
    {
        if (is_null($richiedente) || (is_array($richiedente) && empty($richiedente))) {
            unset($this->Richiedente);
        } else {
            $this->Richiedente = $richiedente;
        }
        return $this;
    }
}
