private static void LLenarDatosReporteAplicacion(DataEmprendeEntities2 conexion, aplicacion_encuesta aplicacionEncuesta) { try { IList<temporal_encuesta> temporalEncuestaList = conexion.temporal_encuesta.ToList(); foreach (var item in temporalEncuestaList) { conexion.temporal_encuesta.DeleteObject(item); } conexion.SaveChanges(); IList<aplicacion_encuesta> aplicacionList = new List<aplicacion_encuesta>(); aplicacionList.Add(aplicacionEncuesta); IList<tematica> tematicaList; IList<preguntas> preguntaList; IList<incisos> incisoList; IList<resultados_encuesta> resultadosList; IList<detalle_catalogo> detallesList; Dictionary<tematica, ValoresManager> tematicasValores = new Dictionary<tematica, ValoresManager>(); Dictionary<preguntas, ValoresManager> preguntasValores = new Dictionary<preguntas, ValoresManager>(); Dictionary<incisos, ValoresManager> incisosValores = new Dictionary<incisos, ValoresManager>(); foreach (var aplicacion in aplicacionList) { tematicaList = aplicacion.encuesta.tematica.ToList(); foreach (var tematica in tematicaList) { preguntaList = tematica.preguntas.ToList(); ValoresManager tematicaValor = new ValoresManager(); foreach (var pregunta in preguntaList) { incisoList = pregunta.incisos.ToList(); ValoresManager preguntaValor = new ValoresManager(); foreach (var inciso in incisoList) { ValoresManager incisoValor = new ValoresManager(); int total = 0; double average = 0.0; int maximo = int.MinValue; if (inciso.tipo_inciso.tipo_inciso1 != "Escribir") { total = aplicacion.resultados_encuesta.Where(item => item.id_inciso == inciso.id_inciso).Count(); //double averageAux = aplicacion.resultados_encuesta.Where(item => item.id_inciso == inciso.id_inciso).Average(item => conexion.detalle_catalogo.Where(det => det.id == item.resultado).First().peso); var auxiliarResultados = aplicacion.resultados_encuesta.Where(item => item.id_inciso == inciso.id_inciso && conexion.detalle_catalogo.Where(det => det.id == item.resultado).First().peso != 0); if (auxiliarResultados.Count() > 0) { average = auxiliarResultados.Average(item => conexion.detalle_catalogo.Where(det => det.id == item.resultado).First().peso); } else { average = 0; } //average = aplicacion.resultados_encuesta.Where(item => item.id_inciso == inciso.id_inciso && conexion.detalle_catalogo.Where(det => det.id == item.resultado).First().peso != 0).Average(item => conexion.detalle_catalogo.Where(det => det.id == item.resultado).First().peso); maximo = inciso.catalogo.detalle_catalogo.Max(item => item.peso); //maximo = aplicacion.resultados_encuesta.Where(item => item.id_inciso == inciso.id_inciso).Max(item => conexion.detalle_catalogo.Where(det => det.id == item.resultado).First().peso); } incisoValor.Add(average, total, maximo); preguntaValor.Add(average, total, maximo); tematicaValor.Add(average, total, maximo); incisosValores.Add(inciso, incisoValor); } preguntasValores.Add(pregunta, preguntaValor); } tematicasValores.Add(tematica, tematicaValor); } } foreach (var aplicacion in aplicacionList) { tematicaList = aplicacion.encuesta.tematica.ToList(); foreach (var tematica in tematicaList) { preguntaList = tematica.preguntas.ToList(); foreach (var pregunta in preguntaList) { incisoList = pregunta.incisos.ToList(); foreach (var inciso in incisoList) { if (inciso.tipo_inciso.tipo_inciso1 == "Escribir") { resultadosList = aplicacion.resultados_encuesta.Where(item => item.id_inciso == inciso.id_inciso).ToList(); foreach (var resultado in resultadosList) { temporal_encuesta temporal = new temporal_encuesta(); temporal.id = conexion.temporal_encuesta.Count(); temporal.AplicacionDescripcion = aplicacion.descripcion; temporal.AplicacionId = aplicacion.id; temporal.AplicacionFecha = aplicacion.fecha; //temporal.DetalleId //temporal.DetalleNombre = ""; //temporal.DetalleNumeral //temporal.DetallePeso temporal.EncuestaEncuesta = aplicacion.encuesta.encuesta1; temporal.EncuestaId = aplicacion.encuesta.id; temporal.IncisoId = inciso.id_inciso; temporal.IncisoInciso = inciso.inciso.Trim(); temporal.IncisoNumeral = inciso.numeral; temporal.PreguntaId = pregunta.id_pregunta; temporal.PreguntaPregunta = pregunta.pregunta; temporal.ResultadoIdSujeto = resultado.id_sujeto; temporal.ResultadoResultado = resultado.resultado; temporal.ResultadoResultadoTexto = resultado.resultado_texto; temporal.TematicaId = tematica.id; temporal.TematicaTematica = tematica.tematica1; temporal.TipoIncisoId = inciso.tipo_inciso.id_tipo_inciso; temporal.TipoIncisoTipoInciso = inciso.tipo_inciso.tipo_inciso1; conexion.temporal_encuesta.AddObject(temporal); conexion.SaveChanges(); } } else { int total = aplicacion.resultados_encuesta.Where(item => item.id_inciso == inciso.id_inciso).Count(); detallesList = inciso.catalogo.detalle_catalogo.ToList(); foreach (var detalle in detallesList) { temporal_encuesta temporal = new temporal_encuesta(); temporal.id = conexion.temporal_encuesta.Count(); temporal.AplicacionDescripcion = aplicacion.descripcion; temporal.AplicacionId = aplicacion.id; temporal.AplicacionFecha = aplicacion.fecha; temporal.DetalleId = detalle.id; temporal.DetalleNombre = detalle.nombre; temporal.DetalleNumeral = detalle.numeral; temporal.DetallePeso = detalle.peso; temporal.EncuestaEncuesta = aplicacion.encuesta.encuesta1; temporal.EncuestaId = aplicacion.encuesta.id; temporal.IncisoId = inciso.id_inciso; ValoresManager temporalValor = incisosValores[inciso]; temporal.IncisoInciso = inciso.inciso.Trim() + " " + temporalValor.Promedio + " de " + temporalValor.Maximo; temporal.IncisoInciso = inciso.inciso.Trim() ; temporal.Auxiliar1 = "Calificación según peso: " + temporalValor.Promedio + " de un máximo de " + temporalValor.Maximo; temporal.IncisoNumeral = inciso.numeral; temporalValor = preguntasValores[pregunta]; temporal.PreguntaId = pregunta.id_pregunta; temporal.PreguntaPregunta = pregunta.pregunta + " " + temporalValor.Promedio + " de " + temporalValor.Maximo; //temporal.ResultadoIdSujeto = resultado.id_sujeto; //temporal.ResultadoResultado = resultado.resultado; int cantidadDetalles = aplicacion.resultados_encuesta.Where(item => item.id_inciso == inciso.id_inciso && item.resultado == detalle.id).Count(); double porCiento = (double)(cantidadDetalles * 100) / ((double)total); //temporal.ResultadoResultadoTexto = "(Evaluado como "+ cantidadDetalles + " de " + total + " para un " + Redondeo(porCiento,1) + "%)"; //todo esto es una solucion temporal para lo de los reportes //temporal.ResultadoResultadoTexto =SalvacionReporte(cantidadDetalles,total,Redondeo(porCiento,1)); temporal.ResultadoResultadoTexto = ""; //nuevo para los reportes temporal.Calificacion = cantidadDetalles; temporal.Maximo = total; temporal.Porcentaje = double.Parse( Redondeo(porCiento, 1)); // temporalValor = tematicasValores[tematica]; temporal.TematicaId = tematica.id; temporal.TematicaTematica = tematica.tematica1 + " " + temporalValor.Promedio + " de " + temporalValor.Maximo; temporal.TipoIncisoId = inciso.tipo_inciso.id_tipo_inciso; temporal.TipoIncisoTipoInciso = inciso.tipo_inciso.tipo_inciso1; conexion.temporal_encuesta.AddObject(temporal); conexion.SaveChanges(); } } } } } } // conexion.SaveChanges(); } catch (Exception) { } }
private void EliminarAplicacionEncuesta(aplicacion_encuesta aplicacion) { Utiles.EliminaAplicacion(nodoSeleccionado, aplicacion); DataEmprendeconextion.aplicacion_encuesta.DeleteObject(aplicacion); DataEmprendeconextion.SaveChanges(); }