<?php

namespace TRIBUNALWS;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for EntidadeOriginadora TRIBUNALWS
 * Meta information extracted from the WSDL
 * - nillable: true
 * - type: ns1:EntidadeOriginadora
 * @subpackage Structs
 */
class EntidadeOriginadora extends AbstractStructBase
{
    /**
     * The Descricao
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Descricao;
    /**
     * The ID
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var int
     */
    public $ID;
    /**
     * The Nome
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $Nome;
    /**
     * The TipoEntidade
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * @var string
     */
    public $TipoEntidade;
    /**
     * The TipoEntidadeNome
     * Meta information extracted from the WSDL
     * - minOccurs: 0
     * - nillable: true
     * @var string
     */
    public $TipoEntidadeNome;
    /**
     * Constructor method for EntidadeOriginadora
     * @uses EntidadeOriginadora::setDescricao()
     * @uses EntidadeOriginadora::setID()
     * @uses EntidadeOriginadora::setNome()
     * @uses EntidadeOriginadora::setTipoEntidade()
     * @uses EntidadeOriginadora::setTipoEntidadeNome()
     * @param string $descricao
     * @param int $iD
     * @param string $nome
     * @param string $tipoEntidade
     * @param string $tipoEntidadeNome
     */
    public function __construct($descricao = null, $iD = null, $nome = null, $tipoEntidade = null, $tipoEntidadeNome = null)
    {
        $this
            ->setDescricao($descricao)
            ->setID($iD)
            ->setNome($nome)
            ->setTipoEntidade($tipoEntidade)
            ->setTipoEntidadeNome($tipoEntidadeNome);
    }
    /**
     * Get Descricao 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 getDescricao()
    {
        return isset($this->Descricao) ? $this->Descricao : null;
    }
    /**
     * Set Descricao 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 $descricao
     * @return \TRIBUNALWS\EntidadeOriginadora
     */
    public function setDescricao($descricao = null)
    {
        if (is_null($descricao) || (is_array($descricao) && empty($descricao))) {
            unset($this->Descricao);
        } else {
            $this->Descricao = $descricao;
        }
        return $this;
    }
    /**
     * Get ID value
     * @return int|null
     */
    public function getID()
    {
        return $this->ID;
    }
    /**
     * Set ID value
     * @param int $iD
     * @return \TRIBUNALWS\EntidadeOriginadora
     */
    public function setID($iD = null)
    {
        $this->ID = $iD;
        return $this;
    }
    /**
     * Get Nome 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 getNome()
    {
        return isset($this->Nome) ? $this->Nome : null;
    }
    /**
     * Set Nome 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 $nome
     * @return \TRIBUNALWS\EntidadeOriginadora
     */
    public function setNome($nome = null)
    {
        if (is_null($nome) || (is_array($nome) && empty($nome))) {
            unset($this->Nome);
        } else {
            $this->Nome = $nome;
        }
        return $this;
    }
    /**
     * Get TipoEntidade value
     * @return string|null
     */
    public function getTipoEntidade()
    {
        return $this->TipoEntidade;
    }
    /**
     * Set TipoEntidade value
     * @param string $tipoEntidade
     * @return \TRIBUNALWS\EntidadeOriginadora
     */
    public function setTipoEntidade($tipoEntidade = null)
    {
        $this->TipoEntidade = $tipoEntidade;
        return $this;
    }
    /**
     * Get TipoEntidadeNome 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 getTipoEntidadeNome()
    {
        return isset($this->TipoEntidadeNome) ? $this->TipoEntidadeNome : null;
    }
    /**
     * Set TipoEntidadeNome 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 $tipoEntidadeNome
     * @return \TRIBUNALWS\EntidadeOriginadora
     */
    public function setTipoEntidadeNome($tipoEntidadeNome = null)
    {
        if (is_null($tipoEntidadeNome) || (is_array($tipoEntidadeNome) && empty($tipoEntidadeNome))) {
            unset($this->TipoEntidadeNome);
        } else {
            $this->TipoEntidadeNome = $tipoEntidadeNome;
        }
        return $this;
    }
}
