public override async Task <bool> IsSatisfiedBy(Usuario candidate)
        {
            /*escrita padrão pra esse método*/
            candidate.StateEntityBase = StateEntityBaseEnum.Inclusao;
            /*somatoria das regras desse módulo mais associados*/
            var Satisfied = await base.IsSatisfiedBy(candidate);

            //não satisfez retorna
            if (!Satisfied)
            {
                return(Satisfied);
            }


            var usuarioCpf = await _usuarioRepository.ObterUsuarioCPF(candidate.CPF);

            if (usuarioCpf != null)
            {
                var res = Res.ObterResourceMessageClass(Resources.Enuns.ModulosEnum.Usuario, Resources.Enuns.ResourceValueEnum.UsuarioCPFExistente);
                res.Mensagem = string.Format(res.Mensagem, candidate.CPF,
                                             usuarioCpf.Ativo ? null :
                                             Res.ObterResourceMessage(Resources.Enuns.ModulosEnum.Usuario, Resources.Enuns.ResourceValueEnum.UsuarioInativo));

                _notificacoes.Add(new Erro(res));
            }
            var userEmail = await _usuarioRepository.ObterUsuarioEmail(candidate.Email);

            if (userEmail != null)
            {
                var res = Res.ObterResourceMessageClass(Resources.Enuns.ModulosEnum.Usuario, Resources.Enuns.ResourceValueEnum.UsuarioEmailExistente);
                res.Mensagem = string.Format(res.Mensagem, candidate.Email,
                                             userEmail.Ativo ? null :
                                             Res.ObterResourceMessage(Resources.Enuns.ModulosEnum.Usuario, Resources.Enuns.ResourceValueEnum.UsuarioInativo));
                _notificacoes.Add(new Erro(res));
            }
            /*adicionar e não salvar*/
            if (_notificacoes.TemErros)
            {
                return(false);
            }

            candidate.CPF = candidate.CPF.SomenteNumeros();
            await _usuarioRepository.AdicionarNoSave(candidate);

            return(true);
        }