/// <summary> /// Int conversion method /// </summary> /// <param name="valorConversao"></param> /// <param name="detalhes"></param> /// <returns></returns> private static int ConversaoInt(string valorConversao, RegistroBanco detalhes) { int valorConvertido = 0; try { valorConvertido = Convert.ToInt32(valorConversao.Replace('.', ',')); } catch (Exception ex) { throw new ArgumentException("Valor inválido: " + valorConversao + " " + ex.Message); } return(valorConvertido); }
/// <summary> /// Date conversion method /// </summary> /// <param name="dataConversao"></param> /// <param name="detalhes"></param> /// <returns></returns> private static DateTime ConversaoData(String dataConversao, RegistroBanco detalhes) { DateTime dataConvertida = DateTime.MinValue; if (dataConversao.Length == 23) { try { dataConvertida = new DateTime(Int32.Parse(dataConversao.Substring(0, 4)) , Int32.Parse(dataConversao.Substring(4, 2)) , Int32.Parse(dataConversao.Substring(6, 2)) , Int32.Parse(dataConversao.Substring(8, 2)) , Int32.Parse(dataConversao.Substring(10, 2)) , Int32.Parse(dataConversao.Substring(12, 2)) ); } catch (Exception ex) { throw new ArgumentException("Data inválida: " + dataConversao + " " + ex.Message); } } return(dataConvertida); }
/// <summary> /// /// OFX data reading method /// </summary> /// <param name="arquivoOFX">Path of OFX source file</param> public static RegistroBanco ExecutarLeitura(String arquivoOFX) { var arquivoXml = $"{arquivoOFX.Replace(".ofx", string.Empty)}.xml"; OfxToXml(arquivoOFX, arquivoXml); String leituraDados = ""; DetalhesTransacao detalhesTransacao = null; RegistroBanco detalhes = new RegistroBanco(); XmlTextReader xmlTransformado = new XmlTextReader(arquivoXml); try { while (xmlTransformado.Read()) { if (xmlTransformado.NodeType == XmlNodeType.EndElement) { switch (xmlTransformado.Name) { case "STMTTRN": if (detalhesTransacao != null) { detalhes.AdicionarTransacao(detalhesTransacao); detalhesTransacao = null; } break; } } if (xmlTransformado.NodeType == XmlNodeType.Element) { leituraDados = xmlTransformado.Name; switch (leituraDados) { case "STMTTRN": detalhesTransacao = new DetalhesTransacao(); break; } } if (xmlTransformado.NodeType == XmlNodeType.Text) { switch (leituraDados) { case "CODE": detalhes.Code = xmlTransformado.Value; break; case "SEVERITY": detalhes.Severity = xmlTransformado.Value; break; case "DTSERVER": detalhes.Dtserver = ConversaoData(xmlTransformado.Value, detalhes); break; case "LANGUAGE": detalhes.Language = xmlTransformado.Value; break; case "TRNUID": detalhes.Trnuid = xmlTransformado.Value; break; case "CURDEF": detalhes.Curdef = xmlTransformado.Value; break; case "BANKID": detalhes.Bankid = ConversaoInt(xmlTransformado.Value, detalhes); break; case "ACCTID": detalhes.Acctid = xmlTransformado.Value; break; case "ACCTTYPE": detalhes.Accttype = xmlTransformado.Value; break; case "DTSTART": detalhes.Dtstart = ConversaoData(xmlTransformado.Value, detalhes); break; case "DTEND": detalhes.Dtend = ConversaoData(xmlTransformado.Value, detalhes); break; case "TRNTYPE": detalhesTransacao.Trntype = xmlTransformado.Value; break; case "DTPOSTED": detalhesTransacao.Dtposted = ConversaoData(xmlTransformado.Value, detalhes); break; case "TRNAMT": detalhesTransacao.Trnamt = ConversaoDouble(xmlTransformado.Value, detalhes); break; case "MEMO": detalhesTransacao.Memo = string.IsNullOrEmpty(xmlTransformado.Value) ? "" : xmlTransformado.Value.Trim().Replace(" ", " "); break; } } } } catch (XmlException ex) { throw new FileNotFoundException("Arquivo OFX inválido : " + arquivoOFX + " " + ex.Message); } finally { xmlTransformado.Close(); } return(detalhes); }