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));
        }