static void CheckSequenceGaps() { Log.LogInfoMessage($"[Enter] {System.Reflection.MethodBase.GetCurrentMethod().Name}"); try { using (IfxConnection connection = EstablishConnection()) using (var dataContext = new DatabaseSyncDataContext()) { var missingTransactions = dataContext.GetTransactionSequenceNrGaps(CurrentMonth, FollowingMonth); foreach (var missingtrans in missingTransactions) { try { Log.LogTrace($"Requesting {missingtrans.Lane}:{missingtrans.Sequencenr}"); IfxCommand command = connection.CreateCommand(); command.CommandText = $"SELECT * FROM p_trans WHERE ln_id='{missingtrans.Lane}' AND tx_seq_nr='{missingtrans.Sequencenr}'"; IfxDataReader dataReader = command.ExecuteReader(); while (dataReader.Read()) { Log.LogTrace($"Found {missingtrans.Lane}:{missingtrans.Sequencenr}"); var trans = new StagingTransaction(); try { int i = 0; trans.pl_id = dataReader[i].ToString().Trim(); trans.ln_id = dataReader[++i].ToString().Trim(); trans.dt_concluded = ExtractDatetimeValue(dataReader[++i]).Value; trans.tx_seq_nr = int.TryParse(dataReader[++i].ToString(), out var outInt) ? outInt : throw new InvalidDataException("Invalid transaction sequence number."); trans.ts_seq_nr = ExtractIntegerValue(dataReader[++i].ToString()); trans.us_id = dataReader[++i].ToString().Trim(); trans.ent_plz_id = dataReader[++i].ToString().Trim(); trans.ent_lane_id = dataReader[++i].ToString().Trim(); trans.dt_started = ExtractDatetimeValue(dataReader[++i]); trans.next_inc = ExtractIntegerValue(dataReader[++i].ToString()); trans.prev_inc = ExtractIntegerValue(dataReader[++i].ToString()); trans.ft_id = ExtractIntegerValue(dataReader[++i].ToString()); trans.pg_group = ExtractIntegerValue(dataReader[++i].ToString()); trans.cg_group = ExtractIntegerValue(dataReader[++i].ToString()); trans.vg_group = dataReader[++i].ToString().Trim(); trans.mvc = dataReader[++i].ToString().Trim(); trans.avc = dataReader[++i].ToString().Trim(); trans.svc = dataReader[++i].ToString().Trim(); trans.loc_curr = dataReader[++i].ToString().Trim(); trans.loc_value = dataReader.GetIfxDecimal(++i).ToString(); trans.ten_curr = dataReader[++i].ToString().Trim(); trans.ten_value = dataReader.GetIfxDecimal(++i).ToString(); trans.loc_change = dataReader.GetIfxDecimal(++i).ToString(); trans.variance = dataReader.GetIfxDecimal(++i).ToString(); trans.er_id = ExtractIntegerValue(dataReader[++i].ToString()); trans.pm_id = dataReader[++i].ToString().Trim(); trans.card_nr = dataReader[++i].ToString().Trim(); trans.mask_nr = dataReader[++i].ToString().Trim(); trans.bin_nr = dataReader[++i].ToString().Trim(); trans.serv_code = dataReader[++i].ToString().Trim(); trans.ca_id = dataReader[++i].ToString().Trim(); trans.ct_id = dataReader[++i].ToString().Trim(); trans.it_id = dataReader[++i].ToString().Trim(); trans.sec_card_nr = dataReader[++i].ToString().Trim(); trans.lm_id = dataReader[++i].ToString().Trim(); trans.as_id = dataReader[++i].ToString().Trim(); trans.reg_nr = dataReader[++i].ToString().Trim(); trans.vouch_nr = ExtractIntegerValue(dataReader[++i].ToString()); trans.ac_nr = dataReader[++i].ToString().Trim(); trans.rec_nr = dataReader[++i].ToString().Trim(); trans.tick_nr = dataReader[++i].ToString().Trim(); trans.bp_id = ExtractIntegerValue(dataReader[++i].ToString()); trans.fg_id = ExtractIntegerValue(dataReader[++i].ToString()); trans.dg_id = ExtractIntegerValue(dataReader[++i].ToString()); trans.rd_id = dataReader[++i].ToString().Trim(); trans.rep_indic = dataReader[++i].ToString().Trim(); trans.maint_indic = dataReader[++i].ToString().Trim(); trans.req_indic = ExtractIntegerValue(dataReader[++i].ToString()); trans.iv_prt_indic = dataReader[++i].ToString().Trim(); trans.ts_dt_started = ExtractDatetimeValue(dataReader[++i]); trans.iv_nr = ExtractIntegerValue(dataReader[++i].ToString()); trans.td_id = ExtractIntegerValue(dataReader[++i].ToString()); trans.avc_seq_nr = ExtractIntegerValue(dataReader[++i].ToString()); trans.update_us_id = dataReader[++i].ToString().Trim(); trans.card_bank = dataReader[++i].ToString().Trim(); trans.card_ac_nr = dataReader[++i].ToString().Trim(); trans.tg_mfg_id = dataReader[++i].ToString().Trim(); trans.tg_post_bal = dataReader.GetIfxDecimal(++i).ToString(); trans.tg_reader = dataReader[++i].ToString().Trim(); trans.tg_us_cat = dataReader[++i].ToString().Trim(); trans.tg_card_type = dataReader[++i].ToString().Trim(); trans.tg_serv_prov_id = dataReader[++i].ToString().Trim(); trans.tg_issuer = dataReader[++i].ToString().Trim(); trans.tg_tx_seq_nr = ExtractIntegerValue(dataReader[++i].ToString()); trans.etc_context_mrk = dataReader[++i].ToString().Trim(); trans.etc_manufac_id = ExtractIntegerValue(dataReader[++i].ToString()); trans.etc_beacon_id = ExtractIntegerValue(dataReader[++i].ToString()); trans.etc_contract_pv = dataReader[++i].ToString().Trim(); trans.avc_dt_concluded = ExtractDatetimeValue(dataReader[++i]); trans.avc_status = dataReader[++i].ToString().Trim(); trans.anpr_vln = dataReader[++i].ToString().Trim(); trans.anpr_conf = ExtractIntegerValue(dataReader[++i].ToString()); trans.lvc = dataReader[++i].ToString().Trim(); trans.inc_ind = ExtractIntegerValue(dataReader[++i].ToString()); trans.id_vl = dataReader[++i].ToString().Trim(); trans.vl_vln = dataReader[++i].ToString().Trim(); trans.anpr_seq_nr = ExtractIntegerValue(dataReader[++i].ToString()); if (!dataContext.ImportedTransactions.Any(x => x.ln_id == trans.ln_id && x.tx_seq_nr == trans.tx_seq_nr && x.dt_concluded == trans.dt_concluded)) { dataContext.ImportedTransactions.Insert(trans); } else { Log.LogTrace($"Trans already exists {trans.ln_id} : {trans.tx_seq_nr} : {trans.dt_concluded}"); } } catch (Exception ex) { Log.LogException(ex); } } dataContext.Save(); dataReader.Close(); } catch (Exception e) { Console.WriteLine(e); } } } } catch (Exception ex) { Log.LogException(ex); } Log.LogInfoMessage($"[Exit] {System.Reflection.MethodBase.GetCurrentMethod().Name}"); }