public VendaAtrasada(VendaAgrupada item) { this.Nome = item.Nome; this.Identificacao = item.Identificacao; this.TipoPessoa = item.TipoPessoa; this.Sexo = item.Sexo; this.TicketMedio = item.TicketMedio; this.UltimaVenda = item.UltimaVenda; this.Veiculo = item.Veiculo; this.Ano = item.Ano; this.Placa = item.Placa; this.Km = item.Km; this.FaixaAno = item.FaixaAno; this.FaixaTicketMedio = item.FaixaTicketMedio; }
//[TestMethod] //public void InserirVendasGarantia_Ok() //{ // var sqlSelect = @"SELECT [Nome] // ,[Identificacao] // ,[TipoPessoa] // ,[Sexo] // ,[TicketMedio] // ,[UltimaVenda] // ,[ValorTotalAgrupado] // ,[DataVenda] // ,[IdNFAgrupado] // ,[Veiculo] // ,[Ano] // ,[Placa] // ,[Km] // ,[FaixaAno] // ,[FaixaTicketMedio] // ,[TipoServico] // ,[NomeServico] // ,[Funcionario] // ,[ValorTotalServico] // ,[ValorTotalPecas] // FROM // [dbo].[VendasAgrupadas]"; // var vendasAgrupadas = _db.Query<VendaAgrupada>(sqlSelect).ToList(); // Dictionary<long, Cliente> dicVendas = new Dictionary<long, Cliente>(); // List<VendaAtrasada> vendasAtrasadas = new List<VendaAtrasada>(); // foreach (VendaAgrupada venda in vendasAgrupadas) // { // if (dicVendas.ContainsKey(venda.Identificacao)) // dicVendas[venda.Identificacao].ListaVendas.Add(venda); // else // { // Cliente cliente = new Cliente // { // FaixaTicketMedio = venda.FaixaTicketMedio, // Indentificacao = venda.Identificacao, // Nome = venda.Nome, // Sexo = venda.Sexo, // TicketMedio = venda.TicketMedio, // TipoPessoa = venda.TipoPessoa, // UltimaVenda = venda.UltimaVenda // }; // dicVendas.Add(venda.Identificacao, cliente); // dicVendas[cliente.Indentificacao].ListaVendas.Add(venda); // } // } // foreach (Cliente cliente in dicVendas.Values) // { // DateTime vendaAnterior = cliente.ListaVendas[0].DataVenda; // bool isFirst = true; // foreach (VendaAgrupada venda in cliente.ListaVendas) // { // int dias = (venda.DataVenda - vendaAnterior).Days; // if (dias < 7 && !isFirst) // vendasAtrasadas.Add(new VendaAtrasada(venda)); // isFirst = false; // } // } // var sqlInsert = @"INSERT INTO[dbo].[VendasAtrasadas] // ([Nome] // ,[Identificacao] // ,[UltimaVenda] // ,[TicketMedio] // ,[TipoPessoa] // ,[Sexo] // ,[Veiculo] // ,[Placa] // ,[Ano] // ,[Km] // ,[FaixaAno] // ,[FaixaTicketMedio]) // VALUES // (@Nome // ,@Identificacao // ,@UltimaVenda // ,@TicketMedio // ,@TipoPessoa // ,@Sexo // ,@Veiculo // ,@Placa // ,@Ano // ,@Km // ,@FaixaAno // ,@FaixaTicketMedio)"; // using (var connection = new SqlConnection(CONNECTION_STRING)) // { // var affectedRows = connection.Execute(sqlInsert, vendasAtrasadas); // Console.WriteLine($"Affected Rows: {affectedRows}"); // } //} private List <VendaAgrupada> AgruparVendas(IEnumerable <VendaSeparada> vendasSeparadas) { var vendasAgrupadas = new Dictionary <IdentificacaoVenda, VendaAgrupada>(); foreach (var item in vendasSeparadas) { var id = new IdentificacaoVenda { DataVenda = item.DataVenda, CPF_CNPJ = item.Identificacao }; if (!vendasAgrupadas.ContainsKey(id)) { VendaAgrupada vendaAgrupada = new VendaAgrupada(); vendaAgrupada.Nome = item.Nome; vendaAgrupada.Identificacao = item.Identificacao; vendaAgrupada.TipoPessoa = item.TipoPessoa; vendaAgrupada.Sexo = item.Sexo; vendaAgrupada.Telefone = item.Telefone; vendaAgrupada.TicketMedio = item.TicketMedio; vendaAgrupada.UltimaVenda = item.UltimaVenda; vendaAgrupada.DataVenda = item.DataVenda; vendaAgrupada.DataVendaAno = item.DataVenda.Year; vendaAgrupada.DataVendaMes = item.DataVenda.Month; vendaAgrupada.DataVendaDia = item.DataVenda.Day; vendaAgrupada.Veiculo = item.Veiculo; vendaAgrupada.Ano = item.Ano; vendaAgrupada.Placa = item.Placa; vendaAgrupada.Km = item.Km; vendaAgrupada.FaixaAno = item.FaixaAno; vendaAgrupada.FaixaTicketMedio = item.FaixaTicketMedio; if (String.IsNullOrEmpty(item.TipoServico) == false) { vendaAgrupada.TipoServico = item.TipoServico; } if (String.IsNullOrEmpty(item.NomeServico) == false) { vendaAgrupada.NomeServico = item.NomeServico; } if (item.ValorTotalServico > 0) { vendaAgrupada.ValorTotalServico = item.ValorTotalServico; } if (item.ValorItens > 0) { vendaAgrupada.ValorTotalPecas = item.ValorItens; } if (String.IsNullOrEmpty(item.Funcionario) == false) { vendaAgrupada.Funcionario = item.Funcionario; } if (String.IsNullOrEmpty(item.FormaPagto) == false) { vendaAgrupada.FormaPagto = item.FormaPagto; } if (String.IsNullOrEmpty(item.CondPagto) == false) { vendaAgrupada.CondPagto = item.CondPagto; } vendaAgrupada.AdicionarValorTotal(item.ValorTotal); vendaAgrupada.AdicionarIdNF(item.IdNF); vendasAgrupadas.Add(id, vendaAgrupada); } else { var vendaAgrupada = vendasAgrupadas[id]; vendaAgrupada.AdicionarValorTotal(item.ValorTotal); vendaAgrupada.AdicionarIdNF(item.IdNF); if (String.IsNullOrEmpty(item.TipoServico) == false) { vendaAgrupada.TipoServico = item.TipoServico; } if (String.IsNullOrEmpty(item.NomeServico) == false) { vendaAgrupada.NomeServico = item.NomeServico; } if (item.ValorTotalServico > 0) { vendaAgrupada.ValorTotalServico = item.ValorTotalServico; } if (item.ValorItens > 0) { vendaAgrupada.ValorTotalPecas = item.ValorItens; } if (String.IsNullOrEmpty(item.Funcionario) == false) { vendaAgrupada.Funcionario = item.Funcionario; } if (String.IsNullOrEmpty(item.FormaPagto) == false) { vendaAgrupada.FormaPagto = item.FormaPagto; } if (String.IsNullOrEmpty(item.CondPagto) == false) { vendaAgrupada.CondPagto = item.CondPagto; } } } foreach (IdentificacaoVenda identificacao in vendasAgrupadas.Keys) { List <KeyValuePair <IdentificacaoVenda, VendaAgrupada> > vendas = vendasAgrupadas.Where(x => x.Key.CPF_CNPJ == identificacao.CPF_CNPJ).ToList(); decimal valorTotal = 0; DateTime ultimaVenda = DateTime.MinValue; foreach (KeyValuePair <IdentificacaoVenda, VendaAgrupada> venda in vendas) { valorTotal = valorTotal + venda.Value.ValorTotalAgrupado; if (ultimaVenda < venda.Key.DataVenda) { ultimaVenda = venda.Key.DataVenda; } } vendasAgrupadas[identificacao].TicketMedio = valorTotal / vendas.Count; vendasAgrupadas[identificacao].ClassificarTicketMedio(); vendasAgrupadas[identificacao].UltimaVenda = ultimaVenda; } return(vendasAgrupadas.Values.OrderBy(x => x.DataVenda).ToList()); }