Пример #1
0
        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;
            }
        }
Пример #2
0
        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;
            }
        }