<?php

namespace App\ViewModels\Usuario\UsuarioUpdateViewModel;

use App\Utils\Builder;

class UsuarioUpdateViewModelBuilder implements Builder
{
    protected $nome;
    protected $telefone_1;
    protected $telefone_2;
    protected $cpf;
    protected $rg;
    protected $data_nascimento;
    protected $genero;
    protected $cep;
    protected $numero;
    protected $complemento;
    protected $referencia;
    protected $foto;


    /**
     * @param string|null $nome
     * @return UsuarioUpdateViewModelBuilder
     */
    public function setNome(?string $nome): UsuarioUpdateViewModelBuilder
    {
        $this->nome = $nome;
        return $this;
    }

    /**
     * @param string $telefone_1
     * @return UsuarioUpdateViewModelBuilder
     */
    public function setTelefone1(?string $telefone_1): UsuarioUpdateViewModelBuilder
    {
        $this->telefone_1 = $telefone_1;
        return $this;
    }

    /**
     * @param string $telefone_2
     * @return UsuarioUpdateViewModelBuilder
     */
    public function setTelefone2(?string $telefone_2): UsuarioUpdateViewModelBuilder
    {
        $this->telefone_2 = $telefone_2;
        return $this;
    }

    /**
     * @param string $cpf
     * @return UsuarioUpdateViewModelBuilder
     */
    public function setCpf(?string $cpf): UsuarioUpdateViewModelBuilder
    {
        $this->cpf = $cpf;
        return $this;
    }

    /**
     * @param string $rg
     * @return UsuarioUpdateViewModelBuilder
     */
    public function setRg(?string $rg): UsuarioUpdateViewModelBuilder
    {
        $this->rg = $rg;
        return $this;
    }

    /**
     * @param string $data_nascimento
     * @return UsuarioUpdateViewModelBuilder
     */
    public function setDataNascimento(?string $data_nascimento): UsuarioUpdateViewModelBuilder
    {
        $this->data_nascimento = $data_nascimento;
        return $this;
    }

    /**
     * @param string $genero
     * @return UsuarioUpdateViewModelBuilder
     */
    public function setGenero(?string $genero): UsuarioUpdateViewModelBuilder
    {
        $this->genero = $genero;
        return $this;
    }

    /**
     * @param string $cep
     * @return UsuarioUpdateViewModelBuilder
     */
    public function setCep(?string $cep): UsuarioUpdateViewModelBuilder
    {
        $this->cep = $cep;
        return $this;
    }

    /**
     * @param string $numero
     * @return UsuarioUpdateViewModelBuilder
     */
    public function setNumero(?string $numero): UsuarioUpdateViewModelBuilder
    {
        $this->numero = $numero;
        return $this;
    }

    /**
     * @param string $complemento
     * @return UsuarioUpdateViewModelBuilder
     */
    public function setComplemento(?string $complemento): UsuarioUpdateViewModelBuilder
    {
        $this->complemento = $complemento;
        return $this;
    }

    /**
     * @param string $referencia
     * @return UsuarioUpdateViewModelBuilder
     */
    public function setReferencia(?string $referencia): UsuarioUpdateViewModelBuilder
    {
        $this->referencia = $referencia;
        return $this;
    }

    /**
     * @return mixed
     */
    public function getFoto()
    {
        return $this->foto;
    }

    /**
     * @param mixed $foto
     */
    public function setFoto($foto): void
    {
        $this->foto = $foto;
    }



    public function build(): UsuarioUpdateViewModel
    {
        $usuarioUpdateVM = new UsuarioUpdateViewModel();
        $usuarioUpdateVM->setnome($this->nome);
        $usuarioUpdateVM->setTelefone1($this->telefone_1);
        $usuarioUpdateVM->settelefone2($this->telefone_2);
        $usuarioUpdateVM->setcpf($this->cpf);
        $usuarioUpdateVM->setrg($this->rg);
        $usuarioUpdateVM->setdatanascimento($this->data_nascimento);
        $usuarioUpdateVM->setgenero($this->genero);
        $usuarioUpdateVM->setcep($this->cep);
        $usuarioUpdateVM->setnumero($this->numero);
        $usuarioUpdateVM->setcomplemento($this->complemento);
        $usuarioUpdateVM->setreferencia($this->referencia);
        $usuarioUpdateVM->setFoto($this->foto);
        return $usuarioUpdateVM;
    }
}