<?php


namespace App\ViewModels\Paciente\PacienteUpdateViewModel;


use App\Utils\Builder;
use App\ViewModels\Paciente\PacienteRegistrationViewModel\PacienteRegistrationViewModel;

class PacienteUpdateViewModelBuilder implements Builder
{
    private $cpf;
    private $rg;
    private $nome;
    private $genero;
    private $data_nascimento;
    private $telefone_1;
    private $telefone_2;
    private $telefone_3;
    private $numero;
    private $complemento;
    private $referencias;
    private $foto;
    private $indicado_por;
    private $alterado_por;
    private $profissao;
    private $estado_civil;
    private $convenio;
    private $observacao;

    private $cep;
    private $logradouro;
    private $bairro;
    private $cidade;
    private $estado;

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

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

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

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

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

    public function setTelefone1(string $telefone_1): PacienteUpdateViewModelBuilder
    {
        $this->telefone_1 = $telefone_1;
        return $this;
    }

    public function setTelefone2(string $telefone_2): PacienteUpdateViewModelBuilder
    {
        $this->telefone_2 = $telefone_2;
        return $this;
    }

    public function setTelefone3(string $telefone_3): PacienteUpdateViewModelBuilder
    {
        $this->telefone_3 = $telefone_3;
        return $this;
    }

    public function setCep(string $cep): PacienteUpdateViewModelBuilder
    {
        $this->cep = $cep;
        return $this;
    }

    public function setNumero(string $numero): PacienteUpdateViewModelBuilder
    {
        $this->numero = $numero;
        return $this;
    }

    public function setComplemento(string $complemento): PacienteUpdateViewModelBuilder
    {
        $this->complemento = $complemento;
        return $this;
    }

    public function setReferencias(string $referencias): PacienteUpdateViewModelBuilder
    {
        $this->referencias = $referencias;
        return $this;
    }

    public function setFoto(string $foto): PacienteUpdateViewModelBuilder
    {
        $this->foto = $foto;
        return $this;
    }

    public function setIndicadoPor(string $indicado_por): PacienteUpdateViewModelBuilder
    {
        $this->indicado_por = $indicado_por;
        return $this;
    }

    public function setAlteradoPor(int $alterado_por) : PacienteUpdateViewModelBuilder
    {
        $this->alterado_por = $alterado_por;
        return $this;
    }

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

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

    public function setConvenio($convenio) : PacienteUpdateViewModelBuilder
    {
        $this->convenio = $convenio;
        return $this;
    }

    public function setObservacao($observacao)
    {
        $this->observacao = $observacao;
        return $this;
    }

    /**
     * @param mixed $logradouro
     * @return PacienteUpdateViewModelBuilder
     */
    public function setLogradouro($logradouro)
    {
        $this->logradouro = $logradouro;
        return $this;
    }

    /**
     * @param mixed $bairro
     * @return PacienteUpdateViewModelBuilder
     */
    public function setBairro($bairro)
    {
        $this->bairro = $bairro;
        return $this;
    }

    /**
     * @param mixed $cidade
     * @return PacienteUpdateViewModelBuilder
     */
    public function setCidade($cidade)
    {
        $this->cidade = $cidade;
        return $this;
    }

    /**
     * @param mixed $estado
     * @return PacienteUpdateViewModelBuilder
     */
    public function setEstado($estado)
    {
        $this->estado = $estado;
        return $this;
    }





    public function build() : PacienteUpdateViewModel
    {
        $paciente_update_vm = new PacienteUpdateViewModel();
        if (isset($this->cpf)) {
            $paciente_update_vm->setcpf($this->cpf);
        }
        if (isset($this->rg)) {
            $paciente_update_vm->setrg($this->rg);
        }
        if (isset($this->nome)) {
            $paciente_update_vm->setnome($this->nome);
        }
        if (isset($this->genero)) {
            $paciente_update_vm->setgenero($this->genero);
        }
        if (isset($this->data_nascimento)) {
            $paciente_update_vm->setdatanascimento($this->data_nascimento);
        }
        if (isset($this->telefone_1)) {
            $paciente_update_vm->settelefone1($this->telefone_1);
        }
        if (isset($this->telefone_2)) {
            $paciente_update_vm->settelefone2($this->telefone_2);
        }
        if (isset($this->telefone_3)) {
            $paciente_update_vm->settelefone3($this->telefone_3);
        }
        if (isset($this->cep)) {
            $paciente_update_vm->setcep($this->cep);
        }
        if (isset($this->numero)) {
            $paciente_update_vm->setnumero($this->numero);
        }
        if (isset($this->complemento)) {
            $paciente_update_vm->setcomplemento($this->complemento);
        }
        if (isset($this->referencias)) {
            $paciente_update_vm->setreferencias($this->referencias);
        }
        if (isset($this->foto)) {
            $paciente_update_vm->setfoto($this->foto);
        }
        if (isset($this->indicado_por)) {
            $paciente_update_vm->setindicadopor($this->indicado_por);
        }
        if (isset($this->alterado_por)) {
            $paciente_update_vm->setindicadopor($this->alterado_por);
        }
        if (isset($this->profissao)) {
            $paciente_update_vm->profissao($this->profissao);
        }
        if (isset($this->estado_civil)) {
            $paciente_update_vm->setindicadopor($this->estado_civil);
        }
        if (isset($this->convenio)) {
            $paciente_update_vm->setConvenio($this->convenio);
        }
        if (isset($this->observacao)) {
            $paciente_update_vm->setObservacao($this->observacao);
        }
        if (isset($this->logradouro)) {
            $paciente_update_vm->setLogradouro($this->logradouro);
        }
        if (isset($this->bairro)) {
            $paciente_update_vm->setBairro($this->bairro);
        }
        if (isset($this->cidade)) {
            $paciente_update_vm->setCidade($this->cidade);
        }
        if (isset($this->estado)) {
            $paciente_update_vm->setEstado($this->estado);
        }
        return $paciente_update_vm;
    }


}