public static void SaveScaling(Guid truckId) { IGINProcess ginProcess = GetGINProcess(true); if (!PostGINEditRequest(ginProcess, truckId)) { SqlTransaction transaction = null; try { transaction = ginProcess.SaveScaling(truckId); transaction.Commit(); } catch (Exception ex) { try { if (transaction != null) { transaction.Rollback(); } } catch (Exception ex2) { throw ex2; } throw ex; } } }
public System.Data.SqlClient.SqlTransaction SaveScaling(Guid truckId) { IGINProcess originalGIN = new GINProcessBLL(currentGINProcess.GINProcessInformation.TransactionId); SqlTransaction transaction = currentGINProcess.SaveScaling(truckId); //ConfirmNoConcurrency(Truck) var truckChanges = (from oTruck in originalGIN.GINProcessInformation.Trucks join cTruck in currentGINProcess.GINProcessInformation.Trucks on oTruck.TruckId equals cTruck.TruckId where oTruck.TruckId == truckId select new object[] { oTruck, cTruck, AuditTrailWrapper.ExistingRecord }); GINTruckInfo origTruck = (GINTruckInfo)truckChanges.Single()[0]; GINTruckInfo currTruck = (GINTruckInfo)truckChanges.Single()[1]; try { AuditTrailWrapper atw = new AuditTrailWrapper(AuditTrailWrapper.TruckWeighing, truckChanges.ToArray(), "GIN Process"); atw.AddChange(origTruck.GIN, currTruck.GIN, AuditTrailWrapper.ExistingRecord); atw.AddChange(origTruck.Weight, currTruck.Weight, AuditTrailWrapper.ExistingRecord); //newly added returned bags and added bags var newRBs = (from cRB in currTruck.Weight.ReturnedBags where !(from oRB in origTruck.Weight.ReturnedBags select oRB.TruckId).Contains(cRB.ReturnedBagsId) select new object[] { null, cRB, AuditTrailWrapper.NewRecord }); atw.AddChange(newRBs.ToArray()); //existing returned bags and added bags var existingRBs = (from oRB in origTruck.Weight.ReturnedBags join cRB in currTruck.Weight.ReturnedBags on oRB.ReturnedBagsId equals cRB.ReturnedBagsId select new object[] { oRB, cRB, AuditTrailWrapper.ExistingRecord }); atw.AddChange(existingRBs.ToArray()); if (!atw.Save()) { transaction.Rollback(); throw new Exception("Failed to save audit trail!"); } } catch (Exception ex) { transaction.Rollback(); throw ex; } return(transaction); }