public async Task <ValidationResult> Handle(RegistrarCidadaoCommand message, CancellationToken cancellationToken) { if (!message.EhValido()) { return(message.ValidationResult); } var cidadao = new Models.Cidadao(message.Id, message.Nome, message.Email, message.Cpf); var cidadaoExistente = await _cidadaoRepository.ObterPorCpf(cidadao.Cpf.Numero); if (cidadaoExistente != null) { AdicionarErro("Este CPF já está em uso."); return(ValidationResult); } _cidadaoRepository.Adicionar(cidadao); cidadao.AdicionarEvento(new CidadaoRegistradoEvent(message.Id, message.Nome, message.Email, message.Cpf)); return(await PersistirDados(_cidadaoRepository.UnitOfWork)); }