<?php
use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for Presenza StructType
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: tns:Presenza
 * @subpackage Structs
 */
class Presenza extends AbstractStructBase
{
    /**
     * The Causale
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Causale;
    /**
     * The Data
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Data;
    /**
     * The DescrizioneMansione
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DescrizioneMansione;
    /**
     * The DescrizioneSezione
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $DescrizioneSezione;
    /**
     * The ID
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $ID;
    /**
     * The IDMansione
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $IDMansione;
    /**
     * The IDSezione
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $IDSezione;
    /**
     * The Ora
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Ora;
    /**
     * Constructor method for Presenza
     * @uses Presenza::setCausale()
     * @uses Presenza::setData()
     * @uses Presenza::setDescrizioneMansione()
     * @uses Presenza::setDescrizioneSezione()
     * @uses Presenza::setID()
     * @uses Presenza::setIDMansione()
     * @uses Presenza::setIDSezione()
     * @uses Presenza::setOra()
     * @param string $causale
     * @param string $data
     * @param string $descrizioneMansione
     * @param string $descrizioneSezione
     * @param int $iD
     * @param int $iDMansione
     * @param string $iDSezione
     * @param string $ora
     */
    public function __construct($causale = null, $data = null, $descrizioneMansione = null, $descrizioneSezione = null, $iD = null, $iDMansione = null, $iDSezione = null, $ora = null)
    {
        $this
            ->setCausale($causale)
            ->setData($data)
            ->setDescrizioneMansione($descrizioneMansione)
            ->setDescrizioneSezione($descrizioneSezione)
            ->setID($iD)
            ->setIDMansione($iDMansione)
            ->setIDSezione($iDSezione)
            ->setOra($ora);
    }
    /**
     * Get Causale 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 getCausale()
    {
        return isset($this->Causale) ? $this->Causale : null;
    }
    /**
     * Set Causale 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 $causale
     * @return Presenza
     */
    public function setCausale($causale = null)
    {
        // validation for constraint: string
        if (!is_null($causale) && !is_string($causale)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($causale, true), gettype($causale)), __LINE__);
        }
        if (is_null($causale) || (is_array($causale) && empty($causale))) {
            unset($this->Causale);
        } else {
            $this->Causale = $causale;
        }
        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 Presenza
     */
    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 DescrizioneMansione 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 getDescrizioneMansione()
    {
        return isset($this->DescrizioneMansione) ? $this->DescrizioneMansione : null;
    }
    /**
     * Set DescrizioneMansione 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 $descrizioneMansione
     * @return Presenza
     */
    public function setDescrizioneMansione($descrizioneMansione = null)
    {
        // validation for constraint: string
        if (!is_null($descrizioneMansione) && !is_string($descrizioneMansione)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($descrizioneMansione, true), gettype($descrizioneMansione)), __LINE__);
        }
        if (is_null($descrizioneMansione) || (is_array($descrizioneMansione) && empty($descrizioneMansione))) {
            unset($this->DescrizioneMansione);
        } else {
            $this->DescrizioneMansione = $descrizioneMansione;
        }
        return $this;
    }
    /**
     * Get DescrizioneSezione 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 getDescrizioneSezione()
    {
        return isset($this->DescrizioneSezione) ? $this->DescrizioneSezione : null;
    }
    /**
     * Set DescrizioneSezione 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 $descrizioneSezione
     * @return Presenza
     */
    public function setDescrizioneSezione($descrizioneSezione = null)
    {
        // validation for constraint: string
        if (!is_null($descrizioneSezione) && !is_string($descrizioneSezione)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($descrizioneSezione, true), gettype($descrizioneSezione)), __LINE__);
        }
        if (is_null($descrizioneSezione) || (is_array($descrizioneSezione) && empty($descrizioneSezione))) {
            unset($this->DescrizioneSezione);
        } else {
            $this->DescrizioneSezione = $descrizioneSezione;
        }
        return $this;
    }
    /**
     * Get ID value
     * @return int|null
     */
    public function getID()
    {
        return $this->ID;
    }
    /**
     * Set ID value
     * @param int $iD
     * @return Presenza
     */
    public function setID($iD = null)
    {
        // validation for constraint: int
        if (!is_null($iD) && !(is_int($iD) || ctype_digit($iD))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($iD, true), gettype($iD)), __LINE__);
        }
        $this->ID = $iD;
        return $this;
    }
    /**
     * Get IDMansione value
     * @return int|null
     */
    public function getIDMansione()
    {
        return $this->IDMansione;
    }
    /**
     * Set IDMansione value
     * @param int $iDMansione
     * @return Presenza
     */
    public function setIDMansione($iDMansione = null)
    {
        // validation for constraint: int
        if (!is_null($iDMansione) && !(is_int($iDMansione) || ctype_digit($iDMansione))) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide an integer value, %s given', var_export($iDMansione, true), gettype($iDMansione)), __LINE__);
        }
        $this->IDMansione = $iDMansione;
        return $this;
    }
    /**
     * Get IDSezione 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 getIDSezione()
    {
        return isset($this->IDSezione) ? $this->IDSezione : null;
    }
    /**
     * Set IDSezione 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 $iDSezione
     * @return Presenza
     */
    public function setIDSezione($iDSezione = null)
    {
        // validation for constraint: string
        if (!is_null($iDSezione) && !is_string($iDSezione)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($iDSezione, true), gettype($iDSezione)), __LINE__);
        }
        if (is_null($iDSezione) || (is_array($iDSezione) && empty($iDSezione))) {
            unset($this->IDSezione);
        } else {
            $this->IDSezione = $iDSezione;
        }
        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 Presenza
     */
    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;
    }
}
