public ActionResult GraficoHabEmp(string tipoHab) { //Se arma y se ejecuta el query string consulHab = "Consultar_Num_Habilidades_Empleados '" + tipoHab + "'"; var tempNumHabEmp = (db.Database.SqlQuery <NumHab>(consulHab)).ToList(); //Se arman los ejes del gráfico string[] habilidades = tempNumHabEmp.Select(l => l.Habilidad.ToString()).ToArray(); int[] totales = tempNumHabEmp.Select(l => l.Total).ToArray(); //Se obtiene el porcentaje para poder mostrarlo int totalObtenido = 0; foreach (int i in totales) { totalObtenido += i; } for (int i = 0; i < habilidades.Length; i++) { habilidades[i] = habilidades[i] + " (" + ((double)totales[i] / (double)totalObtenido * 100.00).ToString("#.##") + "%)"; } //Se construye el gráfico con los resultados y porcentajes obtenidos var chart = new System.Web.Helpers.Chart(width: 513, height: 400) .AddSeries(name: "HabilidaddesEmp " + tipoHab, chartType: "Pie", xValue: habilidades, yValues: totales) .AddLegend() .AddTitle("Habilidades de los Empleados") .SetYAxis("Cantidad de Habilidades") .GetBytes("png"); return(File(chart, "image/bytes")); }
public ActionResult GraficoDuracionProy(string proy) { ViewBag.idproy = proy; var consultaGrafico = (from proyecto in db.PROYECTO where proyecto.idPK == proy select new { durEst = proyecto.duracionEstimada, durReal = proyecto.duracionReal }); int duracionEstimada = 0; int duracionReal = 0; foreach (var item in consultaGrafico.ToList()) { duracionEstimada = item.durEst.Value; duracionReal = item.durReal.Value; } int[] horas = new int[2]; horas[0] = duracionEstimada; horas[1] = duracionReal; var chart = new System.Web.Helpers.Chart(width: 700, height: 400, themePath: "~/Img/estiloDurProy.xml") .AddSeries(name: "Duraciones", xValue: new[] { "Duracion Estimada", "Duracion Real" }, yValues: horas) .AddTitle("Análisis de Resultados", "TituloDurProy") .SetYAxis("Cantidad de Horas") .GetBytes("png"); return(File(chart, "image/bytes")); }
public ActionResult _graficoContratos() { model = (from a in db.Arm_LiquidadosEAtivos_Contrato where a.origem.Equals("B") group a by new { a.status } into g select new { statusGoup = g.Key, totalGoup = g.Count(c => c.status.HasValue) }).AsEnumerable().Select(x => new TesteViewModel { status = x.statusGoup.status, total = x.totalGoup }); if (model.Count() == 0 || model == null) { return(View()); } if (model == null || model.Any() == false) { return(View("_graficoContratos", model)); } var myChart = new System.Web.Helpers.Chart(width: 230, height: 118, theme: Vanilla3D3) //.AddTitle("CONTRATOS") //.AddLegend("LEGENDA") //.Save(@"H:\Downloads\grafico.jpg") //.AddSeries(chartArea:"teste") .AddSeries("Default", chartType: "Pie", xValue: model.ToList(), xField: "status", yValues: model.ToList(), yFields: "total") .Write(); return(null); }
public ActionResult GraficoHorasPorReq(string proy, string tester) { string queryHorasPorReq = "Exec Consulta_Horas_Por_Req" + "'" + proy + "','" + tester + "'"; //Se hace el query a la base de datos var tempHorasPorReq = (db.Database.SqlQuery <HorasReq>(queryHorasPorReq)).ToList(); string[] reqs = tempHorasPorReq.Select(l => l.nombreReq.ToString()).ToArray(); string[] horasR = tempHorasPorReq.Select(l => l.horasEstimadas.ToString()).ToArray(); string[] horasE = tempHorasPorReq.Select(l => l.horasReales.ToString()).ToArray(); var chart = new System.Web.Helpers.Chart(width: 900, height: 450, themePath: "~/Img/estiloHorPorReq.xml") .AddTitle("Análisis de Resultados", "TituloHorPorReq") .AddSeries(name: "Horas Estimadas", chartType: "column", xValue: reqs, yValues: horasE) .AddSeries(name: "Horas Reales", chartType: "column", xValue: reqs, yValues: horasR) .AddLegend() .SetYAxis("Cantidad de Horas") .SetXAxis("Requerimientos") .GetBytes("png"); return(File(chart, "image/bytes")); }
public ActionResult GraficoTesterReq(string testerId) { ViewBag.idEmp = testerId; string procedure = "Exec Consulta_Tester_Req_Dificultad '" + testerId + "'"; var testerData = (db.Database.SqlQuery <TesterParticipacion>(procedure)).ToList(); int[] baja = testerData.Select(l => l.baja).ToArray(); int[] intermedia = testerData.Select(l => l.intermedia).ToArray(); int[] alta = testerData.Select(l => l.alta).ToArray(); int[] porcentaje = new int[3]; int total = baja[0] + intermedia[0] + alta[0]; porcentaje[0] = (baja[0] * 100) / total; porcentaje[1] = (intermedia[0] * 100) / total; porcentaje[2] = (alta[0] * 100) / total; string[] nombres = new string[3]; nombres[0] = "Baja"; nombres[1] = "Intermedia"; nombres[2] = "Alta"; var chart = new System.Web.Helpers.Chart(width: 513, height: 400) .AddSeries(name: "Requerimientos realizados", chartType: "Pie", xValue: nombres, yValues: porcentaje) .AddLegend() .AddTitle("Requerimientos realizados") .GetBytes("png"); return(File(chart, "image/bytes")); }
public ActionResult GraficoTesterReqGlobal(string testerId) { ViewBag.idEmp = testerId; string procedure = "Exec Consulta_Tester_Req_Percentage_Total '" + testerId + "'"; var testerData = (db.Database.SqlQuery <TesterParticipacionGlobal>(procedure)).ToList(); int[] total = testerData.Select(l => l.total).ToArray(); int[] partipacion = testerData.Select(l => l.participacion).ToArray(); string[] nombre = testerData.Select(l => l.nombre.ToString()).ToArray(); int[] porcentaje = new int[2]; porcentaje[0] = (partipacion[0] * 100) / total[0]; porcentaje[1] = 100 - porcentaje[0]; string[] nombres = new string[2]; nombres[0] = nombre[0]; nombres[1] = "Total"; var chart = new System.Web.Helpers.Chart(width: 513, height: 400) .AddSeries(name: "Requerimientos realizados", chartType: "Pie", xValue: nombres, yValues: porcentaje) .AddLegend() .AddTitle("Requerimientos realizados") .GetBytes("png"); return(File(chart, "image/bytes")); }
// GET: Admin/CreateChart public ActionResult CreateChart() { var chart = new System.Web.Helpers.Chart(width: 700, height: 300) .AddTitle("График посещений") .AddSeries( name: "Моя программа", legend: "Моя программа", chartType: "Line", xValue: new[] { "Peter", "Andrew", "Julie", "Mary", "Dave" }, yValues: new[] { "2", "6", "4", "5", "3" }) .Write(); return(null); }
public static Chart CreateChart(List <ActivityPerMinute> data) { var chart = new Chart(width: 1920, height: 1080) .AddTitle("Activity") .AddSeries( name: "Accelerometer", chartType: "Column", xValue: data.Select(m => m.DateTime).ToList(), yValues: data.Select(m => m.Activity).ToList() ) .Write(); return(chart); }
public System.Web.Helpers.Chart GetChart() { var isChartOk = false; var sbError = new System.Text.StringBuilder(""); var chart = new System.Web.Helpers.Chart(width: 600, height: 400, theme: System.Web.Helpers.ChartTheme.Vanilla) .AddTitle(ChartTitle); xAndyValues = xAndyValues ?? new List <AspChartSeries>(); foreach (var series in xAndyValues) { if (series == null) { continue; } var xValues = series.SeriesValue .Select(kvp => kvp.Key.ToString()) .ToArray(); var yValues = series.SeriesValue .Select(kvp => kvp.Value) .ToArray(); if ((xValues == null) || (yValues == null)) { continue; } else { isChartOk = true; } chart.AddSeries( name: series.SeriesTitle, chartType: aspChartType.ToString(), xValue: xValues, yValues: yValues ); } if (isChartOk) { if (AddLegend) { chart.AddLegend(); } } return(chart); }
public ActionResult GetCashItemChartImage() { // DB 접속 using (var db = new CloudBreadDBAdminEntities()) { var data = db.StatsData.SqlQuery("select top 30 * from CloudBread.StatsData where CategoryName like 'CASHITEM' order by CreatedAt asc"); var key = new System.Web.Helpers.Chart(width: 300, height: 300) .AddTitle("Cash아이템 매출") .AddSeries( chartType: "Line", name: "일", xValue: data, xField: "Fields", yValues: data, yFields: "CountNum"); return File(key.ToWebImage().GetBytes(), "image/jpeg"); } }
public ActionResult GetDDAUChartImage() { // DB 접속 using (var db = new CloudBreadDBAdminEntities()) { var data = db.StatsData.SqlQuery("select top 30 * from StatsData where CategoryName like 'DDAU' order by CreatedAt asc"); var key = new System.Web.Helpers.Chart(width: 300, height: 300) .AddTitle("DAU-일") .AddSeries( chartType: "Line", name: "일", xValue: data, xField: "Fields", yValues: data, yFields: "CountNum"); return(File(key.ToWebImage().GetBytes(), "image/jpeg")); } }
public ActionResult ResChart() { var ResList = new List <StatQuestItem>(); foreach (var currResult in _context.Results) { ResultDataItem[] currentResult = JsonConvert.DeserializeObject <ResultDataItem[]>(currResult.ResStr); foreach (var itm in currentResult) { if (ResList.Count(x => x.Id == itm.qId) == 0) { ResList.Add(new StatQuestItem { Id = itm.qId, FalseCount = 0, TruthCount = 0 }); } if (itm.rt) { ResList.FirstOrDefault(x => x.Id == itm.qId).TruthCount++; } else { ResList.FirstOrDefault(x => x.Id == itm.qId).FalseCount++; } } } var myChart = new System.Web.Helpers.Chart(width: 800, height: 600) .AddTitle("Статистика по ответам") .AddSeries( chartType: "StackedColumn", name: "True", xValue: ResList.OrderBy(y => y.Id).Select(x => x.Id).ToArray(), yValues: ResList.OrderBy(y => y.Id).Select(x => x.TruthCount).ToArray()) .AddSeries( chartType: "StackedColumn", name: "False", xValue: ResList.OrderBy(y => y.Id).Select(x => x.Id).ToArray(), yValues: ResList.OrderBy(y => y.Id).Select(x => x.FalseCount).ToArray()) .Write(); myChart.Save("~/Content/chart", "jpeg"); return(File("~/Content/chart", "image/jpeg"));// <----change here }
public ActionResult GoalHelperChart() { var student = (Student)Session["myStudent"]; System.Web.Helpers.Chart chart = new System.Web.Helpers.Chart(width: 400, height: 200) .AddTitle("Reading Goal Achievement") .AddSeries( chartType: "line", legend: "Rainfall", xValue: student.GoalDates, yValues: student.GoalLevels ) .SetYAxis( title: "Achievement" ) .SetXAxis( title: "Assessment Dates" ); return(File(chart.GetBytes("png"), "image/png")); }
public ActionResult GraficoHabEquipo(string tipoHab, string idProy) { //Se arma la consulta y se ejecuta string consulHab = "Consultar_Num_Habilidades_Equipo'" + tipoHab + "' ,'" + idProy + "'"; var tempNumHabEmp = (db.Database.SqlQuery <NumHab>(consulHab)).ToList(); //Se construyen los ejes del gráfico string[] habilidades = tempNumHabEmp.Select(l => l.Habilidad.ToString()).ToArray(); int[] totales = tempNumHabEmp.Select(l => l.Total).ToArray(); //Se arma el gráfico y se retorna como una imagen. var chart = new System.Web.Helpers.Chart(width: 513, height: 400) .AddSeries(name: "HabilidaddesEmp " + tipoHab, xValue: habilidades, yValues: totales) .AddLegend() .AddTitle("Habilidades de los Empleados") .SetYAxis("Cantidad de Habilidades") .GetBytes("png"); return(File(chart, "image/bytes")); }
public ActionResult GraficoTesterBarrasReq(string testerId) { string proy = "Exec Consulta_tester_proyectos '" + testerId + "'"; var proyecto = (db.Database.SqlQuery <getProyectos>(proy)).ToList(); string[] proyectos = proyecto.Select(l => l.proyecto.ToString()).ToArray(); string[] nombreProy = proyecto.Select(l => l.proyectoNombre.ToString()).ToArray(); string consultaAlta = "Exec Consulta_Tester_Req_Percentage 'Alta', '" + testerId + "', '" + proyectos[0] + "'"; var porcentajeA = (db.Database.SqlQuery <getPorcentajes>(consultaAlta)).ToList(); int[] porcentajeAlta = porcentajeA.Select(l => l.parcial).ToArray(); string consultaIntermedia = "Exec Consulta_Tester_Req_Percentage 'Intermedia', '" + testerId + "', '" + proyectos[0] + "'"; var porcentajeI = (db.Database.SqlQuery <getPorcentajes>(consultaIntermedia)).ToList(); int[] porcentajeIntermedia = porcentajeA.Select(l => l.parcial).ToArray(); string consultaBaja = "Exec Consulta_Tester_Req_Percentage 'Baja', '" + testerId + "', '" + 7 + "'"; var porcentajeB = (db.Database.SqlQuery <getPorcentajes>(consultaBaja)).ToList(); int[] porcentajeBaja = porcentajeA.Select(l => l.parcial).ToArray(); var chart = new System.Web.Helpers.Chart(width: 600, height: 400) .AddSeries(name: "Baja", yValues: porcentajeBaja) .AddLegend() .AddTitle("Desempeño de lideres") .SetYAxis("Cantidad de Requerimientos") .SetXAxis("Lider") //.DataBindTable(dataSource: nombreBaja, xField: "Name") .GetBytes("png"); return(File(chart, "image/bytes")); return(File(chart, "image/bytes")); }
public ActionResult GraficoEstadoReq(string proy) { ViewBag.idproy = proy; System.Diagnostics.Debug.WriteLine("entro"); string queryEstadoReq = "Exec Consulta_Cant_Req_Estado" + "'" + proy + "'"; //Se hace el query a la base de datos var tempEstadoReq = (db.Database.SqlQuery <EstadoReq>(queryEstadoReq)).ToList(); string[] estados = tempEstadoReq.Select(l => l.estado_actual.ToString()).ToArray(); string[] cantidad = tempEstadoReq.Select(l => l.Cantidad.ToString()).ToArray(); var chart = new System.Web.Helpers.Chart(width: 600, height: 400) .AddSeries(name: "Requerimientos", xValue: estados, yValues: cantidad) .AddLegend() .AddTitle("Estado de los Requerimientos") .SetYAxis("Cantidad de Requerimientos") .SetXAxis("Estado Actual") .GetBytes("png"); return(File(chart, "image/bytes")); }
public ActionResult GraficoHistorialReq(string idEmp) { ViewBag.idEmp = idEmp; //Se arma y ejecuta el query dependiendo string consulHistorial = "Exec Consultar_Historial_Req_Tester '" + idEmp + "'"; var tempEstadoReq = (db.Database.SqlQuery <HistorialReq>(consulHistorial)).ToList(); //Se arman los ejes del gráfico string[] estados = tempEstadoReq.Select(l => l.Estado.ToString()).ToArray(); string[] totales = tempEstadoReq.Select(l => l.Total.ToString()).ToArray(); //Se crea el gráfico y se retorna como una imagen var chart = new System.Web.Helpers.Chart(width: 600, height: 400) .AddSeries(name: "Requerimientos", xValue: estados, yValues: totales) .AddLegend() .AddTitle("Historial de los Requerimientos") .SetYAxis("Cantidad de Requerimientos") .SetXAxis("Estado Final") .GetBytes("png"); return(File(chart, "image/bytes")); }
public ActionResult GraficoTotalReq(string proy) { ViewBag.idproy = proy; System.Diagnostics.Debug.WriteLine("entro"); string queryCantReq = "Exec Consulta_Cantidad_Req_Tester" + "'" + proy + "'"; //Se hace el query a la base de datos var tempCantReq = (db.Database.SqlQuery <CantReq>(queryCantReq)).ToList(); string[] nombres = tempCantReq.Select(l => l.nombre.ToString()).ToArray(); string[] cantidad = tempCantReq.Select(l => l.Cantidad.ToString()).ToArray(); var chart = new System.Web.Helpers.Chart(width: 600, height: 400) .AddSeries(name: "Testers", xValue: nombres, yValues: cantidad) .AddLegend() .AddTitle("Cantidad de Requerimientos por Tester") .SetYAxis("Cantidad de Requerimientos") .SetXAxis("Nombre") .GetBytes("png"); return(File(chart, "image/bytes")); }
public ActionResult DrawBarChart() { var chart = new System.Web.Helpers.Chart(width: 500, height: 350) .SetXAxis("") .SetYAxis("") .AddTitle("Number of open warrants by type") .AddLegend("Legend", "Legend") .AddSeries(name: "Child Abductions", chartType: "column", legend: "Legend", xValue: new[] { "Awaiting Information", "Active", "Port Alert Only" }, xField: "Status", yValues: new[] { "27", "4", "10" }) .AddSeries(name: "Warrants", chartType: "column", legend: "Legend", xValue: new[] { "Awaiting Information", "Active" }, xField: "Status", yValues: new[] { "6", "12" }) .GetBytes("png"); return(File(chart, "image/bytes")); }
public FileResult GetChart(ReportCriteria criteria) { Report report = new Report(); report.Criteria = criteria; string LTypeName = "%"; if (report.Criteria.LTypeID >= 1) { LTypeName = db.LTypes .Where(x => x.ID == report.Criteria.LTypeID) .Select(y => y.Name).First(); } LoadDdlLTypes(Convert.ToInt32(report.Criteria.LTypeID)); var data = db.Database.SqlQuery<ReportResult>("SpGenReport @startdate, @enddate, @typename, @email", new SqlParameter("@startdate", report.Criteria.StartDate), new SqlParameter("@enddate", report.Criteria.EndDate), new SqlParameter("@typename", LTypeName), new SqlParameter("@email", "%")) .OrderBy(a => a.EmployeeName) .ThenBy(b => b.LTypName); report.ReportResults = data.ToArray(); List<string> EmployeeNames = new List<string>(); List<int> LvWFHCounts = new List<int>(); List<int> LvALCounts = new List<int>(); List<int> LvELCounts = new List<int>(); List<int> LvSLCounts = new List<int>(); List<int> LvCTCounts = new List<int>(); List<int> LvMLCounts = new List<int>(); List<int> LvPLCounts = new List<int>(); List<int> LvCLCounts = new List<int>(); List<int> LvOOOCounts = new List<int>(); List<int> LvHLCounts = new List<int>(); foreach (var item in report.ReportResults) { if (!EmployeeNames.Contains(item.EmployeeName)) { EmployeeNames.Add(item.EmployeeName); } switch (item.LTypName) { case "Work From Home": LvWFHCounts.Add(item.NoOfDays); break; case "Annual Leave": LvALCounts.Add(item.NoOfDays); break; case "Emergency Leave": LvELCounts.Add(item.NoOfDays); break; case "Sick Leave": LvSLCounts.Add(item.NoOfDays); break; case "Comp Time Off": LvCTCounts.Add(item.NoOfDays); break; case "Marriage Leave": LvMLCounts.Add(item.NoOfDays); break; case "Paternity Leave": LvPLCounts.Add(item.NoOfDays); break; case "Compassionate Leave": LvCLCounts.Add(item.NoOfDays); break; case "Out of Office": LvOOOCounts.Add(item.NoOfDays); break; case "Hospitalization Leave": LvHLCounts.Add(item.NoOfDays); break; } } string themeChart = @"<Chart> <ChartAreas> <ChartArea Name=""Default"" _Template_=""All""> <AxisY> <LabelStyle Font=""Verdana, 12px"" /> </AxisY> <AxisX LineColor=""64, 64, 64, 64"" Interval=""1""> <LabelStyle Font=""Verdana, 12px"" /> </AxisX> </ChartArea> </ChartAreas> </Chart>"; var chart = new System.Web.Helpers.Chart(width: 1500, height: 800, theme: themeChart) .AddTitle("Leave Data from " + report.Criteria.StartDate.ToString("yyyy/MM/dd") + " till " + report.Criteria.EndDate.ToString("yyyy/MM/dd")) .AddLegend("Legend") .SetYAxis("Number of days") .SetXAxis("Employees"); if (LvWFHCounts.Sum() > 0) { chart.AddSeries(name: "Work from home", xValue: EmployeeNames, yValues: LvWFHCounts); } if (LvALCounts.Sum() > 0) { chart.AddSeries(name: "Annual Leave", xValue: EmployeeNames, yValues: LvALCounts); } if (LvELCounts.Sum() > 0) { chart.AddSeries(name: "Emergency Leave", xValue: EmployeeNames, yValues: LvELCounts); } if (LvSLCounts.Sum() > 0) { chart.AddSeries(name: "Sick Leave", xValue: EmployeeNames, yValues: LvSLCounts); } if (LvCTCounts.Sum() > 0) { chart.AddSeries(name: "Comp Time Off", xValue: EmployeeNames, yValues: LvCTCounts); } if (LvMLCounts.Sum() > 0) { chart.AddSeries(name: "Marriage Leave", xValue: EmployeeNames, yValues: LvMLCounts); } if (LvPLCounts.Sum() > 0) { chart.AddSeries(name: "Paternity Leave", xValue: EmployeeNames, yValues: LvPLCounts); } if (LvCLCounts.Sum() > 0) { chart.AddSeries(name: "Compassionate Leave", xValue: EmployeeNames, yValues: LvCLCounts); } if (LvOOOCounts.Sum() > 0) { chart.AddSeries(name: "Out of Office", xValue: EmployeeNames, yValues: LvOOOCounts); } if (LvHLCounts.Sum() > 0) { chart.AddSeries(name: "Hospitalization Leave", xValue: EmployeeNames, yValues: LvHLCounts); } return File(chart.ToWebImage().GetBytes(), "image/jpeg", "chart.jpg"); }
public ActionResult GraficoMostrarMostrarPruebasReq(string idProyFK, string nombreRequerimiento) { string queryPruebasPorEstado = "EXEC cantidad_pruebas_por_estado " + "'" + nombreRequerimiento + "','" + idProyFK + "';"; List <PruebasPorEstado> resultado = (db.Database.SqlQuery <PruebasPorEstado>(queryPruebasPorEstado)).ToList(); if (resultado.Count() == 2) // Solo hay de 2 tipos { // Averiguar el estado de los 2 tipos de pruebas que hay // Algoritmo que encuentra el tipo de pruebas que hay, y rellena el array con el tipo de pruebas que faltan y le pone como cantidad 0 PruebasPorEstado incompletas = resultado.Find(x => x.estadoFinal == "Incompleto"); if (incompletas == null) { incompletas = new PruebasPorEstado(); incompletas.estadoFinal = "Incompleto"; incompletas.cantidad = 0; resultado.Add(incompletas); } PruebasPorEstado exitosas = resultado.Find(x => x.estadoFinal == "Exitoso"); if (exitosas == null) { exitosas = new PruebasPorEstado(); exitosas.estadoFinal = "Exitoso"; exitosas.cantidad = 0; resultado.Add(exitosas); } PruebasPorEstado fallidas = resultado.Find(x => x.estadoFinal == "Fallido"); if (fallidas == null) { fallidas = new PruebasPorEstado(); fallidas.estadoFinal = "Fallido"; fallidas.cantidad = 0; resultado.Add(fallidas); } } else if (resultado.Count() == 1) // Solo hay de un tipo // Algoritmo que encuentra el tipo de pruebas que hay, y rellena el array con el tipo de pruebas que faltan y le pone como cantidad 0 { // Averiguar el estado de la unica prueba if (resultado.ElementAt(0).estadoFinal == "Exitoso") { PruebasPorEstado fallidas = new PruebasPorEstado(); fallidas.cantidad = 0; fallidas.estadoFinal = "Fallido"; resultado.Add(fallidas); PruebasPorEstado incompletas = new PruebasPorEstado(); incompletas.cantidad = 0; incompletas.estadoFinal = "Incompleto"; resultado.Add(incompletas); } else if (resultado.ElementAt(0).estadoFinal == "Fallido") { PruebasPorEstado exitosas = new PruebasPorEstado(); exitosas.cantidad = 0; exitosas.estadoFinal = "Exitoso"; resultado.Add(exitosas); PruebasPorEstado incompletas = new PruebasPorEstado(); incompletas.cantidad = 0; incompletas.estadoFinal = "Incompleto"; resultado.Add(incompletas); } else { PruebasPorEstado exitosas = new PruebasPorEstado(); exitosas.cantidad = 0; exitosas.estadoFinal = "Exitoso"; resultado.Add(exitosas); PruebasPorEstado fallidas = new PruebasPorEstado(); fallidas.cantidad = 0; fallidas.estadoFinal = "Fallido"; resultado.Add(fallidas); } } string[] estados = resultado.Select(prueba => prueba.estadoFinal.ToString()).ToArray(); int[] cantidad = resultado.Select(prueba => prueba.cantidad).ToArray(); var chart = new System.Web.Helpers.Chart(width: 600, height: 400) // Armar el grafico .AddSeries(name: "Estado Pruebas", xValue: estados, yValues: cantidad) .AddLegend() .AddTitle("Estado de las Pruebas") .SetYAxis("Cantidad de Pruebas") .GetBytes("png"); return(File(chart, "image/bytes")); }
public ActionResult GraficoMostrarTotalPruebasProy(string proy) { string queryPruebasProy = "Exec pruebas_proyecto" + "'" + proy + "'"; // Se hace el query a la base de datos var tempPruebasProy = (db.Database.SqlQuery <PruebasProy>(queryPruebasProy)).ToList(); /*A continuacion, se muestran ejemplos de resultados devueltos por el query y la forma de manejarlos * para poder obtener los datos correctos y poder armar el grafico*/ string[] estadosFinales = tempPruebasProy.Select(pruebasProy => pruebasProy.EstadoFinal.ToString()).ToArray(); // [Exitoso , Fallido, Exitoso, Incompleto] string[] testersResponsables = tempPruebasProy.Select(pruebasProy => pruebasProy.TesterResponsable.ToString()).ToArray(); // [Andres2 , Andres2, Andres3, Andres3] int[] cantidadPruebas = tempPruebasProy.Select(pruebasProy => pruebasProy.CantidadPruebas).ToArray(); // [1 , 1, 2, 1] List <string> testersSinRepetir = new List <string>(); for (int i = 0; i < testersResponsables.Length; ++i) // Añade los DISTINTOS testers que se encuentran en el array de los testers { if (!(testersSinRepetir.Contains(testersResponsables[i]))) { testersSinRepetir.Add(testersResponsables[i]); } } /* Se necesitan 3 arreglos con la cantidad de fallidas, la cantidad de exitosas y la cantidad de incompletas * por cada tester distinto. Una forma de hacer esto es que cada tester estara indexado en la lista * con sus respectivas cantidad de pruebas*/ int[] cantidadExitosas = new int[testersSinRepetir.Count]; int[] cantidadFallidas = new int[testersSinRepetir.Count]; int[] cantidadIncompletas = new int[testersSinRepetir.Count]; for (int i = 0; i < estadosFinales.Length; ++i) // Todos los arrays que vienen del proc almacenado tienen la misma indexacion { int index = testersSinRepetir.IndexOf(testersResponsables[i], 0); if (estadosFinales[i] == "Exitoso") { cantidadExitosas[index] = cantidadPruebas[i]; // Anade las pruebas exitosas para el tester en la posicion index } else if (estadosFinales[i] == "Fallido") { cantidadFallidas[index] = cantidadPruebas[i]; } else // Incompletas { cantidadIncompletas[index] = cantidadPruebas[i]; } } /*Un ejemplo final del resultado podria ser: * [Esteban, Andres, Roger] // Testers sin repetir * [0, 0, 0] // Cantidad de pruebas fallidas, donde Esteban tiene 0, Andres 0 y Roger 0 * [1, 2, 3] // Cantidad de pruebas incompletas, donde Esteban tiene 1, Andres 2 y Roger 3 * [4, 2, 1] // Cantidad de pruebas exitosas, donde Esteban tiene 4, Andres 2 y Roger 1 */ string[] arrayTesterSinRepetir = testersSinRepetir.ToArray(); // Se pasa a un array de string para poder pasarlo al graficador var chart = new System.Web.Helpers.Chart(width: 900, height: 450) // Armar el grafico .AddTitle("Pruebas del proyecto") .AddSeries(name: "Exitosas", chartType: "column", xValue: arrayTesterSinRepetir, yValues: cantidadExitosas) .AddSeries(name: "Fallidas", chartType: "column", xValue: arrayTesterSinRepetir, yValues: cantidadFallidas) .AddSeries(name: "Incompletas", chartType: "column", xValue: arrayTesterSinRepetir, yValues: cantidadIncompletas) .AddLegend() .SetYAxis("Cantidad de Pruebas") .SetXAxis("Testers Responsables") .GetBytes("png"); return(File(chart, "image/bytes")); }
public ActionResult GraficoLideresReq() { string lideres = "Exec Consulta_lideres_id"; var liderList = (db.Database.SqlQuery <getLideres>(lideres)).ToList(); string[] lider = liderList.Select(l => l.nombre.ToString()).ToArray(); string[] liderId = liderList.Select(l => l.cedula.ToString()).ToArray(); string consulta = "EXEC Consulta_lider_get_proy"; string reqBaja = "Exec Consulta_lideres_req_totales 'Baja'"; string reqIntermedia = "Exec Consulta_lideres_req_totales 'Intermedia'"; string reqAlta = "Exec Consulta_lideres_req_totales 'Alta'"; var baja = (db.Database.SqlQuery <getLiderReqDificultad>(reqBaja)).ToList(); var intermedia = (db.Database.SqlQuery <getLiderReqDificultad>(reqIntermedia)).ToList(); var alta = (db.Database.SqlQuery <getLiderReqDificultad>(reqAlta)).ToList(); //Se hace el query a la base de datos int[] cantidadBaja = baja.Select(l => l.req).ToArray(); int[] cantidadIntermedia = intermedia.Select(l => l.req).ToArray(); int[] cantidadAlta = alta.Select(l => l.req).ToArray(); string[] nombreBaja = baja.Select(l => l.cedula.ToString()).ToArray(); string[] nombreIntermedia = intermedia.Select(l => l.cedula.ToString()).ToArray(); string[] nombreAlta = alta.Select(l => l.cedula.ToString()).ToArray(); int[] bajas = new int[lider.Length]; int[] intermedias = new int[lider.Length]; int[] altas = new int[lider.Length]; for (int i = 0; i < lider.Length; ++i) { for (int j = 0; j < nombreBaja.Length; ++j) { if (nombreBaja[j] == liderId[i]) { bajas[i] = cantidadBaja[j]; break; } else { bajas[i] = 0; } } for (int j = 0; j < nombreIntermedia.Length; ++j) { if (nombreIntermedia[j] == liderId[i]) { intermedias[i] = cantidadIntermedia[j]; break; } else { intermedias[i] = 0; } } for (int j = 0; j < nombreAlta.Length; ++j) { if (nombreAlta[j] == liderId[i]) { altas[i] = cantidadAlta[j]; break; } else { altas[i] = 0; } } } int xValue = 0; var chart = new System.Web.Helpers.Chart(width: 600, height: 400) .AddSeries(name: "Baja", xValue: lider, yValues: bajas) .AddSeries(name: "Intermedio", yValues: intermedias) .AddSeries(name: "Alta", yValues: altas) .AddLegend() .AddTitle("Desempeño de lideres") .SetYAxis("Cantidad de Requerimientos") .SetXAxis("Lider") //.DataBindTable(dataSource: nombreBaja, xField: "Name") .GetBytes("png"); return(File(chart, "image/bytes")); }