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