<?php

final class Seguro_ValueObject_Beneficiario_Endereco
{
    private ?string $bairro;
    private ?string $cep;
    private ?string $complemento;
    private ?string $logradouro;
    private ?string $municipio;
    private ?string $numero;
    private ?string $uf;

    public function __construct(
        ?string $bairro,
        ?string $cep,
        ?string $complemento,
        ?string $logradouro,
        ?string $municipio,
        ?string $numero,
        ?string $uf
    )
    {
        $this->bairro = $bairro;
        $this->cep = $cep;
        $this->complemento = $complemento;
        $this->logradouro = $logradouro;
        $this->municipio = $municipio;
        $this->numero = $numero;
        $this->uf = $uf;
    }

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

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

    public function getMunicipio(): ?string
    {
        return $this->municipio;
    }

    public function getUf(): ?string
    {
        return $this->uf;
    }

    public function getEnderecoComNumeroComplemento(): ?string
    {
        if (empty($this->logradouro)) {
            return '';
        }

        $endereco = $this->logradouro;

        if (!empty($this->numero)) {
            $endereco .= ", {$this->numero}";
        }

        if (!empty($this->complemento)) {
            $endereco .= "/{$this->complemento}";
        }

        return $endereco;
    }

    public function getMunicipioUf(): ?string
    {
        return !empty($this->municipio) ? "{$this->municipio}/{$this->uf}" : '';
    }
}