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();
        }
예제 #2
0
        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]);
            }
        }