<?php

namespace App\ViewModels\Usuario\UsuarioDetailsViewModel;

use App\Utils\Builder;

class UsuarioDetailsViewModelBuilder implements Builder
{
    protected $nome;
    protected $foto;
    protected $tipo;
    protected $telefone_1;
    protected $telefone_2;
    protected $cpf;
    protected $rg;
    protected $data_nascimento;
    protected $genero;
    protected $cep;
    protected $logradouro;
    protected $bairro;
    protected $numero;
    protected $complemento;
    protected $referencias;
    protected $cidade;
    protected $estado;
    protected $permissoes;
    protected $cliente_id;
    protected $medico_id;
    protected $assistente_id;
    protected $paciente_id;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    /**
     * @param mixed $tipo
     * @return UsuarioDetailsViewModelBuilder
     */
    public function setTipo(string $tipo)
    {
        $this->tipo = $tipo;
        return $this;
    }

    /**
     * @param mixed $permissoes
     * @return UsuarioDetailsViewModelBuilder
     */
    public function setPermissoes($permissoes)
    {
        $this->permissoes = $permissoes;
        return $this;
    }

    public function setClienteId($cliente_id)
    {
        $this->cliente_id = $cliente_id;
        return $this;
    }
    public function setMedicoId($medico_id)
    {
        $this->medico_id = $medico_id;
        return $this;
    }
    public function setAssistenteId($assistente_id)
    {
        $this->assistente_id = $assistente_id;
        return $this;
    }
    public function setPacienteId($paciente_id)
    {
        $this->paciente_id = $paciente_id;
        return $this;
    }

    public function build(): UsuarioDetailsViewModel
    {
        $usuarioDetailsVM = new UsuarioDetailsViewModel;
        $usuarioDetailsVM->setnome($this->nome);
        $usuarioDetailsVM->setFoto($this->foto);
        $usuarioDetailsVM->settelefone1($this->telefone_1);
        $usuarioDetailsVM->settelefone2($this->telefone_2);
        $usuarioDetailsVM->setcpf($this->cpf);
        $usuarioDetailsVM->setrg($this->rg);
        $usuarioDetailsVM->setdatanascimento($this->data_nascimento);
        $usuarioDetailsVM->setgenero($this->genero);
        $usuarioDetailsVM->setcep($this->cep);
        $usuarioDetailsVM->setlogradouro($this->logradouro);
        $usuarioDetailsVM->setbairro($this->bairro);
        $usuarioDetailsVM->setnumero($this->numero);
        $usuarioDetailsVM->setcomplemento($this->complemento);
        $usuarioDetailsVM->setreferencias($this->referencias);
        $usuarioDetailsVM->setcidade($this->cidade);
        $usuarioDetailsVM->setestado($this->estado);
        $usuarioDetailsVM->setTipo($this->tipo);
        $usuarioDetailsVM->setPermissoes($this->permissoes);
        $usuarioDetailsVM->setClienteId($this->cliente_id);
        $usuarioDetailsVM->setMedicoId($this->medico_id);
        $usuarioDetailsVM->setAssistenteId($this->assistente_id);
        $usuarioDetailsVM->setPacienteId($this->paciente_id);
        return $usuarioDetailsVM;
    }
}
