Example #1
0
        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)
            { }
        }
Example #2
0
        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)
            { }
        }