static void Main(string[] args) { StringBuilder resultado = new StringBuilder(); DateTime horarioInicio = DateTime.Now; resultado.Append(horarioInicio.ToString("hh:mm:ss") + Environment.NewLine); Dados.LerCategorias(); Dados.LerProdutos(); Dados.LerClientes(); Dados.LerVendas(); resultado.Append(OpCodeA.Executar()); resultado.Append(OpCodeB.Executar()); resultado.Append(OpCodeC.Executar()); resultado.Append(OpCodeD.Executar()); resultado.Append(OpCodeE.Executar()); resultado.Append(OpCodeF.Executar()); resultado.Append(OpCodeG.Executar()); resultado.Append(OpCodeH.Executar()); resultado.Append(OpCodeI.Executar()); resultado.Append(OpCodeJ.Executar()); resultado.Append(OpCodeK.Executar()); resultado.Append(OpCodeL.Executar()); resultado.Append(OpCodeM.Executar()); resultado.Append(OpCodeN.Executar()); resultado.Append(OpCodeO.Executar()); resultado.Append(OpCodeP.Executar()); resultado.Append(OpCodeQ.Executar()); if (File.Exists("resultado.txt")) { File.Delete("resultado.txt"); } using (StreamWriter sw = new StreamWriter("resultado.txt", true, Encoding.UTF8, 65536)) { sw.WriteLine(resultado.ToString()); } DateTime horarioTermino = DateTime.Now; File.AppendAllText("resultado.txt", horarioTermino.ToString("hh:mm:ss")); TimeSpan tempoDeProcessamento = horarioTermino.Subtract(horarioInicio); File.AppendAllText("resultado.txt", Environment.NewLine + tempoDeProcessamento); Console.WriteLine("Concluido"); Console.ReadKey(); }
public static void LerVendas() { if (!File.Exists("vendas.txt")) { throw new Exception("Arquivos de cliente não está presente."); } Vendas = new Dictionary <int, Venda>(); foreach (string linha in File.ReadAllLines("vendas.txt")) { string[] conteudo = linha.Split('|'); // Verifica se produto é válido if (!Produtos.ContainsKey(Convert.ToInt32(conteudo[2]))) { continue; } // Verifica se cliente é valido if (!Clientes.ContainsKey(conteudo[1])) { continue; } Produto produtoAtual = Produtos[Convert.ToInt32(conteudo[2])]; string CPF = conteudo[1]; Categoria categoria = produtoAtual.Categoria; #region OpCodeE OpCodeE.VerificaSeProdutoJaFoiVendido(Convert.ToUInt16(conteudo[2])); #endregion #region OpCodeH if (OpCodeH.VendasDeCadaProduto.ContainsKey(produtoAtual)) { OpCodeH.VendasDeCadaProduto[produtoAtual]++; } else { OpCodeH.VendasDeCadaProduto.Add(produtoAtual, 1); } #endregion #region OpCodeI if (OpCodeI.VendasPorCategoria.ContainsKey(categoria)) { OpCodeI.VendasPorCategoria[categoria] += produtoAtual.Preco; } else { OpCodeI.VendasPorCategoria.Add(categoria, produtoAtual.Preco); } #endregion #region OpCodeJ string mesEAno = conteudo[3].Substring(0, 6); if (OpCodeJ.VendasPorMesEAno.ContainsKey(mesEAno)) { OpCodeJ.VendasPorMesEAno[mesEAno] += produtoAtual.Preco; } else { OpCodeJ.VendasPorMesEAno.Add(mesEAno, produtoAtual.Preco); } #endregion #region OpCodeL if (OpCodeK.ClientesEVendas.ContainsKey(CPF)) { OpCodeK.ClientesEVendas[CPF] += produtoAtual.Preco; } else { OpCodeK.ClientesEVendas.Add(CPF, produtoAtual.Preco); } #endregion #region OpCodeK if (OpCodeL.ProdutoEQuantidadeVendida.ContainsKey(produtoAtual.Codigo)) { OpCodeL.ProdutoEQuantidadeVendida[produtoAtual.Codigo]++; } else { OpCodeL.ProdutoEQuantidadeVendida.Add(produtoAtual.Codigo, 1); } #endregion #region OpCodeO if (!OpCodeO.ProdutosJaVendidos.Contains(produtoAtual.Codigo)) { OpCodeO.ProdutosJaVendidos.Add(produtoAtual.Codigo); } #endregion #region OpCodeP if (!OpCodeP.ClienteQueJaCompraram.Contains(CPF)) { OpCodeP.ClienteQueJaCompraram.Add(CPF); } #endregion #region OpCodeQ if (!OpCodeQ.CategoriasQueJaForamVendidas.Contains(categoria.Codigo)) { OpCodeQ.CategoriasQueJaForamVendidas.Add(categoria.Codigo); } #endregion // Caso a venda já tiver sido realizada, adiciona produto na lista da venda if (Vendas.ContainsKey(Convert.ToInt32(conteudo[0]))) { int numeroDaVenda = Convert.ToInt32(conteudo[0]); Vendas[numeroDaVenda].Produtos.Add(produtoAtual); OpCodeN.VerificaSeVendaEMaior(Vendas[numeroDaVenda]); continue; } Venda venda = new Venda(); venda.Codigo = Convert.ToInt32(conteudo[0]); venda.Cliente = Clientes[CPF]; venda.Produtos = new List <Produto>(); venda.Produtos.Add(produtoAtual); venda.DataDaVenda = DateTime.ParseExact(conteudo[3], "yyyyMMddHHmmss", CultureInfo.InvariantCulture); #region OpCodeD OpCodeD.QuantidadeVendasIndividuais++; #endregion #region OpCodeG string nomeDoCliente = Clientes[conteudo[1]].CPF; if (OpCodeG.ComprasPorCliente.ContainsKey(nomeDoCliente)) { OpCodeG.ComprasPorCliente[nomeDoCliente]++; } else { OpCodeG.ComprasPorCliente.Add(nomeDoCliente, 1); } #endregion Vendas.Add(venda.Codigo, venda); OpCodeN.VerificaSeVendaEMaior(Vendas[venda.Codigo]); } }