/// <summary> /// Deletes an Extract. /// </summary> /// <param name="AExtractId">ExtractId of the Extract that should get /// deleted.</param> /// <param name="AExtractNotDeletable">True if the Deletable Flag of the /// Extract if false.</param> /// <param name="AVerificationResult">Nil if all verifications are OK, /// otherwise filled with a TVerificationResult object.</param> /// <returns>True if the Extract was deleted, otherwise false.</returns> public static bool DeleteExtract(int AExtractId, out bool AExtractNotDeletable, out TVerificationResult AVerificationResult) { TDBTransaction Transaction = null; bool SubmissionOK = false; MExtractMasterTable ExtractMasterDT; Boolean ExtractNotDeletable = false; TVerificationResult VerificationResult = null; DBAccess.GDBAccessObj.GetNewOrExistingAutoTransaction(IsolationLevel.Serializable, ref Transaction, ref SubmissionOK, delegate { ExtractMasterDT = MExtractMasterAccess.LoadByPrimaryKey(AExtractId, Transaction); if (ExtractMasterDT.Rows.Count == 1) { if (ExtractMasterDT[0].Deletable) { MExtractMasterCascading.DeleteByPrimaryKey(AExtractId, Transaction, true); SubmissionOK = true; } else { ExtractNotDeletable = true; SubmissionOK = false; } } else { VerificationResult = new TVerificationResult( "TExtractsHandling.DeleteExtract", "Extract with Extract Id " + AExtractId.ToString() + "doesn't exist!", TResultSeverity.Resv_Critical); SubmissionOK = false; } }); AVerificationResult = VerificationResult; AExtractNotDeletable = ExtractNotDeletable; return(SubmissionOK); }
/// <summary> /// Deletes an Extract. /// </summary> /// <param name="AExtractId">ExtractId of the Extract that should get /// deleted.</param> /// <param name="AExtractNotDeletable">True if the Deletable Flag of the /// Extract if false.</param> /// <param name="AVerificationResult">Nil if all verifications are OK, /// otherwise filled with a TVerificationResult object.</param> /// <returns>True if the Extract was deleted, otherwise false.</returns> public static bool DeleteExtract(int AExtractId, out bool AExtractNotDeletable, out TVerificationResult AVerificationResult) { TDBTransaction WriteTransaction; MExtractMasterTable ExtractMasterDT; Boolean NewTransaction; Boolean Success = false; AVerificationResult = null; AExtractNotDeletable = false; WriteTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction( IsolationLevel.Serializable, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { ExtractMasterDT = MExtractMasterAccess.LoadByPrimaryKey(AExtractId, WriteTransaction); if (ExtractMasterDT.Rows.Count == 1) { if (ExtractMasterDT[0].Deletable) { MExtractMasterCascading.DeleteByPrimaryKey(AExtractId, WriteTransaction, true); Success = true; } else { AExtractNotDeletable = true; Success = false; } } else { AVerificationResult = new TVerificationResult( "TExtractsHandling.DeleteExtract", "Extract with Extract Id " + AExtractId.ToString() + "doesn't exist!", TResultSeverity.Resv_Critical); Success = false; } } catch (Exception Exp) { TLogging.LogAtLevel(8, "TExtractsHandling.DeleteExtract: Exception occured: " + Exp.ToString()); throw; } finally { if (Success) { if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); TLogging.LogAtLevel(8, "TExtractsHandling.DeleteExtract: committed own transaction!"); } } else { if (NewTransaction) { DBAccess.GDBAccessObj.RollbackTransaction(); TLogging.LogAtLevel(8, "TExtractsHandling.DeleteExtract: ROLLED BACK own transaction!"); } } } return(Success); }