Esempio n. 1
0
        private static int[] ObterDígitoVerificador(int[] cpfSemDigitoVerificador)
        {
            int resultado = 0;

            foreach (var item in cpfSemDigitoVerificador.Reverse()
                     .Select((valor, index) => new { valor, multiplicador = index + 2 }))
            {
                resultado += item.valor * item.multiplicador;
            }

            resultado = resultado % 11;

            if (resultado < 2)
            {
                resultado = 0;
            }
            else
            {
                resultado = 11 - resultado;
            }

            if (cpfSemDigitoVerificador.Length == 9)
            {
                var cpfComUmDigitoVerificador = new int[10];
                Array.Copy(cpfSemDigitoVerificador, cpfComUmDigitoVerificador, 9);
                cpfComUmDigitoVerificador[9] = resultado;
                resultado = (resultado * 10) + ObterDígitoVerificador(cpfComUmDigitoVerificador)[1];
            }

            return(resultado < 10 ? new[] { 0, resultado } : Útil.TransformarIntEmArrayDeInt(resultado));
        }
Esempio n. 2
0
        public static string Gerar(bool formatado)
        {
            var runSemDigitoVerificador = Útil.TransformarIntEmArrayDeInt(Útil.RandomSingle.Next(10000000, 99999999));

            var digitoVerificador = ObterDígitoVerificador(runSemDigitoVerificador);

            var resultado = string.Join("", runSemDigitoVerificador) + digitoVerificador;

            if (formatado)
                resultado = resultado.Insert(2, ".").Insert(6, ".").Insert(10, "-");

            return resultado;
        }
Esempio n. 3
0
        private static int[] GerarDigitosCpfSemDígitoVerificador()
        {
            int[] cpfSemDigitoVerificador;
            bool  TodosOsDigitosSaoIguais;

            do
            {
                // os 8 primeiros dígitos de um cpf são números aleatórios, e o 9ª é o código da região que pode ir de 0 a 9
                cpfSemDigitoVerificador = Útil.TransformarIntEmArrayDeInt(Útil.RandomSingle.Next(100000000, 999999998));
                // Não é permitido em CPF números sequenciais como 111111111, 222222222 [...] 999999999
                TodosOsDigitosSaoIguais = cpfSemDigitoVerificador.Distinct().Count() == 1;
            }while (TodosOsDigitosSaoIguais);

            return(cpfSemDigitoVerificador);
        }
Esempio n. 4
0
        public void TransformarIntEmArrayDeInt_TransformaIntEmArrayDeInt_True(int entrada, string resultadoEmString)
        {
            var array = Útil.TransformarIntEmArrayDeInt(entrada);

            Assert.Equal(string.Join("", array), resultadoEmString);
        }