Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Desafio proposto

Fala mestre, beleza?

Em relação ao desafio de criar um caso de uso para adicionar telefones separadamente gostaria de saber se a minha solução é válida. Queria saber também se o command handler é o padrão para ser seguidos todos casos de uso, por ex: DTO + handler onde o método executa recebe sempre um parâmetro sendo ele o DTO.

Se tiver algum erro ou detalhe faltando no código abaixo desconsidere por que criei o código aqui na própria pergunta, é só para saber se a estrutura e fluxo está correto seguindo os princípios da arquitetura limpa.

class TelefoneDTO
{
    public string $cpf;
    public string $ddd;
    public string $numero;

    public function __construct(string $cpf, string $ddd, string $numero)
    {
        $this->cpf = $cpf;
        $this->ddd = $ddd;
        $this->numero = $numero;
    }

}
class AdicionaTelefoneNaMatriculaAluno
{
    private RepositorioDeEstudante $repositorio;

    public function __construct(RepositoriodeEstudante $repositorio)
    {
        $this->repositorio = $repositorio;
    }

    public function executa(TelefoneDTO $telefone): void
    {

                $cpf = new Cpf($telefone->cpf);
                $aluno = $this->repositorio->encontraPeloCpf($cpf);
                $aluno->adicionaTelefone($telefone->ddd, $telefone->numero);
                $this->repositorio->atualiza($aluno);

    }
}

A minha dúvida maior é se devo por os dados do cpf no DTO de telefone ou se devo seguir de outra forma, por que de uma forma ou de outra precisarei de uma maneira para identificar a qual aluno o telefone deve pertencer.

2 respostas
solução!

Diego, sua solução é perfeitamente válida.

Algo muito comum é nomear os DTOs baseado na ação desejada também, além do use case. Exemplo:

  • AdicionarTelefoneDTO e AdicionarTelefone
  • AdicionarTelefoneCommand e AdicionarTelefoneHandler

Assim pareceria menos "estranho" ter o CPF no TelefoneDTO.

Mas tirando esse detalhe, tá certinho. :-D

Assim pareceria menos "estranho" ter o CPF no TelefoneDTO.

Perfeito, foi a sensação que tive. Valeu mestre.