private Dictionary <Int32, CaseBusiness.ISO.MISO8583.Parsing.FieldParseInfo> MontaListaVar(DataTable dt, String track) { Dictionary <Int32, CaseBusiness.ISO.MISO8583.Parsing.FieldParseInfo> lista = new Dictionary <Int32, CaseBusiness.ISO.MISO8583.Parsing.FieldParseInfo>(); for (int i = 0; i < dt.Rows.Count; i++) { Int32 existe = 0; String trackBusca = dt.Rows[i]["Track"].ToString().Trim(); Boolean inicio = trackBusca.StartsWith(track + ','); if (inicio) { existe = trackBusca.IndexOf(trackBusca, 0); } if (inicio) { CaseBusiness.ISO.MISO8583.Parsing.FieldParseInfo fpi = null; fpi = new CaseBusiness.ISO.MISO8583.Parsing.FieldParseInfo( (CaseBusiness.ISO.MISO8583.IsoType)Enum.Parse(typeof(CaseBusiness.ISO.MISO8583.IsoType), dt.Rows[i]["TipoDados"].ToString()), dt.Rows[i]["Tamanho"] == DBNull.Value ? 0 : Convert.ToInt32(dt.Rows[i]["Tamanho"]), Convert.ToBoolean(dt.Rows[i]["Obrigatorio"]), (CaseBusiness.ISO.MISO8583.TypeElement)Enum.Parse(typeof(CaseBusiness.ISO.MISO8583.TypeElement), dt.Rows[i]["TipoCampo"].ToString().ToUpper().Equals("FIELD") ? "1" : "3"), MontaListaVar(dt, trackBusca), dt.Rows[i]["TamanhoId"] == DBNull.Value ? 0 : Convert.ToInt32(dt.Rows[i]["TamanhoId"]), dt.Rows[i]["TamanhoTamanho"] == DBNull.Value ? 0 : Convert.ToInt32(dt.Rows[i]["TamanhoTamanho"]) ); //lista. lista.Add(Convert.ToInt32(dt.Rows[i]["NumeroCampo"]), fpi); if (fpi.SubDataElements_Fields.Count > 0) { i = i + QuantidadeItens(fpi.SubDataElements_Fields); } } } return(lista); }
public ConcurrentDictionary <Int32, CaseBusiness.ISO.MISO8583.Parsing.FieldParseInfo> ListarMapaVar(String interfaceHeader, String tipoFormato) { DataTable dtInterfaceDetalhe = null; ConcurrentDictionary <Int32, CaseBusiness.ISO.MISO8583.Parsing.FieldParseInfo> retorno = new ConcurrentDictionary <Int32, CaseBusiness.ISO.MISO8583.Parsing.FieldParseInfo>(); try { if (ModoEntidadeOnly) { throw new ApplicationException("Esta Instância da classe MensagemInterfaceDetalhe está operando em Modo Entidade Only"); } acessoDadosBase.AddParameter("@MSGITFHEAD_ID", interfaceHeader.Trim()); dtInterfaceDetalhe = acessoDadosBase.ExecuteDataSet(CommandType.StoredProcedure, "prMSGITFDET_SEL_LISTAR_MAPA").Tables[0]; // Renomear Colunas RenomearColunas(ref dtInterfaceDetalhe); //Montar retono for (int i = 0; i < dtInterfaceDetalhe.Rows.Count; i++) { if (dtInterfaceDetalhe.Rows[i]["Track"].ToString().Split(',').Length == 1) //Se campo não tiver campos com separação com virgula (,) no track significa que ele é um campo no 1º nível { CaseBusiness.ISO.MISO8583.Parsing.FieldParseInfo fpi = null; CaseBusiness.ISO.MISO8583.Parsing.ConfigParser.Base baseCodificacao = ISO.MISO8583.Parsing.ConfigParser.Base.Decimal; switch (dtInterfaceDetalhe.Rows[i]["TipoBase"].ToString()) { case "BIN": baseCodificacao = ISO.MISO8583.Parsing.ConfigParser.Base.Binary; break; case "OCT": baseCodificacao = ISO.MISO8583.Parsing.ConfigParser.Base.Octal; break; case "DEC": baseCodificacao = ISO.MISO8583.Parsing.ConfigParser.Base.Decimal; break; case "HEX": baseCodificacao = ISO.MISO8583.Parsing.ConfigParser.Base.Hexadecimal; break; case "B64": baseCodificacao = ISO.MISO8583.Parsing.ConfigParser.Base.B64; break; } fpi = new CaseBusiness.ISO.MISO8583.Parsing.FieldParseInfo( (CaseBusiness.ISO.MISO8583.IsoType)Enum.Parse(typeof(CaseBusiness.ISO.MISO8583.IsoType), dtInterfaceDetalhe.Rows[i]["TipoDados"].ToString()), dtInterfaceDetalhe.Rows[i]["Tamanho"] == DBNull.Value ? 0 : Convert.ToInt32(dtInterfaceDetalhe.Rows[i]["Tamanho"]), Convert.ToBoolean(dtInterfaceDetalhe.Rows[i]["Obrigatorio"]), (CaseBusiness.ISO.MISO8583.TypeElement)Enum.Parse(typeof(CaseBusiness.ISO.MISO8583.TypeElement), dtInterfaceDetalhe.Rows[i]["TipoCampo"].ToString().ToUpper().Equals("FIELD") ? "1" : "3"), MontaListaVar(dtInterfaceDetalhe, dtInterfaceDetalhe.Rows[i]["Track"].ToString().Trim()), baseCodificacao ); retorno.TryAdd(Convert.ToInt32(dtInterfaceDetalhe.Rows[i]["NumeroCampo"]), fpi); } } } catch (Exception ex) { CaseBusiness.Framework.Log.Log.Logar(CaseBusiness.Framework.TipoLog.Erro, ex.Message, ex.StackTrace, "", "", DateTime.Now, CaseBusiness.Framework.Configuracao.Configuracao.Aplicacao, CaseBusiness.Framework.Tela.Nenhum, 0); throw; } return(retorno); }