internal static DadosExtraidos Executar(string nomeCaminhoArquivo)
        {
            var conteudoArquivo = File.ReadAllText(nomeCaminhoArquivo).Split(Environment.NewLine);
            var registro        = new DadosExtraidos();

            foreach (var linhaArquivo in conteudoArquivo)
            {
                var registrosLinha = linhaArquivo.Split(VariaveisDeAmbiente.DelimitadorRegistros);
                switch (registrosLinha[0])
                {
                case TipoRegistroEnum.DadosVendedor:
                    var factoryVendedor = new VendedorFactory(registrosLinha);
                    registro.Vendedores.Add(factoryVendedor.FactoryMethod());
                    break;

                case TipoRegistroEnum.DadosCliente:
                    var factoryCliente = new ClienteFactory(registrosLinha);
                    registro.Clientes.Add(factoryCliente.FactoryMethod());
                    break;

                case TipoRegistroEnum.DadosVenda:
                    var factoryVenda = new VendaFactory(registrosLinha);
                    registro.Vendas.Add(factoryVenda.FactoryMethod());
                    break;
                }
            }

            return(registro);
        }
示例#2
0
        public static DadosAnalisados Executar(DadosExtraidos dadosExtraidos)
        {
            var analise = new DadosAnalisados
            {
                QuantidadeClientes = dadosExtraidos.Clientes.Count,
                QuantidadeVendedor = dadosExtraidos.Vendedores.Count
            };

            var performanceVendedores = dadosExtraidos.Vendas
                                        .GroupBy(x => x.NomeVendedor)
                                        .ToDictionary(
                x => x.Key,
                x => x.Sum(x => x.ItemVenda.Sum(x => x.Preco)))
                                        .OrderBy(x => x.Value)
                                        .ToDictionary(x => x.Key, x => x.Value);

            analise.NomePiorPendedor = performanceVendedores.LastOrDefault().Key;
            analise.IdVendaMaisCara  = dadosExtraidos.Vendas.OrderBy(v => v.ItemVenda.Sum(i => i.Preco)).FirstOrDefault().Id;
            return(analise);
        }