<?php

namespace App\ViewModels\ProfissionalDetalhesViewModel;

use App\Utils\Builder;

class ProfissionalDetalhesViewModelBuilder implements Builder
{
    private $id;
    private $nome;
    private $cpf;
    private $email;
    private $telefone_1;
    private $telefone_2;
    private $data_nascimento;
    private $genero;
    private $cep;
    private $complemento;
    private $numero;
    private $referencias;
    private $bairro;
    private $cidade;
    private $estado;
    private $logradouro;

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

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

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

    public function setEmail(string $email): ProfissionalDetalhesViewModelBuilder
    {
        $this->email = $email;
        return $this;
    }

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

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

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

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

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

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

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

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

    public function setBairro(string $bairro): ProfissionalDetalhesViewModelBuilder
    {
        $this->bairro = $bairro;
        return $this;
    }

    public function setCidade(string $cidade): ProfissionalDetalhesViewModelBuilder
    {
        $this->cidade = $cidade;
        return $this;
    }

    public function setEstado(string $estado): ProfissionalDetalhesViewModelBuilder
    {
        $this->estado = $estado;
        return $this;
    }

    public function setLogradouro(string $logradouro): ProfissionalDetalhesViewModelBuilder
    {
        $this->logradouro = $logradouro;
        return $this;
    }

    public function build () : ProfissionalDetalhesViewModel {
        $profissional_detalhes_view_model = new ProfissionalDetalhesViewModel();
        if (isset($this->id)) {
            $profissional_detalhes_view_model->setid($this->id);
        }
        if (isset($this->nome)) {
            $profissional_detalhes_view_model->setnome($this->nome);
        }
        if (isset($this->cpf)) {
            $profissional_detalhes_view_model->setcpf($this->cpf);
        }
        if (isset($this->email)) {
            $profissional_detalhes_view_model->setemail($this->email);
        }
        if (isset($this->telefone_1)) {
            $profissional_detalhes_view_model->settelefone1($this->telefone_1);
        }
        if (isset($this->telefone_2)) {
            $profissional_detalhes_view_model->settelefone2($this->telefone_2);
        }
        if (isset($this->data_nascimento)) {
            $profissional_detalhes_view_model->setdatanascimento($this->data_nascimento);
        }
        if (isset($this->genero)) {
            $profissional_detalhes_view_model->setgenero($this->genero);
        }
        if (isset($this->cep)) {
            $profissional_detalhes_view_model->setcep($this->cep);
        }
        if (isset($this->complemento)) {
            $profissional_detalhes_view_model->setcomplemento($this->complemento);
        }
        if (isset($this->numero)) {
            $profissional_detalhes_view_model->setnumero($this->numero);
        }
        if (isset($this->referencias)) {
            $profissional_detalhes_view_model->setreferencias($this->referencias);
        }
        if (isset($this->bairro)) {
            $profissional_detalhes_view_model->setbairro($this->bairro);
        }
        if (isset($this->cidade)) {
            $profissional_detalhes_view_model->setcidade($this->cidade);
        }
        if (isset($this->estado)) {
            $profissional_detalhes_view_model->setestado($this->estado);
        }
        if (isset($this->logradouro)) {
            $profissional_detalhes_view_model->setlogradouro($this->logradouro);
        }
        return $profissional_detalhes_view_model;
    }
}
