Exemple #1
0
        public string analise(int tip, int code, int codd, int codee, int codde, int co, int cod)
        {
            if (codd < 12)
            {
                codd++;
            }
            else
            {
                code++;
                codd = 1;
            }
            DateTime dt_max = new DateTime(code, codd, 1);
            DateTime dt_min = new DateTime(codee, codde, 1);

            Dominio.Analise analise = new Dominio.Analise()
            {
                Data_max = dt_max, Data_min = dt_min
            };
            analise.ID = cod;
            commands["CONSULTAR"].execute(analise);
            if (analise.ID == 0)
            {
                Dominio.data asd = new Dominio.data()
                {
                    labels = analise.generic_labels,//new string[] { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" },
                };
                var fdsa = new List <Dominio.datasets>()
                {
                };
                for (int i = 0; i < analise.resultado.Keys.Count; i++)
                {
                    if (co == 0)
                    {
                        List <EntidadeDominio> b = analise.resultado.Values.ElementAt(i);
                        Random rnd    = new Random();
                        string color  = "rgb(" + rnd.Next(0, 255) + "," + rnd.Next(0, 255) + " , " + rnd.Next(0, 255) + ")";
                        var    goLuiz = new datasets()
                        {
                            label = analise.resultado.Keys.ElementAt(i), backgroundColor = color, borderColor = color, fill = false
                        };
                        var grr = new List <double>()
                        {
                        };
                        foreach (Bagagem sl in b)
                        {
                            grr.Add(sl.peso);
                        }
                        goLuiz.data = grr.ToArray();
                        fdsa.Add(goLuiz);
                    }
                    else if (co == i + 1)
                    {
                        List <EntidadeDominio> b = analise.resultado.Values.ElementAt(i);
                        Random rnd    = new Random();
                        string color  = "rgb(" + rnd.Next(0, 255) + "," + rnd.Next(0, 255) + " , " + rnd.Next(0, 255) + ")";
                        var    goLuiz = new datasets()
                        {
                            label = analise.resultado.Keys.ElementAt(i), backgroundColor = color, borderColor = color, fill = false
                        };
                        var grr = new List <double>()
                        {
                        };
                        foreach (Bagagem sl in b)
                        {
                            grr.Add(sl.peso);
                        }
                        goLuiz.data = grr.ToArray();
                        fdsa.Add(goLuiz);
                    }
                }
                asd.datasets = fdsa.ToArray();

                Dominio.options asdf = new Dominio.options()
                {
                    responsive = true,
                    title      = new title()
                    {
                        display = true, text = "bagagem por voo em tempo (ano " + analise.Data_min.Year + ")"
                    },
                    tooltips = new tooltips()
                    {
                        intersect = false, mode = "index"
                    },
                    hover = new hover()
                    {
                        intersect = true, mode = "nearest"
                    },
                    scales = new scales()
                    {
                        xAxes = new xAxes[] { new xAxes()
                                              {
                                                  display = true, scaleLabel = new scaleLabel()
                                                  {
                                                      display = true, labelString = "mês"
                                                  }
                                              } },
                        yAxes = new yAxes[] { new yAxes()
                                              {
                                                  display = true, scaleLabel = new scaleLabel()
                                                  {
                                                      display = true, labelString = "peso em Kg"
                                                  }
                                              } }
                    }
                };
                if (tip == 0)
                {
                    analise.chartsjs.type = "line";
                }
                else
                {
                    analise.chartsjs.type = "bar";
                }
                analise.chartsjs.data    = asd;
                analise.chartsjs.options = asdf;
            }
            else
            {
                Dominio.data asd = new Dominio.data()
                {
                    labels = analise.generic_labels,
                };
                var fdsa = new List <Dominio.datasets>()
                {
                };
                for (int i = 0; i < analise.resultado.Keys.Count; i++)
                {
                    if (co == 0)
                    {
                        List <EntidadeDominio> b = analise.resultado.Values.ElementAt(i);
                        Random rnd    = new Random();
                        string color  = "rgb(" + rnd.Next(0, 255) + "," + rnd.Next(0, 255) + " , " + rnd.Next(0, 255) + ")";
                        var    goLuiz = new datasets()
                        {
                            label = analise.resultado.Keys.ElementAt(i), backgroundColor = color, borderColor = color, fill = false
                        };
                        var grr = new List <double>()
                        {
                        };
                        foreach (Check_in sl in b)
                        {
                            grr.Add(sl.ID);
                        }
                        goLuiz.data = grr.ToArray();
                        fdsa.Add(goLuiz);
                    }
                    else if (co == i + 1)
                    {
                        List <EntidadeDominio> b = analise.resultado.Values.ElementAt(i);
                        Random rnd    = new Random();
                        string color  = "rgb(" + rnd.Next(0, 255) + "," + rnd.Next(0, 255) + " , " + rnd.Next(0, 255) + ")";
                        var    goLuiz = new datasets()
                        {
                            label = analise.resultado.Keys.ElementAt(i), backgroundColor = color, borderColor = color, fill = false
                        };
                        var grr = new List <double>()
                        {
                        };
                        foreach (Check_in sl in b)
                        {
                            grr.Add(sl.ID);
                        }
                        goLuiz.data = grr.ToArray();
                        fdsa.Add(goLuiz);
                    }
                }
                asd.datasets = fdsa.ToArray();

                Dominio.options asdf = new Dominio.options()
                {
                    responsive = true,
                    title      = new title()
                    {
                        display = true, text = "passageiros por voo em tempo (ano " + analise.Data_min.Year + ")"
                    },
                    tooltips = new tooltips()
                    {
                        intersect = false, mode = "index"
                    },
                    hover = new hover()
                    {
                        intersect = true, mode = "nearest"
                    },
                    scales = new scales()
                    {
                        xAxes = new xAxes[] { new xAxes()
                                              {
                                                  display = true, scaleLabel = new scaleLabel()
                                                  {
                                                      display = true, labelString = "mês"
                                                  }
                                              } },
                        yAxes = new yAxes[] { new yAxes()
                                              {
                                                  display = true, scaleLabel = new scaleLabel()
                                                  {
                                                      display = true, labelString = "quantidade"
                                                  }
                                              } }
                    }
                };
                if (tip == 0)
                {
                    analise.chartsjs.type = "line";
                }
                else
                {
                    analise.chartsjs.type = "bar";
                }
                analise.chartsjs.data    = asd;
                analise.chartsjs.options = asdf;
            }
            return(JsonConvert.SerializeObject(analise.chartsjs, Formatting.None, new JsonSerializerSettings()
            {
                ReferenceLoopHandling = ReferenceLoopHandling.Ignore
            }));                                                                                                                                                         //System.IO.File.ReadAllText("./analise.json");
        }
        public chartsjs Get(int tip, int code, int codd, int codee, int codde, int co, int cod)
        {
            //qtd do eixo?
            if (codd < 12)
            {
                codd++;
            }
            else
            {
                code++;
                codd = 1;
            }
            //code ano max
            //codee ano min
            //codd mes max
            //codde mes min
            DateTime dt_max = new DateTime(code, codd, 1);
            DateTime dt_min = new DateTime(codee, codde, 1);

            Dominio.Analise analise = new Dominio.Analise()
            {
                Data_max = dt_max, Data_min = dt_min
            };
            analise.Id = cod;
            Random rnd = new Random();

            if (analise.Id == 0)
            {
                List <string> lbls = new List <string>();
                //var dev = db.Pedidoes.Where(ddd => ddd.DataPedido >= dt_min && ddd.DataPedido <= dt_max).ToList();
                var dev = db.Pedidoes.Where(ddd => ddd.DataPedido >= dt_min && ddd.DataPedido <= dt_max)
                          .DistinctBy(ddd => ddd.DataPedido.Year)
                          .DistinctBy(ddd => ddd.DataPedido.Month);
                foreach (var b in dev)
                {
                    lbls.Add(b.DataPedido.ToString("MMMM"));
                }
                Dominio.data asd = new Dominio.data()
                {
                    //eixo x do grafico
                    //labels = lbls.ToArray(),
                    labels = new string[] { "Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro" },
                };
                var fdsa = new List <Dominio.datasets>()
                {
                };
                //qtd do eixo!!
                for (int i = 0; i < analise.resultado.Keys.Count; i++)
                {
                    if (co == 0)
                    {
                        //qts pedidos dentro da lista?
                        // cor randomica
                        var color = "rgb(" + rnd.Next(0, 255) + "," + rnd.Next(0, 255) + " , " + rnd.Next(0, 255) + ")";
                        var go    = new datasets()
                        {
                            label = db.Produtoes.ToList().Where(bbb => bbb.Id == int.Parse(analise.resultado.Keys.ElementAt(i))).ElementAt(0).Titulo, backgroundColor = (string)color.Clone(), borderColor = (string)color.Clone(), fill = false
                        };
                        var grr = new List <double>()
                        {
                        };

                        //eixo y
                        var queen = new double[12];
                        //foreach dentro de pedido
                        foreach (DetalhesPedido bbb in analise.prod)
                        {
                            Pedido p = db.Pedidoes.Find(bbb.PedidoId);

                            if (bbb.ProdutoId.ToString() == analise.resultado.Keys.ElementAt(i) && p.DataPedido >= dt_min && p.DataPedido <= dt_max)
                            {
                                //pedido por mes, contador de pedidos por mes
                                switch (p.DataPedido.Month)
                                {
                                case 1:
                                    queen[0]++;
                                    break;

                                case 2:
                                    queen[1]++;
                                    break;

                                case 3:
                                    queen[2]++;
                                    break;

                                case 4:
                                    queen[3]++;
                                    break;

                                case 5:
                                    queen[4]++;
                                    break;

                                case 6:
                                    queen[5]++;
                                    break;

                                case 7:
                                    queen[6]++;
                                    break;

                                case 8:
                                    queen[7]++;
                                    break;

                                case 9:
                                    queen[8]++;
                                    break;

                                case 10:
                                    queen[9]++;
                                    break;

                                case 11:
                                    queen[10]++;
                                    break;

                                case 12:
                                    queen[11]++;
                                    break;
                                }
                            }
                        }
                        grr.AddRange(queen);
                        go.data = grr.ToArray();
                        fdsa.Add(go);
                    }
                    else if (co == i + 1)
                    {
                        List <DetalhesPedido> b = analise.prod;
                        var color = "rgb(" + rnd.Next(0, 255) + "," + rnd.Next(0, 255) + " , " + rnd.Next(0, 255) + ")";
                        var go    = new datasets()
                        {
                            label = analise.resultado.Keys.ElementAt(i), backgroundColor = (string)color.Clone(), borderColor = (string)color.Clone(), fill = false
                        };
                        var grr = new List <double>()
                        {
                        };
                        //eixo y
                        var queen = new double[12];
                        foreach (DetalhesPedido bbb in b)
                        {
                            if (bbb.ProdutoId.ToString() == analise.resultado.Keys.ElementAt(i))
                            {
                                Pedido p = db.Pedidoes.Find(bbb.PedidoId);
                                switch (p.DataPedido.Month)
                                {
                                case 1:
                                    queen[0]++;
                                    break;

                                case 2:
                                    queen[1]++;
                                    break;

                                case 3:
                                    queen[2]++;
                                    break;

                                case 4:
                                    queen[3]++;
                                    break;

                                case 5:
                                    queen[4]++;
                                    break;

                                case 6:
                                    queen[5]++;
                                    break;

                                case 7:
                                    queen[6]++;
                                    break;

                                case 8:
                                    queen[7]++;
                                    break;

                                case 9:
                                    queen[8]++;
                                    break;

                                case 10:
                                    queen[9]++;
                                    break;

                                case 11:
                                    queen[10]++;
                                    break;

                                case 12:
                                    queen[11]++;
                                    break;
                                }
                            }
                        }
                        grr.AddRange(queen);
                        go.data = grr.ToArray();
                        fdsa.Add(go);
                    }
                }
                asd.datasets = fdsa.ToArray();

                Dominio.options asdf = new Dominio.options()
                {
                    //titulo do grafico
                    responsive = true,
                    title      = new title()
                    {
                        display = true, text = "Quantidade de Vendas por Jogo (ano " + analise.Data_min.Year + ")"
                    },
                    tooltips = new tooltips()
                    {
                        intersect = false, mode = "index"
                    },
                    hover = new hover()
                    {
                        intersect = true, mode = "nearest"
                    },
                    //Legenda das escalas qtd por mês
                    scales = new scales()
                    {
                        xAxes = new xAxes[] { new xAxes()
                                              {
                                                  display = true, scaleLabel = new scaleLabel()
                                                  {
                                                      display = true, labelString = "Meses"
                                                  }
                                              } },
                        yAxes = new yAxes[] { new yAxes()
                                              {
                                                  display = true, scaleLabel = new scaleLabel()
                                                  {
                                                      display = true, labelString = "Quantidade"
                                                  }
                                              } }
                    }
                };
                //tipo do grafico linha ou barra
                if (tip == 0)
                {
                    analise.chartsjs.type = "line";
                }
                else
                {
                    analise.chartsjs.type = "bar";
                }
                analise.chartsjs.data    = asd;
                analise.chartsjs.options = asdf;
            }

            return(analise.chartsjs);
        }