コード例 #1
0
        private void ProcessarLayoutOI(ChamadaResumo resumo, string line, CultureInfo provider)
        {
            if (line.Substring(0, 1) == "3")
            {
                string   format = "yyyyMMdd";
                DateTime data   = DateTime.ParseExact(line.Substring(89 - 1, 8), format, provider);

                double duracao = Convert.ToDouble(line.Substring(172 - 1, 6)) / 10;
                double valor   = Convert.ToDouble(line.Substring(272 - 1, 13)) / 100;
                string classe  = line.Substring(178 - 1, 3);

                resumo.AdicionarResumo(data, duracao, classe, valor);
            }
        }
コード例 #2
0
        private void ProcessarLayoutIPCorp(ChamadaResumo resumo, string line, CultureInfo provider)
        {
            var columns = line.Split(';');

            if (columns.Length == 20)
            {
                string   format = "yyyy-MM-dd";
                DateTime data   = DateTime.ParseExact(columns[10].Substring(0, 10), format, provider).Date;

                double duracao = TimeSpan.Parse(columns[18].Substring(0, 8)).TotalSeconds / 60;

                double valor  = Convert.ToDouble(columns[19]);
                string classe = columns[17] == "M" ? "VC1" : "LOC";

                resumo.AdicionarResumo(data, duracao, classe, valor);
            }
        }
