Ejemplo n.º 1
0
        /***********
        * MÉTODOS *
        ***********/



        /// <summary>
        /// Elimina la exposción seleccionada de la lista de exposiciónes del ControladorPrincipal
        /// </summary>
        private void EliminarExposicion()
        {
            Exposicion exposicion = GetSelectedExposicion();

            if (exposicion != null)
            {
                Exposiciones.Remove(exposicion);

                ControladorPrincipal.Exposiciones = Exposiciones;

                ActualizarListViewExposiciones();
            }
        }
        private Exposiciones CargarFormulas()
        {
            Exposiciones exp_formulas = new Exposiciones();

            if (FormulaHelper.LISTA_FORMULAS != null)
            {
                IEnumerable <System.Reflection.PropertyInfo> propiedades = exp_formulas.GetType().GetProperties().Where(p => p.Name.IndexOf("FORMULA_") > -1);

                foreach (Formulas f in FormulaHelper.LISTA_FORMULAS)
                {
                    foreach (var p in propiedades)
                    {
                        if (f.NOMBRE == p.Name)
                        {
                            p.SetValue(exp_formulas, (double?)f.ID);
                            break;
                        }
                    }
                }
            }

            return(exp_formulas);
        }
Ejemplo n.º 3
0
        public static double ResolverFormula(Exposiciones exp, string nombre_formula)
        {
            //Obtener formula a partir de nombre de campo
            string formula = BuscarFormula(nombre_formula);

            //obtener los alias de la fórmula
            string[] split = formula.Split('[', ']');
            //obtener todos los campos de la tabla exposiciones
            IEnumerable <System.Reflection.PropertyInfo> propiedades = exp.GetType().GetProperties();

            //Con cada alias
            for (int i = 0; i < split.Length; i++)
            {
                if ((split[i].Trim() != "") && (split[i].All(char.IsNumber)))
                {
                    //Reconstruir el alias
                    string id_campo = string.Concat("[", split[i], "]");
                    //Validar el alias
                    IEnumerable <string> campos = (from c in FormulaHelper.LISTA_CAMPOS where ((c.ALIAS == id_campo) && (c.ID_TABLA == 4)) select c.CAMPO);

                    if (campos.Count() > 0)
                    {
                        string nombre_campo = campos.First();

                        //Con cada campo de la tabla exposiciones
                        foreach (System.Reflection.PropertyInfo prop in propiedades)
                        {
                            if (prop.Name == nombre_campo)
                            {
                                string name  = prop.Name;
                                object value = prop.GetValue(exp);
                                IEnumerable <Formulas> f_aux = (from f in FormulaHelper.LISTA_FORMULAS where f.NOMBRE == name select f);

                                //Verificar si el campo se trata de una fórmula o un valor
                                if ((f_aux != null) && (f_aux.Count() > 0))
                                {
                                    if ((value != null) && (Convert.ToInt32(value) == 0))
                                    {
                                        //REVISAR SI SE PUEDE USAR EL VALOR CALCULADO PREVIAMENTE DE LA FÓRMULA
                                        split[i] = Convert.ToString(ResolverFormula(exp, f_aux.First().NOMBRE));
                                    }
                                    else
                                    {
                                        split[i] = Convert.ToString(value);
                                    }
                                }
                                else
                                {
                                    split[i] = Convert.ToString(value);
                                }

                                break;
                            }
                        }
                    }
                    else
                    {
                        //Log error

                        return(0d);
                    }
                }

                //Calcular porcentajes
                if (split[i].Contains("%"))
                {
                    string porc = string.Empty;
                    int    desde = 0, hasta = 0;

                    hasta = split[i].IndexOf('%');

                    for (int j = (hasta - 1); j > -1; j--)
                    {
                        if (!char.IsNumber(split[i][j]))
                        {
                            desde = (j + 1);

                            break;
                        }
                    }

                    porc = split[i].Substring(desde, (hasta - desde));
                    porc = string.Concat("(", porc, "/100)");

                    if (desde > 0)
                    {
                        porc = string.Concat(split[i].Substring(0, desde), porc);
                    }
                    if ((hasta + 1) < split[i].Length)
                    {
                        porc = string.Concat(porc, split[i].Substring(hasta + 1));
                    }

                    split[i] = porc;
                }
            }

            //Calcular operación
            string calculo = string.Empty;

            split.ToList().ForEach(c => calculo += c);

            if ((calculo = calculo.Trim()) == "")
            {
                calculo = "0";
            }
            else
            {
                //calculo = Convert.ToString(new System.Data.DataTable().Compute(calculo, "")); <--------------------
                calculo = "0";
            }

            return(Convert.ToDouble(calculo));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Se ejecuta cuando el usuario hace click en el ButtonCrearExposicion
        /// </summary>
        /// <param name="sender">Elemento que envia el evento</param>
        /// <param name="e">Evento llamado</param>
        private void buttonCrearExposicion_Click(object sender, EventArgs e)
        {
            Exposiciones = ControladorPrincipal.Exposiciones;
            Exposicion     exposicion    = GetSelectedExposicion();
            Form_CrearExpo formCrearExpo = null;

            if (exposicion != null)
            {
                formCrearExpo = new Form_CrearExpo(exposicion);
                formCrearExpo.ShowDialog();
            }
            else // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MAGOMO 20191208
            {
                exposicion = new Exposicion();
                if (Exposiciones != null)
                {
                    exposicion.Id = Exposiciones.Count;
                }
                else
                {
                    exposicion.Id = 0;
                }
                formCrearExpo = new Form_CrearExpo(exposicion);
                formCrearExpo.ShowDialog();
                if (exposicion.Nombre != null)
                {
                    exposicion.Preguntas = new Dictionary <Nivel, List <Pregunta> >();
                    if (Exposiciones == null)
                    {
                        Exposiciones = new List <Exposicion>();
                    }
                    Exposiciones.Add(exposicion);
                    ControladorPrincipal.Exposiciones = Exposiciones;
                }
            }
            formCrearExpo.Dispose();
            ActualizarListViewExposiciones();
            int numeroDePreguntasAllenar = exposicion.QuestionsXLvl;

            Console.WriteLine("Numero de preguntas a rellenar: " + numeroDePreguntasAllenar);

            exposicion.Preguntas = ControladorPrincipal.ListPreguntas(exposicion.Niveles, exposicion.Idiomas, exposicion.Preguntas);

            //Comprobar que esten los niveles de Key = list niveles
            Console.WriteLine("Numero de niveles: " + exposicion.Niveles.Count);
            foreach (Nivel nivel in exposicion.Niveles)
            {
                Console.WriteLine("Nivel: " + nivel.Nombre);
                if (!exposicion.Preguntas.ContainsKey(nivel))
                {
                    exposicion.Preguntas.Add(nivel, new List <Pregunta>());
                }
                for (int cnt = exposicion.Preguntas[nivel].Count; cnt < numeroDePreguntasAllenar; cnt++)
                {
                    Console.WriteLine("Numero Preguntas: " + exposicion.Preguntas[nivel].Count);
                    AñadirPregunta(nivel, exposicion);
                }
            }


            //ControladorPrincipal.SeeLevels(GetSelectedExposicion().Niveles, GetSelectedExposicion().Preguntas);
            ActualitzarListPreguntas(GetSelectedNivel());
        }