<?php namespace App\Entities\PessoaFisica;


use App\Entities\Endereco\Endereco;
use App\Entities\Perfil\Perfil;
use App\Entities\Usuario\Usuario;
use App\Utils\Builder;
use Exception;

class PessoaFisicaBuilder implements Builder
{
    private $id;
    private $id_pessoa;
    private $cpf;
    private $rg;
    private $genero;
    private $data_nascimento;
    private $nome;
    private $profissao;
    private $estado_civil;

    public function setId(int $id): PessoaFisicaBuilder
    {
        $this->id = $id;
        return $this;
    }

    public function setIdPessoa(int $id_pessoa): PessoaFisicaBuilder
    {
        $this->id_pessoa = $id_pessoa;
        return $this;
    }

    public function setCpf(string $cpf): PessoaFisicaBuilder
    {
        $this->cpf = $cpf;
        return $this;
    }

    public function setRg(string $rg): PessoaFisicaBuilder
    {
        $this->rg = $rg;
        return $this;
    }

    public function setGenero(string $genero): PessoaFisicaBuilder
    {
        $this->genero = $genero;
        return $this;
    }

    public function setDataNascimento(string $data_nascimento): PessoaFisicaBuilder
    {
        $this->data_nascimento = $data_nascimento;
        return $this;
    }

    public function setNome(string $nome): PessoaFisicaBuilder
    {
        $this->nome = $nome;
        return $this;
    }

    public function setProfissao(string $profissao): PessoaFisicaBuilder
    {
        $this->profissao = $profissao;
        return $this;
    }

    public function setEstadoCivil(string $estado_civil): PessoaFisicaBuilder
    {
        $this->estado_civil = $estado_civil;
        return $this;
    }

    public function build()
    {
        $pessoa_fisica = new PessoaFisica();
        if (isset($this->id)) {
            $pessoa_fisica->setid($this->id);
        }
        if (isset($this->id_pessoa)) {
            $pessoa_fisica->setIdPessoa($this->id_pessoa);
        }
        if (isset($this->cpf)) {
            $pessoa_fisica->setcpf($this->cpf);
        }
        if (isset($this->rg)) {
            $pessoa_fisica->setrg($this->rg);
        }
        if (isset($this->genero)) {
            $pessoa_fisica->setgenero($this->genero);
        }
        if (isset($this->data_nascimento)) {
            $pessoa_fisica->setdatanascimento($this->data_nascimento);
        }
        if (isset($this->nome)) {
            $pessoa_fisica->setnome($this->nome);
        }
        if (isset($this->profissao)) {
            $pessoa_fisica->setProfissao($this->profissao);
        }
        if (isset($this->estado_civil)) {
            $pessoa_fisica->setEstadoCivil($this->estado_civil);
        }
        return $pessoa_fisica;
    }
}