コード例 #3
0
        public async Task ReadFile(string fileName, bool showDetail = false, Layout layout = Layout.OI)
        {
            Console.Clear();
            int           index         = 1;
            ChamadaResumo resumoChamada = new ChamadaResumo();
            TalkBotResumo resumoTalkBot = new TalkBotResumo();

            await Task.Run(() =>
            {
                var watch = Stopwatch.StartNew();
                Console.WriteLine($"Inicio Processamento v2({Path.GetFileName(fileName)}): {DateTime.Now:dd/MM/yyyy HH:mm:ss}");

                CultureInfo provider = CultureInfo.InvariantCulture;
                string line          = string.Empty;


                string md5    = string.Empty;
                string sha256 = string.Empty;
                Console.WriteLine($"Calculando HASH MD5");
                md5 = GetMd5File(fileName);
                Console.WriteLine($"Calculando HASH SHA256");
                sha256 = GetSHA256File(fileName);

                using (FileStream stream = File.Open(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                    using (BufferedStream buffer = new BufferedStream(stream))
                        using (StreamReader reader = new StreamReader(buffer))
                        {
                            Console.WriteLine($"HASH MD5:{md5}");
                            Console.WriteLine($"HASH SHA256: {sha256}");

                            while ((line = reader.ReadLine()) != null)
                            {
                                Console.Write("");
                                Console.Write($"\rLendo a linha : {index}");
                                switch (layout)
                                {
                                case Layout.Claro:
                                    ProcessarLayoutClaro(resumoChamada, line, provider);
                                    break;

                                case Layout.OI:
                                    ProcessarLayoutOI(resumoChamada, line, provider);
                                    break;

                                case Layout.TALK:
                                    if (index > 2)
                                    {
                                        ProcessarLayoutTalk(resumoChamada, line, provider);
                                    }
                                    break;

                                case Layout.IPCORP:
                                    if (index > 1)
                                    {
                                        ProcessarLayoutIPCorp(resumoChamada, line, provider);
                                    }
                                    break;

                                case Layout.TablkBot:
                                    if (index > 1)
                                    {
                                        ProcessarLayoutTalkBot(resumoTalkBot, line, provider);
                                    }
                                    break;

                                default:
                                    break;
                                }
                                index++;
                            }

                            watch.Stop();
                            NumberFormatInfo culture = new CultureInfo("pt-BR").NumberFormat;
                            Console.WriteLine($"\nFim Processamento: {DateTime.Now:dd/MM/yyyy HH:mm:ss} - {watch.ElapsedMilliseconds / 1000}s");

                            if (layout != Layout.TablkBot)
                            {
                                if (showDetail)
                                {
                                    Console.WriteLine("");
                                    Console.WriteLine($"Quantidade Total:{resumoChamada.items.Sum(e => e.QuantidadeTotal).ToString("n0", culture)}");
                                    Console.WriteLine($"Minutos Total   :{resumoChamada.items.Sum(e => e.MinutosTotal).ToString("n0", culture)}");
                                    Console.WriteLine("");
                                    Console.WriteLine($"{"Data",-15}|{"Quantidade",-15}|{"Minutos",-15}");
                                    foreach (var item in resumoChamada.items.OrderBy(e => e.Data))
                                    {
                                        Console.WriteLine($"{item.Data:dd/MM/yyyy}     {item.QuantidadeTotal.ToString("n0", culture),15} {item.MinutosTotal.ToString("n0", culture),15}");
                                    }
                                    Console.WriteLine("");
                                }

                                Console.WriteLine($"Gerando arquivo de resumo em {Path.GetDirectoryName(fileName)}/resumo-{Path.GetFileNameWithoutExtension(fileName)}.csv");
                                using (StreamWriter sw = new StreamWriter($"{Path.GetDirectoryName(fileName)}/resumo-{Path.GetFileName(fileName)}.csv"))
                                {
                                    sw.WriteLine("ArquivoNome;MD5; SHA256;FornecedorId;Fornecedor Nome; Data; Quantidade Movel; Minutos Movel; Quantidade Fixo; Minutos Fixo;  Quantidade Total; Minutos Total;Tempo Processamento; Operadora");
                                    foreach (var item in resumoChamada.items)
                                    {
                                        sw.WriteLine($"{Path.GetFileName(fileName)};{md5};{sha256};{layout.GetHashCode()};{layout};{item.Data:yyyy-MM-dd};{item.QuantidadeMovel.ToString("n0", culture)};{item.MinutosMovel.ToString("n1", culture)};{item.QuantidadeFixo.ToString("n0", culture)};{item.MinutosFixo.ToString("n1", culture)};{item.QuantidadeTotal.ToString("n0", culture)};{item.MinutosTotal.ToString("n1", culture)};{watch.ElapsedMilliseconds}ms;{item.Operadora}");
                                    }
                                }
                                Console.WriteLine($"Fim do processamento.");
                            }
                            else
                            {
                                if (showDetail)
                                {
                                    Console.WriteLine("");
                                    Console.WriteLine($"Quantidade Total:{resumoTalkBot.items.Sum(e => e.Quantidade).ToString("n0", culture)}");
                                    Console.WriteLine($"Valor Total   :{resumoTalkBot.items.Sum(e => e.ValorTotal).ToString("n0", culture)}");
                                    Console.WriteLine("");
                                    Console.WriteLine($"{"Data",-15}|{"Quantidade",-15}|{"Valor",-15}");
                                    foreach (var item in resumoTalkBot.items.OrderBy(e => e.Data))
                                    {
                                        Console.WriteLine($"{item.Data:dd/MM/yyyy}     {item.Quantidade.ToString("n0", culture),15} {item.ValorTotal.ToString("c2", culture),15}");
                                    }
                                    Console.WriteLine("");
                                }

                                Console.WriteLine($"Gerando arquivo de resumo em {Path.GetDirectoryName(fileName)}/resumo.csv");

                                bool append = File.Exists($"{Path.GetDirectoryName(fileName)}/resumo.csv");

                                using (StreamWriter sw = new StreamWriter($"{Path.GetDirectoryName(fileName)}/resumo.csv", append))
                                {
                                    if (!append)
                                    {
                                        sw.WriteLine("ArquivoNome;MD5; SHA256;Data; Tipo; Risco; Tarifa; Quantidade;  Valor");
                                    }

                                    foreach (var item in resumoTalkBot.items)
                                    {
                                        sw.WriteLine($"{Path.GetFileName(fileName)};{md5};{sha256};{item.Data:yyyy-MM-dd};{item.Tipo};{item.Risco};{item.Tarifa.ToString("n2", culture)};{item.Quantidade.ToString("n0", culture)};{item.ValorTotal.ToString("n2", culture)}");
                                    }
                                }
                                Console.WriteLine($"Fim do processamento.");
                            }
                        }
            });
        }