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.