private void ExecuteDelete(object obj) { if (MessageBox.Show("You are about to delete selected Staff. Do you really want to proceed?", MessageBoxCaption, MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No) { return; } try { using (SqlConnection Conn = new SqlConnection(GlobalClass.TConnectionString)) { Conn.Open(); using (SqlTransaction tran = Conn.BeginTransaction()) { string Remarks = Newtonsoft.Json.JsonConvert.SerializeObject(Conn.Query <Shift>("SELECT * FROM tblStaff WHERE BARCODE = @BARCODE", staff, tran).First()); staff.Delete(tran); GlobalClass.SetUserActivityLog(tran, "Staff Registration", "Delete", WorkDetail: "BARCODE : " + staff.BARCODE, Remarks: Remarks); tran.Commit(); } MessageBox.Show("Staff Deleted successfully.", MessageBoxCaption, MessageBoxButton.OK, MessageBoxImage.Information); StaffList.Remove(StaffList.First(x => x.BARCODE == staff.BARCODE)); ExecuteUndo(null); } } catch (SqlException ex) { if (ex.Number == 547) { MessageBox.Show("Selected Staff cannot be deleted because it has already been linked to another transaction.", MessageBoxCaption, MessageBoxButton.OK, MessageBoxImage.Hand); } else { MessageBox.Show(ex.Number + " : " + ex.Message, MessageBoxCaption, MessageBoxButton.OK, MessageBoxImage.Error); } } catch (Exception ex) { MessageBox.Show(ex.Message, MessageBoxCaption, MessageBoxButton.OK, MessageBoxImage.Error); } }