<?php

namespace App\ViewModels\ProfissionalDetalhesViewModel;

use App\Entities\Pessoa\Pessoa;

class ProfissionalDetalhesViewModel
{
    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 static function builder () : ProfissionalDetalhesViewModelBuilder {
        return new ProfissionalDetalhesViewModelBuilder();
    }

    public function getPessoa() : Pessoa {

    }

    public function getId() : int
    {
        return $this->id;
    }

    public function getNome() : string
    {
        return $this->nome;
    }

    public function getCpf() : string
    {
        return $this->cpf;
    }

    public function getEmail() : string
    {
        return $this->email;
    }

    public function getTelefone1() : string
    {
        return $this->telefone_1;
    }

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

    public function getDataNascimento() : string
    {
        return $this->data_nascimento;
    }

    public function getGenero() : string
    {
        return $this->genero;
    }

    public function getCep() : string
    {
        return $this->cep;
    }

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

    public function getNumero() : string
    {
        return $this->numero;
    }

    public function getReferencias() : string
    {
        return $this->referencias;
    }

    public function getBairro() : string
    {
        return $this->bairro;
    }

    public function getCidade() : string
    {
        return $this->cidade;
    }

    public function getEstado() : string
    {
        return $this->estado;
    }

    public function getLogradouro() : string
    {
        return $this->logradouro;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    public function toArray () : array {
        return [
            'id' => $this->id,
            'nome' => $this->nome,
            'cpf' => $this->cpf,
            'email' => $this->email,
            'telefone_1' => $this->telefone_1,
            'telefone_2' => $this->telefone_2,
            'data_nascimento' => $this->data_nascimento,
            'genero' => $this->genero,
            'cep' => $this->cep,
            'complemento' => $this->complemento,
            'numero' => $this->numero,
            'referencias' => $this->referencias,
            'bairro' => $this->bairro,
            'cidade' => $this->cidade,
            'estado' => $this->estado,
            'logradouro' => $this->logradouro,
        ];
    }
}
