/*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; }
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); }
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; }