<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for InviaPresenza_Request StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:InviaPresenza_Request
 * @subpackage Structs
 */
class InviaPresenza_Request extends AbstractStructBase
{
    /**
     * The Attivita
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var AttivitaModel
     */
    public $Attivita;
    /**
     * The Presenza
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var PresenzaModel
     */
    public $Presenza;
    /**
     * The RisposteCheckList
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var ArrayOfPresenza_CheckListRispostaModel
     */
    public $RisposteCheckList;
    /**
     * The Sezione
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var Sezione_Model
     */
    public $Sezione;
    /**
     * Constructor method for InviaPresenza_Request
     * @uses InviaPresenza_Request::setAttivita()
     * @uses InviaPresenza_Request::setPresenza()
     * @uses InviaPresenza_Request::setRisposteCheckList()
     * @uses InviaPresenza_Request::setSezione()
     * @param AttivitaModel $attivita
     * @param PresenzaModel $presenza
     * @param ArrayOfPresenza_CheckListRispostaModel $risposteCheckList
     * @param Sezione_Model $sezione
     */
    public function __construct(AttivitaModel $attivita = null, PresenzaModel $presenza = null, ArrayOfPresenza_CheckListRispostaModel $risposteCheckList = null, Sezione_Model $sezione = null)
    {
        $this
            ->setAttivita($attivita)
            ->setPresenza($presenza)
            ->setRisposteCheckList($risposteCheckList)
            ->setSezione($sezione);
    }
    /**
     * Get Attivita 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 AttivitaModel|null
     */
    public function getAttivita()
    {
        return isset($this->Attivita) ? $this->Attivita : null;
    }
    /**
     * Set Attivita 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 AttivitaModel $attivita
     * @return InviaPresenza_Request
     */
    public function setAttivita(AttivitaModel $attivita = null)
    {
        if (is_null($attivita) || (is_array($attivita) && empty($attivita))) {
            unset($this->Attivita);
        } else {
            $this->Attivita = $attivita;
        }
        return $this;
    }
    /**
     * Get Presenza 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 PresenzaModel|null
     */
    public function getPresenza()
    {
        return isset($this->Presenza) ? $this->Presenza : null;
    }
    /**
     * Set Presenza 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 PresenzaModel $presenza
     * @return InviaPresenza_Request
     */
    public function setPresenza(PresenzaModel $presenza = null)
    {
        if (is_null($presenza) || (is_array($presenza) && empty($presenza))) {
            unset($this->Presenza);
        } else {
            $this->Presenza = $presenza;
        }
        return $this;
    }
    /**
     * Get RisposteCheckList 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 ArrayOfPresenza_CheckListRispostaModel|null
     */
    public function getRisposteCheckList()
    {
        return isset($this->RisposteCheckList) ? $this->RisposteCheckList : null;
    }
    /**
     * Set RisposteCheckList 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 ArrayOfPresenza_CheckListRispostaModel $risposteCheckList
     * @return InviaPresenza_Request
     */
    public function setRisposteCheckList(ArrayOfPresenza_CheckListRispostaModel $risposteCheckList = null)
    {
        if (is_null($risposteCheckList) || (is_array($risposteCheckList) && empty($risposteCheckList))) {
            unset($this->RisposteCheckList);
        } else {
            $this->RisposteCheckList = $risposteCheckList;
        }
        return $this;
    }
    /**
     * Get Sezione 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_Model|null
     */
    public function getSezione()
    {
        return isset($this->Sezione) ? $this->Sezione : null;
    }
    /**
     * Set Sezione 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_Model $sezione
     * @return InviaPresenza_Request
     */
    public function setSezione(Sezione_Model $sezione = null)
    {
        if (is_null($sezione) || (is_array($sezione) && empty($sezione))) {
            unset($this->Sezione);
        } else {
            $this->Sezione = $sezione;
        }
        return $this;
    }
}
