/** * @fn public void OrdenarBigFish(List<string[]> arrDesordenado) * * @brief Ordena un excel desordenado * * @author WINMACROS * @date 14/07/2017 * * @param arrDesordenado Excel a ordenar. */ public void OrdenarBigFish(List <string[]> arrDesordenado) { bool hubo_cambio; double monto, montoSigiente; int k = 0; string[] CamposSigientes, Campos, temp; int pos = arrDesordenado.Count - 1; //Guarda en pos la longitud del array do { hubo_cambio = false; for (int i = 0; i < pos; i++) { Campos = arrDesordenado[i]; CamposSigientes = arrDesordenado[i + 1]; if (Campos.Count() == 29 && CamposSigientes.Count() == 29) { if (double.TryParse(Campos[7], out monto) && double.TryParse(CamposSigientes[7], out montoSigiente)) { if (monto < montoSigiente) { temp = arrDesordenado[i]; arrDesordenado[i] = arrDesordenado[i + 1]; arrDesordenado[i + 1] = temp; hubo_cambio = true; k = i; } } } } pos = k; }while (hubo_cambio); }
public override List <Error> Validar() { var errores = new List <Error>(); // Validacion para ver si tenemos campos en la tabla if (Campos.Count <= 0) { errores.Add(new Error(TipoError.Critico, Posicion, string.Format( "No pudimos encontrar la tabla de la columna \"{0}\", verifique que la estructura del formato no haya sido alterada.", Nombre))); return(errores); } // Validacion para comprobar que la tabla solo tenga 1 campo tipo IdentificadorTabla (Columna ID en Excel) if (Campos.Count(p => p is IdentificadorTabla) != 1) { errores.Add(new Error(TipoError.Critico, Posicion, string.Format( "No pudimos encontrar el identificador de la tabla para la tabla de la columna \"{0}\", verifique que la estructura del formato no haya sido alterada.", Nombre))); return(errores); } // Validar campos de la tabla foreach (var campo in Campos) { errores.AddRange(campo.Validar()); } // Ejecutar las validaciones de la base (ID, Nombre y Registros) errores.AddRange(base.Validar()); return(errores); }
public string HaciaXML() { var ordenarCamposPorTipo = Convert.ToBoolean(ConfigurationManager.AppSettings.Get("OrdenarCamposPorTipo")); var plantillaFormato = Template.Parse(File.ReadAllText("SIPOT/Plantillas/Formato.xml")); var plantillaCampo = Template.Parse(File.ReadAllText("SIPOT/Plantillas/Campo.xml")); var tiposCampo = new List <TipoCampo>(); if (ordenarCamposPorTipo) { tiposCampo.AddRange(Enum.GetValues(typeof(TipoCampo)).Cast <TipoCampo>().ToList()); } else { // ReSharper disable once LoopCanBePartlyConvertedToQuery foreach (var campo in Campos) { var tipoCampoActual = campo.Tipo; if (tiposCampo.Contains(tipoCampoActual)) { continue; } tiposCampo.Add(tipoCampoActual); } } var strCamposFormato = new StringBuilder(); foreach (var tipoCampo in tiposCampo) { var tipoCampoActual = tipoCampo; var configuracionesXML = Campo.FabricarPorTipo(tipoCampoActual).GetType().GetCustomAttribute(typeof(ConfiguracionesXML), false) as ConfiguracionesXML; if (configuracionesXML == null) { Debug.WriteLine("Error al obtener las configuraciones xml de {0}", tipoCampoActual.Descripcion()); continue; } if (!configuracionesXML.Procesar) { continue; } if (Campos.Count(campo => campo.Tipo.Equals(tipoCampoActual)) <= 0) { continue; } var strCamposPorTipo = new StringBuilder(); // ReSharper disable once LoopCanBePartlyConvertedToQuery foreach (var campo in Campos.Where(campo => campo.Tipo.Equals(tipoCampoActual))) { var salidaXML = campo.HaciaXML(); if (salidaXML.Length <= 0) { continue; } strCamposPorTipo.Append(salidaXML); strCamposPorTipo.Append("\n"); } // Eliminar ultimo "\n" Genericos.EliminarUltimoCaracter(strCamposPorTipo); strCamposFormato.Append(plantillaCampo.Render(Hash.FromAnonymousObject( new { nombre = configuracionesXML.NombreCampo, registros = strCamposPorTipo.ToString() } ))); strCamposFormato.Append("\n"); } // Eliminar ultimo "\n" Genericos.EliminarUltimoCaracter(strCamposFormato); var formato = new StringBuilder(); formato.Append(plantillaFormato.Render(Hash.FromAnonymousObject( new { id = ID, nombre = Nombre, campos = strCamposFormato.ToString() } ))); return(formato.ToString()); }