private void MigrateUnprocessedLocations(iDB2Command db2Command) { Dictionary <string, Location> jdeLocList = new Dictionary <string, Location>(); // log.Debug("Migrating Location"); using (iDB2Transaction db2Transaction = db2Command.Connection.BeginTransaction()) { db2Command.Transaction = db2Transaction; db2Command.CommandText = string.Format("SELECT * FROM FSTLOCN WHERE SLSTAT != '{0}'", "P"); iDB2DataReader reader = db2Command.ExecuteReader(); while (reader.Read()) { Location temp = new Location(); temp.slan8 = ((string)reader["SLAN8"]).Trim(); temp.slpan8 = ((string)reader["SLPAN8"]).Trim(); temp.name = ((string)reader["SLNAME"]).Trim(); temp.addressStreet = ((string)reader["SLADDR"]).Trim(); temp.addressCity = ((string)reader["SLCITY"]).Trim(); temp.addressState = ((string)reader["SLST"]).Trim(); temp.addressPostalCode = ((string)reader["SLZIP"]).Trim(); temp.phoneNumber = ((string)reader["SLPHON"]).Trim(); temp.type = Char.Parse(((string)reader["SLACTN"]).Trim()); temp.officeIds = new int[] { Int32.Parse(((string)reader["SLMCU"]).Trim()) }; jdeLocList.Add(temp.slan8, temp); } reader.Close(); db2Command.Transaction.Dispose(); } if (jdeLocList.Count > 0) { // log.Info(string.Format("Found {0} locations for update", jdeLocList.Count)); foreach (var jde in jdeLocList) { // log.Debug("Migrating " + jde.Value.name); bool success = jde.Value.type == 'A' ? serviceTrade.AddLocation(jde.Value) : serviceTrade.UpdateLocation(jde.Value); if (success) { using (iDB2Transaction db2Transaction = db2Command.Connection.BeginTransaction(IsolationLevel.Chaos)) { db2Command.Transaction = db2Transaction; db2Command.CommandText = string.Format("UPDATE FSTLOCN SET SLSTAT = @slstat WHERE SLAN8 = @key", jde.Key); db2Command.DeriveParameters(); db2Command.Parameters["@slstat"].Value = 'P'; db2Command.Parameters["@key"].Value = jde.Key; try { db2Command.ExecuteNonQuery(); } catch (Exception ex) { // log.Error("Location update unsuccessful ", ex); } db2Command.Transaction.Dispose(); } } } } else { // log.Info("No location found for processing."); } }