protected void btn_GerarGrafico_Click(object sender, EventArgs e) { if (validacaoDatas()) { gerarGrafico = true; switch (select_Grafico.SelectedValue) { case "despesaReceita": try { DateTime dtIncio = DateTime.Parse(txt_DataInicio.Text); DateTime dtFim = DateTime.Parse(txt_DataFim.Text); dtFim = dtFim.AddHours(23).AddMinutes(59).AddSeconds(59).AddMilliseconds(59); List <DataPointArea> dataPoints1 = new List <DataPointArea>(); List <DataPointArea> dataPoints2 = new List <DataPointArea>(); //dataPoints1.Add(new DataPointArea(data, valor)); using (DatabaseEntities context = new DatabaseEntities()) { //Receita List <Orcamento> orcamentosTemp = context.Orcamento.Where(o => o.cnpjOficina.Equals(f.cnpjOficina) && o.status.ToLower().Equals("concluído")).ToList(); List <KeyValuePair <Orcamento, DateTime> > orcamentosConcluidos = new List <KeyValuePair <Orcamento, DateTime> >(); LogOrcamento log; foreach (Orcamento orcamento in orcamentosTemp) { log = context.LogOrcamento.Where(l => l.alteracao.ToLower().Equals("concluído") && l.dataAlteracao >= dtIncio && l.dataAlteracao <= dtFim && l.idOrcamento == orcamento.idOrcamento).FirstOrDefault(); if (log != null) { orcamentosConcluidos.Add(new KeyValuePair <Orcamento, DateTime>(orcamento, log.dataAlteracao)); } } orcamentosConcluidos = orcamentosConcluidos.OrderBy(o => o.Value).ToList(); String ex; DataPointArea dtp1, dtp2; double mili; long ticks; DateTime dt; dt = dtIncio; ticks = new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks; dt = new DateTime(ticks); while (true) { mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; dtp1 = new DataPointArea(mili, 0); dtp2 = new DataPointArea(mili, 0); dataPoints1.Add(dtp1); dataPoints2.Add(dtp2); if (dt.Year == dtFim.Year && dt.Month == dtFim.Month) { break; } else { dt = dt.AddMonths(1); } } foreach (KeyValuePair <Orcamento, DateTime> oConcluido in orcamentosConcluidos) { dt = oConcluido.Value; ticks = new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks; dt = new DateTime(ticks); mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; foreach (DataPointArea dtpArea in dataPoints1) { if (dtpArea.X == mili) { dtpArea.Y += oConcluido.Key.valor; break; } } } //Despesa List <Compra> listaCompra = context.Compra.Where(c => c.cnpjOficina.Equals(f.cnpjOficina) && c.data >= dtIncio && c.data <= dtFim).ToList(); listaCompra = listaCompra.OrderBy(c => c.data).ToList(); foreach (Compra compra in listaCompra) { dt = compra.data; ticks = new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks; dt = new DateTime(ticks); mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; foreach (DataPointArea dtpArea in dataPoints2) { if (dtpArea.X == mili) { dtpArea.Y += totalCompra(compra); break; } } } } jsonGrafico = JsonConvert.SerializeObject(dataPoints1); jsonGrafico2 = JsonConvert.SerializeObject(dataPoints2); } catch (Exception ex) { pnl_Alert.CssClass = "alert alert-danger mt-3"; lbl_Alert.Text = "Erro: " + ex.Message + Environment.NewLine + "Por favor entre em contato com o suporte"; pnl_Alert.Visible = true; } break; case "lucroBruto": try { DateTime dtIncio = DateTime.Parse(txt_DataInicio.Text); DateTime dtFim = DateTime.Parse(txt_DataFim.Text); dtFim = dtFim.AddHours(23).AddMinutes(59).AddSeconds(59).AddMilliseconds(59); List <DataPointArea> dataPoints1 = new List <DataPointArea>(); //dataPoints1.Add(new DataPointArea(data, valor)); using (DatabaseEntities context = new DatabaseEntities()) { //Receita List <Orcamento> orcamentosTemp = context.Orcamento.Where(o => o.cnpjOficina.Equals(f.cnpjOficina) && o.status.ToLower().Equals("concluído")).ToList(); List <KeyValuePair <Orcamento, DateTime> > orcamentosConcluidos = new List <KeyValuePair <Orcamento, DateTime> >(); LogOrcamento log; foreach (Orcamento orcamento in orcamentosTemp) { log = context.LogOrcamento.Where(l => l.alteracao.ToLower().Equals("concluído") && l.dataAlteracao >= dtIncio && l.dataAlteracao <= dtFim && l.idOrcamento == orcamento.idOrcamento).FirstOrDefault(); if (log != null) { orcamentosConcluidos.Add(new KeyValuePair <Orcamento, DateTime>(orcamento, log.dataAlteracao)); } } orcamentosConcluidos = orcamentosConcluidos.OrderBy(o => o.Value).ToList(); DataPointArea dtp1; double mili; long ticks; DateTime dt; dt = dtIncio; ticks = new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks; dt = new DateTime(ticks); while (true) { mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; dtp1 = new DataPointArea(mili, 0); dataPoints1.Add(dtp1); if (dt.Year == dtFim.Year && dt.Month == dtFim.Month) { break; } else { dt = dt.AddMonths(1); } } foreach (KeyValuePair <Orcamento, DateTime> oConcluido in orcamentosConcluidos) { dt = oConcluido.Value; ticks = new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks; dt = new DateTime(ticks); mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; foreach (DataPointArea dtpArea in dataPoints1) { if (dtpArea.X == mili) { dtpArea.Y += oConcluido.Key.valor; break; } } } //Despesa List <Compra> listaCompra = context.Compra.Where(c => c.cnpjOficina.Equals(f.cnpjOficina) && c.data >= dtIncio && c.data <= dtFim).ToList(); listaCompra = listaCompra.OrderBy(c => c.data).ToList(); foreach (Compra compra in listaCompra) { dt = compra.data; ticks = new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks; dt = new DateTime(ticks); mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; foreach (DataPointArea dtpArea in dataPoints1) { if (dtpArea.X == mili) { dtpArea.Y -= totalCompra(compra); break; } } } jsonGrafico = JsonConvert.SerializeObject(dataPoints1); } } catch (Exception ex) { pnl_Alert.CssClass = "alert alert-danger mt-3"; lbl_Alert.Text = "Erro: " + ex.Message + Environment.NewLine + "Por favor entre em contato com o suporte"; pnl_Alert.Visible = true; } break; case "totalClientes": try { DateTime dtIncio = DateTime.Parse(txt_DataInicio.Text); DateTime dtFim = DateTime.Parse(txt_DataFim.Text); dtFim = dtFim.AddHours(23).AddMinutes(59).AddSeconds(59).AddMilliseconds(59); List <DataPointArea> dataPoints1 = new List <DataPointArea>(); using (DatabaseEntities context = new DatabaseEntities()) { List <Orcamento> orcamentosTemp = context.Orcamento.Where(o => o.cnpjOficina.Equals(f.cnpjOficina) && o.status.ToLower().Equals("concluído")).ToList(); List <KeyValuePair <Orcamento, DateTime> > orcamentosConcluidos = new List <KeyValuePair <Orcamento, DateTime> >(); LogOrcamento log; foreach (Orcamento orcamento in orcamentosTemp) { log = context.LogOrcamento.Where(l => l.alteracao.ToLower().Equals("concluído") && l.dataAlteracao >= dtIncio && l.dataAlteracao <= dtFim && l.idOrcamento == orcamento.idOrcamento).FirstOrDefault(); if (log != null) { orcamentosConcluidos.Add(new KeyValuePair <Orcamento, DateTime>(orcamento, log.dataAlteracao)); } } orcamentosConcluidos = orcamentosConcluidos.OrderBy(o => o.Value).ToList(); DataPointArea dtp1; double mili; long ticks; DateTime dt; dt = dtIncio; ticks = new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks; dt = new DateTime(ticks); while (true) { mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; dtp1 = new DataPointArea(mili, 0); dataPoints1.Add(dtp1); if (dt.Year == dtFim.Year && dt.Month == dtFim.Month) { break; } else { dt = dt.AddMonths(1); } } List <KeyValuePair <Cliente, DataPointArea> > listClientes = new List <KeyValuePair <Cliente, DataPointArea> >(); KeyValuePair <Cliente, DataPointArea> kvpCliente; foreach (KeyValuePair <Orcamento, DateTime> oConcluido in orcamentosConcluidos) { dt = oConcluido.Value; ticks = new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks; dt = new DateTime(ticks); mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; foreach (DataPointArea dtpArea in dataPoints1) { if (dtpArea.X == mili) { kvpCliente = listClientes.Find(l => l.Value.Equals(dtpArea) && l.Key.cpf.Equals(oConcluido.Key.cpfCliente)); if (kvpCliente.Key == null) { dtpArea.Y++; listClientes.Add(new KeyValuePair <Cliente, DataPointArea>(oConcluido.Key.Cliente, dtpArea)); break; } } } } jsonGrafico = JsonConvert.SerializeObject(dataPoints1); } } catch (Exception ex) { pnl_Alert.CssClass = "alert alert-danger mt-3"; lbl_Alert.Text = "Erro: " + ex.Message + Environment.NewLine + "Por favor entre em contato com o suporte"; pnl_Alert.Visible = true; } break; case "historicoOrcamentoCriacao": try { using (DatabaseEntities context = new DatabaseEntities()) { DateTime dtIncio = DateTime.Parse(txt_DataInicio.Text); DateTime dtFim = DateTime.Parse(txt_DataFim.Text); dtFim = dtFim.AddHours(23).AddMinutes(59).AddSeconds(59).AddMilliseconds(59); List <DataPointArea> dataPointsConcluido = new List <DataPointArea>(); List <DataPointArea> dataPointsCancelado = new List <DataPointArea>(); List <DataPointArea> dataPointsAprovacaoPendente = new List <DataPointArea>(); List <DataPointArea> dataPointsAprovado = new List <DataPointArea>(); List <Orcamento> orcamentos = context.Orcamento.Where(o => o.cnpjOficina.Equals(f.cnpjOficina) && o.data >= dtIncio && o.data <= dtFim).ToList(); //INICIO - Adiciona o datapoint na lista de datapoints double mili; long ticks; DateTime dt; ticks = new DateTime(dtIncio.Year, dtIncio.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks; dt = new DateTime(ticks); int nConcluido, nCancelado, nAprovacaoPendente, nAprovado; while (true) { mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; nConcluido = 0; nCancelado = 0; nAprovacaoPendente = 0; nAprovado = 0; foreach (Orcamento orc in orcamentos) { if (orc.data.Year == dt.Year && orc.data.Month == dt.Month) { switch (orc.status) { case "Aprovado": nAprovado++; break; case "Pagamento pendente": nAprovado++; break; case "Aprovação da gerencia pendente": nAprovacaoPendente++; break; case "Aprovação do cliente pendente": nAprovacaoPendente++; break; case "Rejeitado pelo cliente": nCancelado++; break; case "Rejeitado pela gerencia": nCancelado++; break; case "Cancelado": nCancelado++; break; case "Concluído": nConcluido++; break; } } } dataPointsConcluido.Add(new DataPointArea(mili, nConcluido)); dataPointsCancelado.Add(new DataPointArea(mili, nCancelado)); dataPointsAprovacaoPendente.Add(new DataPointArea(mili, nAprovacaoPendente)); dataPointsAprovado.Add(new DataPointArea(mili, nAprovado)); if (dt.Year == dtFim.Year && dt.Month == dtFim.Month) { break; } else { dt = dt.AddMonths(1); } } //FIM --- Adiciona o datapoint na lista de datapoints jsonGrafico = JsonConvert.SerializeObject(dataPointsConcluido); jsonGrafico2 = JsonConvert.SerializeObject(dataPointsCancelado); jsonGrafico3 = JsonConvert.SerializeObject(dataPointsAprovacaoPendente); jsonGrafico4 = JsonConvert.SerializeObject(dataPointsAprovado); } } catch (Exception ex) { pnl_Alert.CssClass = "alert alert-danger mt-3"; lbl_Alert.Text = "Erro: " + ex.Message + Environment.NewLine + "Por favor entre em contato com o suporte"; pnl_Alert.Visible = true; } break; case "despesaFornecedor": try { using (DatabaseEntities context = new DatabaseEntities()) { DateTime dtIncio = DateTime.Parse(txt_DataInicio.Text); DateTime dtFim = DateTime.Parse(txt_DataFim.Text); dtFim = dtFim.AddHours(23).AddMinutes(59).AddSeconds(59).AddMilliseconds(59); List <Compra> compras = context.Compra.Where(com => com.cnpjOficina.Equals(f.cnpjOficina) && com.data >= dtIncio && com.data <= dtFim).ToList(); List <DataPointPie> dataPoints = new List <DataPointPie>(); double total; Fornecedor frn; bool adicionado; foreach (Compra com in compras) { adicionado = false; total = totalCompra(com); frn = com.Fornecedor; foreach (DataPointPie dt in dataPoints) { if (dt.Label.Equals(frn.cnpjFornecedor)) { dt.Y += total; adicionado = true; } } if (!adicionado) { dataPoints.Add(new DataPointPie(frn.cnpjFornecedor, total)); } } Double aux; foreach (DataPointPie dt in dataPoints) { dt.Label = context.Fornecedor.Where(forn => forn.cnpjFornecedor.Equals(dt.Label)).FirstOrDefault().razaoSocial; aux = (Double)dt.Y; dt.Value = aux.ToString("0.00"); } jsonGrafico = JsonConvert.SerializeObject(dataPoints); } } catch (Exception ex) { pnl_Alert.CssClass = "alert alert-danger mt-3"; lbl_Alert.Text = "Erro: " + ex.Message + Environment.NewLine + "Por favor entre em contato com o suporte"; pnl_Alert.Visible = true; } break; case "novosClientes": try { using (DatabaseEntities context = new DatabaseEntities()) { DateTime dtIncio = DateTime.Parse(txt_DataInicio.Text); DateTime dtFim = DateTime.Parse(txt_DataFim.Text); dtFim = dtFim.AddHours(23).AddMinutes(59).AddSeconds(59).AddMilliseconds(59); List <Cliente> clientesPassado = new List <Cliente>(); List <Cliente> clientesAtual = new List <Cliente>(); List <Orcamento> orcamentosTemp = context.Orcamento.Where(o => o.cnpjOficina.Equals(f.cnpjOficina)).ToList(); foreach (Orcamento o in orcamentosTemp) { if (o.data >= dtIncio && o.data <= dtFim) { if (!clientesAtual.Contains(o.Cliente)) { clientesAtual.Add(o.Cliente); } } else { if (!clientesPassado.Contains(o.Cliente) && o.data < dtIncio) { clientesPassado.Add(o.Cliente); } } } int nClientesNovos = 0; int nClientesDeNovos = 0; foreach (Cliente cl in clientesAtual) { if (clientesPassado.Contains(cl)) { nClientesDeNovos++; } else { nClientesNovos++; } } List <DataPointPie> dataPoints = new List <DataPointPie>(); dataPoints.Add(new DataPointPie("Clientes novos", nClientesNovos)); dataPoints.Add(new DataPointPie("Clientes recorrentes", nClientesDeNovos)); jsonGrafico = JsonConvert.SerializeObject(dataPoints); } } catch (Exception ex) { pnl_Alert.CssClass = "alert alert-danger mt-3"; lbl_Alert.Text = "Erro: " + ex.Message + Environment.NewLine + "Por favor entre em contato com o suporte"; pnl_Alert.Visible = true; } break; } } else { gerarGrafico = false; } }
protected void btn_GerarGrafico_Click(object sender, EventArgs e) { try { if (validacaoDatas()) { DateTime dtIncio = DateTime.Parse(txt_DataInicio.Text); DateTime dtFim = DateTime.Parse(txt_DataFim.Text); dtFim = dtFim.AddHours(23).AddMinutes(59).AddSeconds(59).AddMilliseconds(59); gerarGrafico = true; switch (select_Grafico.SelectedValue) { case "usuariosUnicos": using (DatabaseEntities context = new DatabaseEntities()) { List <DataPointArea> dataPoints = new List <DataPointArea>(); List <Log_Login> logsTemp = context.Log_Login.Where(a => a.data >= dtIncio && a.data <= dtFim).ToList(); //Seta as variaveis DateTime dt = dtIncio; DataPointArea dtp; double mili; dt = new DateTime(new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks); logsTemp = logsTemp.OrderBy(l => l.data).ToList(); //Preenche os datapoints while (true) { mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; dtp = new DataPointArea(mili, 0); dataPoints.Add(dtp); if (dt.Year == dtFim.Year && dt.Month == dtFim.Month) { break; } else { dt = dt.AddMonths(1); } } List <Log_Login> lista = new List <Log_Login>(); Log_Login temp; foreach (Log_Login log in logsTemp) { dt = log.data; dt = new DateTime(new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks); mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; foreach (DataPointArea dtpArea in dataPoints) { if (dtpArea.X == mili) { temp = lista.Find(l => l.cpfCliente.Equals(log.cpfCliente) && l.data.Month == log.data.Month && l.data.Year == log.data.Year); if (temp == null) { dtpArea.Y++; lista.Add(log); break; } } } } jsonGrafico = JsonConvert.SerializeObject(dataPoints); } break; case "qtdPesquisa": using (DatabaseEntities context = new DatabaseEntities()) { List <DataPointArea> dataPoints = new List <DataPointArea>(); List <LogPesquisa> pesquisas = context.LogPesquisa.Where(l => l.data >= dtIncio && l.data <= dtFim).ToList(); DateTime dt = dtIncio; DataPointArea dtp; double mili; dt = new DateTime(new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks); pesquisas = pesquisas.OrderBy(p => p.data).ToList(); while (true) { mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; dtp = new DataPointArea(mili, 0); dataPoints.Add(dtp); if (dt.Year == dtFim.Year && dt.Month == dtFim.Month) { break; } else { dt = dt.AddMonths(1); } } foreach (LogPesquisa log in pesquisas) { dt = log.data; dt = new DateTime(new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks); mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; foreach (DataPointArea dtpA in dataPoints) { if (dtpA.X == mili) { dtpA.Y++; break; } } } jsonGrafico = JsonConvert.SerializeObject(dataPoints); } break; case "usuarioAtivo": using (DatabaseEntities context = new DatabaseEntities()) { List <DataPointArea> dataPoints = new List <DataPointArea>(); List <Log_Login> loginTemp = context.Log_Login.Where(l => l.data >= dtIncio && l.data <= dtFim).ToList(); List <Cliente> clientes = context.Cliente.ToList(); List <Log_Login> loginUnico = new List <Log_Login>(); Log_Login logTemp; //Pega o login unico no mes foreach (Log_Login log in loginTemp) { logTemp = loginUnico.Find(l => l.cpfCliente.Equals(log.cpfCliente) && l.data.Month == log.data.Month && l.data.Year == log.data.Year); if (logTemp == null) { loginUnico.Add(log); } } //Gera grafico DateTime dt = dtIncio; DataPointArea dtp; double mili; dt = new DateTime(new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks); while (true) { mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; dtp = new DataPointArea(mili, 0); dataPoints.Add(dtp); if (dt.Year == dtFim.Year && dt.Month == dtFim.Month) { break; } else { dt = dt.AddMonths(1); } } loginUnico = loginUnico.OrderBy(l => l.data).ToList(); int loginUnicoMes; if (clientes.Count > 0) { foreach (DataPointArea temp in dataPoints) { loginUnicoMes = 0; foreach (Log_Login log in loginUnico) { dt = log.data; dt = new DateTime(new DateTime(dt.Year, dt.Month, 1, 0, 0, 0, DateTimeKind.Utc).Ticks); mili = dt.ToUniversalTime().Subtract(new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc)).TotalMilliseconds; if (temp.X == mili) { loginUnicoMes++; temp.Y = (double)loginUnicoMes / (double)clientes.Count; } } } } jsonGrafico = JsonConvert.SerializeObject(dataPoints); break; } } } } catch (Exception ex) { pnl_Alert.CssClass = "alert alert-danger mt-3"; lbl_Alert.Text = "Erro: " + ex.Message + Environment.NewLine + " " + ex.StackTrace + "Por favor entre em contato com o suporte"; pnl_Alert.Visible = true; } }