示例#1
0
        //param i: variable de regla simple
        public double getDato(int i, DatosUsuario du)
        {
            IQueryable <DatoSimple> ds;

            if (i < 8) // Variables de Texto
            {
                ds = (from d in db.DatosSimples
                      where d.DatosUsuarioID == du.DatosUsuarioID &&
                      d.CodeOP == i &&
                      d.TextoID == du.TextoID
                      select d);
            }
            else // Variables de Pregunta
            {
                ds = (from d in db.DatosSimples
                      where d.DatosUsuarioID == du.DatosUsuarioID &&
                      d.CodeOP == i &&
                      d.PreguntaID == du.PreguntaID &&
                      d.TextoID == du.TextoID
                      select d);
            }



            switch (i) // Todo se calcula a nivel de pregunta y no como computo global de todas las preguntas. Las variables de texto van a parte...
            {
            /******************************************************************************************
            * ****************************************************************************************
            * ****** I = codeop en https://docs.google.com/spreadsheets/d/1YLiGMUn1XTluUPOgGNVYMQW2JUUyGxm-euywYARER6Y/
            * ****************************************************************************************
            * ****************************************************************************************/
            case 5:     // Lectura inicial
                return(ds.ToList().LastOrDefault() != null ? (Convert.ToDouble(ds.ToList().LastOrDefault().Info) / 1000.0) : -1.0);

            case 6:
                return(ds.ToList().LastOrDefault() != null?Convert.ToDouble(ds.ToList().LastOrDefault().Info) : -1.0);

            case 9:     // Intento de pregunta
                if (ds.ToList().Count > 0)
                {
                    return(2.0);
                }
                else
                {
                    return(-1.0);
                }

            case 13:
                //CODIGO ORIGNAL DE CASE13
                //return ds.ToList().LastOrDefault() != null ? Convert.ToDouble(ds.ToList().LastOrDefault().Dato01) : -1.0;
                //DEVUELVE ALGO ASÍ COMO EL PORCENTAJE DE ACIERTO EN PREGUNTAS DE TEST SOBRE EL MÓDULO ACTUAL. PARECE INUTILIZABLE

                //return 0 -> error
                //return 1 -> acierto
                return(Convert.ToDouble(ds.ToList().LastOrDefault().Info2));

            case 16:     // Número de lecturas de enunciado
                return(Convert.ToDouble(ds.ToList().Count));

            case 17:     // Número de lecturas de alternativas
                return(Convert.ToDouble(ds.ToList().Count));

            case 24:     // Número de búsquedas
                return(Convert.ToDouble(ds.ToList().Count));

            case 34:     // Número de Ayudas Parafraseo
                return(Convert.ToDouble(ds.ToList().Count));

            case 48:
                return(0);

            case 49:
                return(0);

            case 50:
                //porcentaje de acierto en la selección
                return(ds.ToList().Last().Dato01);

            case 51:
                //porcentaje de distractoras en la selección
                return(ds.ToList().Last().Dato01);

            case 52:
                if (ds.ToList().Count > 0)
                {
                    return(1.0);
                }
                else
                {
                    return(0.0);
                }

            case 53:
                return(ds.ToList().Last().Dato01);

            case 54:
                return(ds.ToList().Last().Dato01);

            case 55:
                return(ds.ToList().Last().Dato01);

            case 56:
                return(ds.ToList().Last().Dato01);

            case 58:
                return(ds.ToList().Last().Dato01);


            default:
                return(0);
            }
        }