private static void LLenarDatosReporteEncuesta(DataEmprendeEntities2 conexion, IList<aplicacion_encuesta> aplicaciones) { 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 = encuestaAReporte.aplicacion_encuesta.ToList(); IList<aplicacion_encuesta> aplicacionList = aplicaciones; IList<tematica> tematicaList; IList<preguntas> preguntaList; IList<incisos> incisoList; IList<resultados_encuesta> resultadosList; IList<detalle_catalogo> detallesList; Queue<object> coleccionesValores = new Queue<object>(); foreach (var aplicacion in aplicacionList) { Dictionary<tematica, ValoresManager> tematicasValores = new Dictionary<tematica, ValoresManager>(); Dictionary<preguntas, ValoresManager> preguntasValores = new Dictionary<preguntas, ValoresManager>(); Dictionary<incisos, ValoresManager> incisosValores = new Dictionary<incisos, ValoresManager>(); 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(); //total = aplicacion.resultados_encuesta.Where(item => item.id_inciso == inciso.id_inciso&&conexion.detalle_catalogo.Where(det=>det.id==item.resultado).First().peso!=0).Count(); 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; } //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); //if (average != averageAux) //{ // averageAux = 10; //} //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); } //coleccionesValores.Add(incisosValores); //coleccionesValores.Add(preguntasValores); //coleccionesValores.Add(tematicasValores); coleccionesValores.Enqueue(incisosValores); coleccionesValores.Enqueue(preguntasValores); coleccionesValores.Enqueue(tematicasValores); } foreach (var aplicacion in aplicacionList) { Dictionary<incisos, ValoresManager> incisosValores = (Dictionary<incisos, ValoresManager>)coleccionesValores.Dequeue(); Dictionary<preguntas, ValoresManager> preguntasValores = (Dictionary<preguntas, ValoresManager>)coleccionesValores.Dequeue(); Dictionary<tematica, ValoresManager> tematicasValores = (Dictionary<tematica, ValoresManager>)coleccionesValores.Dequeue(); tematicaList = aplicacion.encuesta.tematica.ToList(); //double tematicaPromedio=conexion.resultados_encuesta.Where(item=> conexion.incisos.Where(inciso=>inciso.id_inciso==item.id_inciso).First().preguntas.id_tematica== //double tematicaPromedio=conexion.resultados_encuesta.Sum(item=>item.pe 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 = ""; 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(); } } } } } } } catch (Exception) { } }
internal static void LLenarDatosReporteAplicacionUsuario(DataEmprendeEntities2 conexion, aplicacion_encuesta aplicacionEncuesta,int sujetoUsuario) { try { IList<temporal_encuesta> temporalEncuestaList = conexion.temporal_encuesta.ToList(); foreach (var item in temporalEncuestaList) { conexion.temporal_encuesta.DeleteObject(item); } if(temporalEncuestaList.Count>0) 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&&item.id_sujeto==sujetoUsuario) ).ToList(); resultadosList = aplicacion.resultados_encuesta.Where(item => (item.id_inciso == inciso.id_inciso && item.id_sujeto == sujetoUsuario)).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; if (aplicacion.curso != null) { temporal.CursoId = aplicacion.id_curso; temporal.CursoDescripcion = aplicacion.curso.descripcion; if(aplicacion.curso.id_turno!=null ) { temporal.TurnoId=aplicacion.curso.id_turno; temporal.TurnoTurno=aplicacion.curso.turnos.turno; } } if (aplicacion.id_profesor != null) { temporal.ProfesorId = aplicacion.id_profesor; profesores profesor=conexion.profesores.Where(item=>item.id_persona==aplicacion.id_profesor).First(); temporal.ProfesorNombreApellidos = Utiles.NombreProfesor(profesor); } if (aplicacion.id_centro != null) { temporal.CentroId = aplicacion.id_centro; temporal.CentroNombre = mia.centro; } if (resultado.id_persona != null) { temporal.AutorId = resultado.id_persona; persona person=conexion.persona.Where(item=>item.id==resultado.id_persona).First(); temporal.AutorNombreApellidos = Utiles.NombrePersona(person); } conexion.temporal_encuesta.AddObject(temporal); conexion.SaveChanges(); } } else { int total = aplicacion.resultados_encuesta.Where(item => (item.id_inciso == inciso.id_inciso&&item.id_sujeto==sujetoUsuario)).Count(); detallesList = inciso.catalogo.detalle_catalogo.ToList(); detallesList.Clear(); var resultado = conexion.resultados_encuesta.Where(res => res.id_sujeto == sujetoUsuario && res.id_inciso == inciso.id_inciso && res.id_aplicacion_encuesta == aplicacion.id).FirstOrDefault(); if (resultado != null && resultado.resultado != null) { var detalle = conexion.detalle_catalogo.Where(det => det.id == resultado.resultado).FirstOrDefault(); if (detalle != null) { detallesList.Add(detalle); } } 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.IncisoNumeral = inciso.numeral; // temporalValor = preguntasValores[pregunta]; temporal.PreguntaId = pregunta.id_pregunta; //temporal.PreguntaPregunta = pregunta.pregunta + " " + temporalValor.Promedio + " de " + temporalValor.Maximo; temporal.PreguntaPregunta = pregunta.pregunta; //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) + "%)"; temporal.ResultadoResultadoTexto = ""; //todo esto es una solucion temporal para lo de los reportes //temporal.ResultadoResultadoTexto = SalvacionReporte(cantidadDetalles, total, Redondeo(porCiento, 1)); //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.TematicaTematica = tematica.tematica1; temporal.TipoIncisoId = inciso.tipo_inciso.id_tipo_inciso; temporal.TipoIncisoTipoInciso = inciso.tipo_inciso.tipo_inciso1; if (aplicacion.curso != null) { temporal.CursoId = aplicacion.id_curso; temporal.CursoDescripcion = aplicacion.curso.descripcion; if (aplicacion.curso.id_turno != null) { temporal.TurnoId = aplicacion.curso.id_turno; temporal.TurnoTurno = aplicacion.curso.turnos.turno; } } if (aplicacion.id_profesor != null) { temporal.ProfesorId = aplicacion.id_profesor; profesores profesor = conexion.profesores.Where(item => item.id_persona == aplicacion.id_profesor).First(); temporal.ProfesorNombreApellidos = Utiles.NombreProfesor(profesor); } if (aplicacion.id_centro != null) { temporal.CentroId = aplicacion.id_centro; temporal.CentroNombre = mia.centro; } if (resultado.id_persona != null) { temporal.AutorId = resultado.id_persona; persona person = conexion.persona.Where(item => item.id == resultado.id_persona).First(); temporal.AutorNombreApellidos = Utiles.NombrePersona(person); } conexion.temporal_encuesta.AddObject(temporal); conexion.SaveChanges(); } } } } } } // conexion.SaveChanges(); } catch (Exception) { } }