public void ValidarAlterarUsuario(Usuario usuario)
        {
            var violacaoDeRegras = new RegrasDeNegocioException<Usuario>();

            bool emailJaExiste = ctx.Usuarios.Any(u => u.Email == usuario.Email && u.Id != usuario.Id);

            if (emailJaExiste)
                violacaoDeRegras.AdicionarErro(u => u.Email, "E-mail já existe");

            ValidaCamposObrigatorios(usuario, violacaoDeRegras);

            if (violacaoDeRegras.Erros.Any())
            {
                throw violacaoDeRegras;
            }
        }
        private static void ValidaCamposObrigatorios(Usuario novoUsuario, RegrasDeNegocioException<Usuario> violacaoDeRegras)
        {
            if (String.IsNullOrEmpty(novoUsuario.Nome))
            {
                violacaoDeRegras.AdicionarErro(x => x.Nome, "Nome do usuário é obrigatorio");
            }

            if (String.IsNullOrEmpty(novoUsuario.Senha))
            {
                violacaoDeRegras.AdicionarErro(x => x.Nome, "Senha do usuário é obrigatoria");
            }

            if (String.IsNullOrEmpty(novoUsuario.Email))
            {
                violacaoDeRegras.AdicionarErro(x => x.Nome, "Email do usuário é obrigatorio");
            }

            if (violacaoDeRegras.Erros.Any())
            {
                throw violacaoDeRegras;
            }
        }
        private void ValidarNovoUsuario(Usuario novoUsuario)
        {
            var violacaoDeRegras = new RegrasDeNegocioException<Usuario>();

            ValidaCamposObrigatorios(novoUsuario, violacaoDeRegras);

            ValidaOutraRegras(novoUsuario, violacaoDeRegras);
        }
        private void ValidaOutraRegras(Usuario novoUsuario, RegrasDeNegocioException<Usuario> violacaoDeRegras)
        {
            if (EmailJaExiste(novoUsuario.Email))
            {
                violacaoDeRegras.AdicionarErro(x => x.Email, "Email já existe no cadastro");
            }

            if (!EmailValido(novoUsuario.Email))
            {
                violacaoDeRegras.AdicionarErro(x => x.Email, "Email inválido");
            }

            if (violacaoDeRegras.Erros.Any())
            {
                throw violacaoDeRegras;
            }
        }