Example #1
0
        /**
         * @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);
        }
Example #2
0
        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);
        }
Example #3
0
        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());
        }