예제 #1
0
        /*Grafico Tempo de Atendimento das Reclamações por Fornecedores
         SELECT idfornecedor, count(*) qtderec,
        round(avg((case (datasolucao-datareclamacao) > 0
        when 1 then DATEDIFF( DATE( datasolucao ) ,DATE( datareclamacao ))
        else DATEDIFF( DATE( NOW( ) ) ,DATE( datareclamacao ))
        end))) as avgdiasatend FROM reclamacoes
        group by idfornecedor
         */
        public ActionResult Grfavgdiasatend(string Tipo, string thema)
        {
            string commandFor = "SELECT r.idfornecedor, f.nomefantasia, count(*) qtderec, " +
                "round(avg((case (datasolucao-datareclamacao) > 0 " +
                "when 1 then DATEDIFF( DATE( datasolucao ) ,DATE( datareclamacao )) " +
                "else DATEDIFF( DATE( NOW( ) ) ,DATE( datareclamacao )) " +
                "end))) as avgdiasatend FROM reclamacoes r inner join fornecedores f on r.idfornecedor = f.idfornecedor " +
                "group by r.idfornecedor, f.nomefantasia";
            HomeModel reclamacoes = new HomeModel();
            var data = db.ExecuteStoreQuery<HomeModelAvgtdFor>(commandFor).ToList();
            if (data.Count >= 0)
            {
                string[] x;
                string[] y;
                int i = 0;
                int maiorqtde = 0;
                if (data.Count == 0)
                {
                    //Essa condição é para retornar um Gráfico mesmo sem informação, para evitar erro na imagem
                    x = new string[1];
                    y = new string[1];
                    x[0] = "Sem Dados no sistema";
                    y[0] = "0";
                    maiorqtde = 1;
                }
                else
                {
                    x = new string[data.Count];
                    y = new string[data.Count];
                }
                foreach (var item in data)
                {
                    x[i] = item.nomefantasia.Trim() + "\r\n" + "Reclamações: " + item.qtderec.ToString() +
                                                      "\r\n" + "Média Solução: " + "\r\n" +
                                                      item.avgdiasatend.ToString() + " Dias";
                    y[i] = item.avgdiasatend.ToString();
                    if (maiorqtde <= item.avgdiasatend || maiorqtde == item.avgdiasatend)
                    {
                        maiorqtde = item.avgdiasatend;
                    }
                    i++;
                }

                var Grafico = new Chart(width: 500, height: 400, theme: ChartTheme.Blue)
                        .SetYAxis("Média para Solucionar em Dias", 0)
                        .SetXAxis("Fornecedores", 0)
                        .AddSeries(
                            markerStep: maiorqtde,
                            axisLabel: "Media em Dias De Atendimento de Reclamações de compras por Fornecedores",
                            chartType: Tipo,
                            legend: "Relatório de Media em Dias de Reclamações",
                            xField: "Fornecedor",
                            yFields: "Total de Reclamações",
                            xValue: x,
                            yValues: y).GetBytes("png");
                return File(Grafico, "image/png");
            }
            return null;
        }
