<?php
class Endereco{
	private $idEndereco;
	private $CEP;
	private $Logradouro;
	private $Numero;
	private $Bairro;
	private $Cidade;
	private $UF;
	private $Complemento;
        
        private $Auditoria;
	
	public function __construct($idEndereco 	= "",
                                    $CEP                = "",
                                    $Logradouro 	= "",
                                    $Numero 		= "",
                                    $Bairro 		= "",
                                    $Cidade 		= "",
                                    $UF 		= "",
                                    $Complemento 	= ""){
		
		$this->idEndereco 	= $idEndereco;
		$this->CEP              = $CEP;
		$this->Logradouro 	= $Logradouro;
		$this->Numero 		= $Numero;
		$this->Bairro 		= $Bairro;
		$this->Cidade 		= $Cidade;
		$this->UF 		= $UF;
		$this->Complemento 	= $Complemento;
	}
	
	public function getIdEndereco(){
		return $this->idEndereco;
	}
	
	public function getCEP(){
		return $this->CEP;
	}
	public function setCEP($novoCEP, $validar = false){
                if($validar){
                    if(self::validaCep($novoCEP)) $this->CEP = $novoCEP;
                }else{
                    $this->CEP = $novoCEP;
                } 
	}
	
	public function getLogradouro(){
		return $this->Logradouro;
	}
	public function setLogradouro($novoLog){
		$this->Logradouro = $novoLog;
	}
	
	public function getNumero(){
		return $this->Numero;
	}
	public function setNumero($novoNumero){
		$this->Numero = $novoNumero;
	}
	
	public function getBairro(){
		return $this->Bairro;
	}
	public function setBairro($novoBairro){
		$this->Bairro = $novoBairro;
	}
	
	public function getCidade(){
		return $this->Cidade;
	}
	public function setCidade($novaCidade){
		$this->Cidade = $novaCidade;
	}
	
	public function getUF($forma = false){
                if($forma){
                    $estados = self::Estados();
                    $retorno = $estados[$this->UF];
                }else{
                    $retorno = $this->UF;
                }
		return $retorno;
	}
	public function setUF($novaUF){
		$this->UF = $novaUF;
	}
	
	public function getComplemento(){
		return $this->Complemento;
	}
	public function setComplemento($novoComplemento){
		$this->Complemento = $novoComplemento;
	}
	
	private function validaCep($cep){
 		if (!preg_match("/^[0-9]{5}-[0-9]{3}$/", $cep)) return false; else return true; 
	}
        
        public function Estados(){
            $estados =    array("AC"=>"Acre", 
                                "AL"=>"Alagoas", 
                                "AM"=>"Amazonas", 
                                "AP"=>"Amapá",
                                "BA"=>"Bahia",
                                "CE"=>"Ceará",
                                "DF"=>"Distrito Federal",
                                "ES"=>"Espírito Santo",
                                "GO"=>"Goiás",
                                "MA"=>"Maranhão",
                                "MT"=>"Mato Grosso",
                                "MS"=>"Mato Grosso do Sul",
                                "MG"=>"Minas Gerais",
                                "PA"=>"Pará",
                                "PB"=>"Paraíba",
                                "PR"=>"Paraná",
                                "PE"=>"Pernambuco",
                                "PI"=>"Piauí",
                                "RJ"=>"Rio de Janeiro",
                                "RN"=>"Rio Grande do Norte",
                                "RO"=>"Rondônia",
                                "RS"=>"Rio Grande do Sul",
                                "RR"=>"Roraima",
                                "SC"=>"Santa Catarina",
                                "SE"=>"Sergipe",
                                "SP"=>"São Paulo",
                                "TO"=>"Tocantins");
            
            return $estados;
        } 
        
        /* Auditoria */
        
        public function getAuditoria(){
            return $this->Auditoria;
        }
        
        public function setAuditoria(Auditoria $objAuditoria){
            $this->Auditoria = $objAuditoria;
        }
	
}
