/*********** * 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); }
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)); }
/// <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()); }