예제 #2
0
 public ActionResult Ranking()
 {
     ViewBag.Message = "Ranking do Reclame Agora!";
     string commandCli = "select c.estado as est_cli, c.idcliente, c.login, count(r.idreclamacao) as qtderec, " +
         "(case when qtderecn IS NULL then 0 else qtderecn end) as qtderecn, " +
         "(case when qtderecs IS NULL then 0 else qtderecs end) as qtderecs " +
         "from clientes c " +
         "inner join reclamacoes r on c.idcliente = r.idcliente " +
         "left outer join (select idcliente, count(idreclamacao) as qtderecn " +
                         "from reclamacoes  " +
                         "where tiposolucao = 'N' " +
                         "group by idcliente) rn on rn.idcliente = c.idcliente  " +
         "left outer join (select idcliente, count(idreclamacao) as qtderecs  " +
                         "from reclamacoes  " +
                         "where tiposolucao <> 'N' " +
                         "group by idcliente) rs on rs.idcliente = c.idcliente " +
         "group by c.estado,c.idcliente, c.login,rn.qtderecn,rs.qtderecs  ";
     string commandFor = "select c.estado as est_for, c.idfornecedor, c.nomefantasia, count(r.idreclamacao) as qtderec, " +
         "(case when qtderecn IS NULL then 0 else qtderecn end) as qtderecn, " +
         "(case when qtderecs IS NULL then 0 else qtderecs end) as qtderecs " +
         "from fornecedores c " +
         "inner join reclamacoes r on c.idfornecedor = r.idfornecedor " +
         "left outer join (select idfornecedor, count(idreclamacao) as qtderecn " +
                         "from reclamacoes " +
                         "where tiposolucao = 'N' " +
                         "group by idfornecedor) rn on rn.idfornecedor = c.idfornecedor " +
         "left outer join (select idfornecedor, count(idreclamacao) as qtderecs " +
                         "from reclamacoes " +
                         "where tiposolucao <> 'N' " +
                         "group by idfornecedor) rs on rs.idfornecedor = c.idfornecedor " +
         "group by c.estado,c.idfornecedor, c.nomefantasia,rn.qtderecn,rs.qtderecs";
     HomeModel reclamacoes = new HomeModel();
     reclamacoes.HomeModelCli = db.ExecuteStoreQuery<HomeModelCli>(commandCli).ToList();
     //É necessário abrir outra conexão e fechar para obter o resulltado da nova consulta
     sistemardcEntities dbrec = new sistemardcEntities();
     reclamacoes.HomeModelFor = dbrec.ExecuteStoreQuery<HomeModelFor>(commandFor).ToList();
     dbrec.Dispose();
     return View(reclamacoes);
 }
예제 #3
0
        public ActionResult Grafico(string Tipo)
        {
            string commandFor = "select c.estado as est_for, c.idfornecedor, c.nomefantasia, count(r.idreclamacao) as qtderec, " +
                "(case when qtderecn IS NULL then 0 else qtderecn end) as qtderecn, " +
                "(case when qtderecs IS NULL then 0 else qtderecs end) as qtderecs " +
                "from fornecedores c " +
                "inner join reclamacoes r on c.idfornecedor = r.idfornecedor " +
                "left outer join (select idfornecedor, count(idreclamacao) as qtderecn " +
                                "from reclamacoes " +
                                "where tiposolucao = 'N' " +
                                "group by idfornecedor) rn on rn.idfornecedor = c.idfornecedor " +
                "left outer join (select idfornecedor, count(idreclamacao) as qtderecs " +
                                "from reclamacoes " +
                                "where tiposolucao <> 'N' " +
                                "group by idfornecedor) rs on rs.idfornecedor = c.idfornecedor " +
                "group by c.estado,c.idfornecedor, c.nomefantasia,rn.qtderecn,rs.qtderecs";
            HomeModel reclamacoes = new HomeModel();
            var data = db.ExecuteStoreQuery<HomeModelFor>(commandFor).ToList();
            if (data.Count >= 0)
            {
                string[] x;
                string[] y;
                int i = 0;
                int maiorqtde = 0;
                if (data.Count == 0)
                {
                    //Essa condição é para retornar um Gráfico mesmo sem informação, para evitar erro na imagem
                    x = new string[1];
                    y = new string[1];
                    x[0] = "Sem Dados no sistema";
                    y[0] = "0";
                    maiorqtde = 1;
                }
                else
                {
                    x = new string[data.Count];
                    y = new string[data.Count];
                }
                foreach (var item in data)
                {
                    x[i] = item.nomefantasia.Trim() + "\r\n" + "Total: " + item.qtderec.ToString() +
                                                      "\r\n" + "Solucionadas: " + item.qtderecs.ToString();
                    y[i] = item.qtderec.ToString();
                    if (maiorqtde <= item.qtderec || maiorqtde == item.qtderec)
                    {
                        maiorqtde = item.qtderec;
                    }
                    i++;
                }
                var Grafico = new Chart(width: 500, height: 400, theme: ChartTheme.Vanilla3D)
                        .SetYAxis("Total de Reclamações", 0)
                        .SetXAxis("Fornecedores", 0)
                        .AddSeries(
                            markerStep: maiorqtde,
                            axisLabel: "Total de Reclamações de compras por Fornecedores",
                            chartType: Tipo,
                            legend: "Relatório de Reclamações",
                            xField: "Fornecedor",
                            yFields: "Total de Reclamações",
                            xValue: x,
                            yValues: y).GetBytes("png");
                return File(Grafico, "image/png");

            }
            return null;
        }