/// <summary> /// opens Early Late Registration screen for pre selected conference /// </summary> public static void EarlyLateRegistrationsForSelectedConference(Form AParentForm) { DateTime StartDate = TRemote.MConference.Conference.WebConnectors.GetStartDate(FPartnerKey); DateTime EndDate = TRemote.MConference.Conference.WebConnectors.GetEndDate(FPartnerKey); // if one or both dates are missing for the selected conference then this screen will not open if ((StartDate == DateTime.MinValue) || (EndDate == DateTime.MinValue)) { MessageBox.Show("The selected conference is missing a start and/or an end date. " + "Go to the Conference Master Settings screen to assign a date before accessing this setup screen", String.Format("Early and Late Registrations"), MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } if (FPartnerKey > 0) { TSearchCriteria[] Search = new TSearchCriteria[1]; Search[0] = new TSearchCriteria(PcEarlyLateTable.GetConferenceKeyDBName(), FPartnerKey); TFrmEarlyLateRegistrationSetup.FPartnerKey = FPartnerKey; TFrmEarlyLateRegistrationSetup.FStartDate = StartDate; TFrmEarlyLateRegistrationSetup.FEndDate = EndDate; TFrmEarlyLateRegistrationSetup frm = new TFrmEarlyLateRegistrationSetup(AParentForm, Search); frm.Show(); } else { MessageBox.Show(ERRORMESSAGE, String.Format("Early and Late Registrations"), MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
/// constructor (use this one!) public TFrmGiftDestination(Form AParentForm, long APartnerKey) : base() { FPartnerKey = APartnerKey; TSearchCriteria[] Search = new TSearchCriteria[1]; Search[0] = new TSearchCriteria(PPartnerGiftDestinationTable.GetPartnerKeyDBName(), FPartnerKey); Initialize(AParentForm, Search); }
/// <summary> /// simple data reader; /// checks for permissions of the current user; /// </summary> /// <param name="ATablename"></param> /// <param name="ASearchCriteria">a set of search criteria</param> /// <param name="AResultTable">returns typed datatable</param> /// <returns></returns> public static bool GetData(string ATablename, TSearchCriteria[] ASearchCriteria, out TTypedDataTable AResultTable) { if (FDelegateSharedGetData != null) { return FDelegateSharedGetData(ATablename, ASearchCriteria, out AResultTable); } else { throw new InvalidOperationException("Delegate 'TSharedGetData' must be initialised before calling this Method"); } }
/// <summary> /// Will be called by TFormsList to inform any Form that is registered in TFormsList /// about any 'Forms Messages' that are broadcasted. /// </summary> /// <remarks>Theis screen 'listens' to such 'Forms Message' broadcasts by /// implementing this virtual Method. This Method will be called each time a /// 'Forms Message' broadcast occurs. /// </remarks> /// <param name="AFormsMessage">An instance of a 'Forms Message'. This can be /// inspected for parameters in the Method Body and the Form can use those to choose /// to react on the Message, or not.</param> /// <returns>Returns True if the Form reacted on the specific Forms Message, /// otherwise false.</returns> public bool ProcessFormsMessage(TFormsMessage AFormsMessage) { bool MessageProcessed = false; if ((AFormsMessage.MessageClass == TFormsMessageClassEnum.mcPersonnelCommitmentChanged) && (((IFormsMessagePartnerInterface)AFormsMessage.MessageObject).PartnerKey == FPartnerKey)) { TSearchCriteria[] Search = new TSearchCriteria[1]; Search[0] = new TSearchCriteria(PPartnerGiftDestinationTable.GetPartnerKeyDBName(), FPartnerKey); FMainDS = new TLocalMainTDS(); Ict.Common.Data.TTypedDataTable TypedTable; TRemote.MCommon.DataReader.WebConnectors.GetData(PPartnerGiftDestinationTable.GetTableDBName(), Search, out TypedTable); FMainDS.PPartnerGiftDestination.Merge(TypedTable); SetupGrid(); UpdateRecordNumberDisplay(); SelectRowInGrid(1); MessageProcessed = true; } return MessageProcessed; }
public static bool GetData(string ATablename, TSearchCriteria[] ASearchCriteria, out TTypedDataTable AResultTable) { // TODO: check access permissions for the current user bool NewTransaction = false; TDBTransaction ReadTransaction; TTypedDataTable tempTable = null; try { ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.RepeatableRead, TEnforceIsolationLevel.eilMinimum, out NewTransaction); // TODO: auto generate if (ATablename == AApSupplierTable.GetTableDBName()) { tempTable = AApSupplierAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == AApDocumentTable.GetTableDBName()) { tempTable = AApDocumentAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == ATransactionTypeTable.GetTableDBName()) { tempTable = ATransactionTypeAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == ACurrencyTable.GetTableDBName()) { tempTable = ACurrencyAccess.LoadAll(ReadTransaction); } else if (ATablename == ADailyExchangeRateTable.GetTableDBName()) { tempTable = ADailyExchangeRateAccess.LoadAll(ReadTransaction); } else if (ATablename == ACorporateExchangeRateTable.GetTableDBName()) { tempTable = ACorporateExchangeRateAccess.LoadAll(ReadTransaction); } else if (ATablename == ACurrencyLanguageTable.GetTableDBName()) { tempTable = ACurrencyLanguageAccess.LoadAll(ReadTransaction); } else if (ATablename == AFeesPayableTable.GetTableDBName()) { tempTable = AFeesPayableAccess.LoadAll(ReadTransaction); } else if (ATablename == AFeesReceivableTable.GetTableDBName()) { tempTable = AFeesReceivableAccess.LoadAll(ReadTransaction); } else if (ATablename == AAnalysisTypeTable.GetTableDBName()) { tempTable = AAnalysisTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == AGiftBatchTable.GetTableDBName()) { tempTable = AGiftBatchAccess.LoadAll(ReadTransaction); } else if (ATablename == AJournalTable.GetTableDBName()) { tempTable = AJournalAccess.LoadAll(ReadTransaction); } else if (ATablename == ALedgerTable.GetTableDBName()) { tempTable = ALedgerAccess.LoadAll(ReadTransaction); } else if (ATablename == MExtractMasterTable.GetTableDBName()) { if (ASearchCriteria == null) { tempTable = MExtractMasterAccess.LoadAll(ReadTransaction); } else { tempTable = MExtractMasterAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } } else if (ATablename == MExtractTable.GetTableDBName()) { // it does not make sense to load ALL extract rows for all extract masters so search criteria needs to be set if (ASearchCriteria != null) { tempTable = MExtractAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } } else if (ATablename == PcAttendeeTable.GetTableDBName()) { tempTable = PcAttendeeAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcConferenceCostTable.GetTableDBName()) { tempTable = PcConferenceCostAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcEarlyLateTable.GetTableDBName()) { tempTable = PcEarlyLateAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcSupplementTable.GetTableDBName()) { tempTable = PcSupplementAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcDiscountTable.GetTableDBName()) { tempTable = PcDiscountAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PInternationalPostalTypeTable.GetTableDBName()) { tempTable = PInternationalPostalTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == PtApplicationTypeTable.GetTableDBName()) { tempTable = PtApplicationTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == PMailingTable.GetTableDBName()) { tempTable = PMailingAccess.LoadAll(ReadTransaction); } else if (ATablename == PPartnerGiftDestinationTable.GetTableDBName()) { tempTable = PPartnerGiftDestinationAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PmDocumentTypeTable.GetTableDBName()) { tempTable = PmDocumentTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == SGroupTable.GetTableDBName()) { tempTable = SGroupAccess.LoadAll(ReadTransaction); } else { throw new Exception("TCommonDataReader.GetData: unknown table " + ATablename); } } catch (Exception Exp) { DBAccess.GDBAccessObj.RollbackTransaction(); TLogging.Log("TCommonDataReader.GetData exception: " + Exp.ToString(), TLoggingType.ToLogfile); TLogging.Log(Exp.StackTrace, TLoggingType.ToLogfile); throw; } finally { if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); TLogging.LogAtLevel(7, "TCommonDataReader.GetData: committed own transaction."); } } // Accept row changes here so that the Client gets 'unmodified' rows tempTable.AcceptChanges(); // return the table AResultTable = tempTable; return true; }
/// <summary> /// simple data reader; /// checks for permissions of the current user; /// </summary> /// <param name="ATablename"></param> /// <param name="ASearchCriteria">a set of search criteria</param> /// <param name="AResultTable">returns typed datatable</param> /// <returns></returns> public static bool GetData(string ATablename, TSearchCriteria[] ASearchCriteria, out TTypedDataTable AResultTable) { return TRemote.MCommon.DataReader.WebConnectors.GetData(ATablename, ASearchCriteria, out AResultTable); }
/// <summary> /// This function expects a string list of all existing columns, /// and a criteria list of values to search for. /// It will return a Where clause, using the given values. /// It does not contain the WHERE keyword. /// It uses the long form, table.fieldname /// /// </summary> /// <param name="ATableName">the table that the where clause is generated for</param> /// <param name="ASearchCriteria"></param> /// <returns>the Where Clause /// </returns> public static String GenerateWhereClauseLong(String ATableName, TSearchCriteria[] ASearchCriteria) { String ReturnValue = ""; foreach (TSearchCriteria searchcriterium in ASearchCriteria) { ReturnValue += " AND " + ATableName + '.' + searchcriterium.fieldname + ' ' + searchcriterium.comparator + " ?"; } return ReturnValue; }
/// <summary> /// This function expects an empty table that contains all existing columns, /// and search criteria. /// It will return a Where clause, using the given values. /// </summary> /// <param name="ASearchCriteria"></param> /// <returns>the Where Clause /// </returns> public static String GenerateWhereClause(TSearchCriteria[] ASearchCriteria) { String ReturnValue = ""; foreach (TSearchCriteria searchcriterium in ASearchCriteria) { if (ReturnValue.Length == 0) //first time around { ReturnValue = " WHERE "; } else { ReturnValue += " AND "; } ReturnValue += searchcriterium.fieldname + " " + searchcriterium.comparator + " ?"; } return ReturnValue; }
/// <summary> /// opens Child Discount screen for pre selected conference /// </summary> public static void ChildDiscountsForSelectedConference(Form AParentForm) { if (FPartnerKey > 0) { TSearchCriteria[] Search = new TSearchCriteria[2]; Search[0] = new TSearchCriteria(PcDiscountTable.GetConferenceKeyDBName(), FPartnerKey); Search[1] = new TSearchCriteria(PcDiscountTable.GetDiscountCriteriaCodeDBName(), "CHILD"); TFrmChildDiscountSetup.FPartnerKey = FPartnerKey; TFrmChildDiscountSetup frm = new TFrmChildDiscountSetup(AParentForm, Search); frm.Show(); } else { MessageBox.Show(ERRORMESSAGE, String.Format("Child Discounts"), MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
/// <summary> /// loads all rows matching certain search criteria into a typed data table /// </summary> /// <param name="ATableID">specify which typed table is used</param> /// <param name="ATypedTableToLoad">pre condition: has to have an object of the typed table</param> /// <param name="ASearchCriteria"></param> /// <param name="AFieldList"></param> /// <param name="ATransaction"></param> /// <param name="AOrderBy"></param> /// <param name="AStartRecord"></param> /// <param name="AMaxRecords"></param> public static void LoadUsingTemplate( short ATableID, TTypedDataTable ATypedTableToLoad, TSearchCriteria[] ASearchCriteria, StringCollection AFieldList, TDBTransaction ATransaction, StringCollection AOrderBy, int AStartRecord, int AMaxRecords) { ATypedTableToLoad = (TTypedDataTable) DBAccess.GDBAccessObj.SelectDT(ATypedTableToLoad, GenerateSelectClause(AFieldList, ATableID) + " FROM PUB_" + TTypedDataTable.GetTableNameSQL(ATableID) + GenerateWhereClause(ASearchCriteria) + GenerateOrderByClause(AOrderBy), ATransaction, GetParametersForWhereClause(ATableID, ASearchCriteria), AStartRecord, AMaxRecords); }
/// count the rows by the values of a foreign key public static int CountViaForeignKey( short ATableId, short AOtherTableId, string[] AThisFieldNames, TSearchCriteria[] ASearchCriteria, TDBTransaction ATransaction) { OdbcParameter[] ParametersArray = GetParametersForWhereClause(AOtherTableId, ASearchCriteria); return Convert.ToInt32(DBAccess.GDBAccessObj.ExecuteScalar( "SELECT COUNT(*) FROM PUB_" + TTypedDataTable.GetTableNameSQL(ATableId) + GenerateWhereClause(AThisFieldNames) + GenerateWhereClauseLong("PUB_" + TTypedDataTable.GetTableNameSQL(AOtherTableId), ASearchCriteria), ATransaction, ParametersArray)); }
/// Load via other table, using template values public static void LoadViaForeignKey( short ATableId, short AOtherTableId, TTypedDataTable ADataTable, string[] AThisFieldNames, TSearchCriteria[] ASearchCriteria, StringCollection AFieldList, TDBTransaction ATransaction, StringCollection AOrderBy, int AStartRecord, int AMaxRecords) { DBAccess.GDBAccessObj.SelectDT(ADataTable, GenerateSelectClause(AFieldList, ATableId) + " FROM PUB_" + TTypedDataTable.GetTableNameSQL(ATableId) + ", PUB_" + TTypedDataTable.GetTableNameSQL(AOtherTableId) + GenerateWhereClause(AThisFieldNames) + GenerateWhereClauseLong("PUB_" + TTypedDataTable.GetTableNameSQL(AOtherTableId), ASearchCriteria) + GenerateOrderByClause(AOrderBy), ATransaction, GetParametersForWhereClause(AOtherTableId, ASearchCriteria), AStartRecord, AMaxRecords); }
/// <summary> /// This function provides the actual parameters for the GenerateWhereClause /// </summary> /// <returns>an array of OdbcParameters /// </returns> public static OdbcParameter[] GetParametersForWhereClause(short ATableNumber, TSearchCriteria[] ASearchCriteria) { OdbcParameter[] ReturnValue = new OdbcParameter[ASearchCriteria.Length]; int Counter = 0; foreach (TSearchCriteria searchcriterium in ASearchCriteria) { ReturnValue[Counter] = TTypedDataTable.CreateOdbcParameter(ATableNumber, searchcriterium); ReturnValue[Counter].Value = searchcriterium.searchvalue; Counter = Counter + 1; } return ReturnValue; }
/// <summary> /// opens Standard Cost screen for pre selected conference /// </summary> public static void StandardCostsForSelectedConference(Form AParentForm) { if (FPartnerKey > 0) { TSearchCriteria[] Search = new TSearchCriteria[1]; Search[0] = new TSearchCriteria(PcConferenceCostTable.GetConferenceKeyDBName(), FPartnerKey); TFrmConferenceStandardCostSetup.FPartnerKey = FPartnerKey; TFrmConferenceStandardCostSetup frm = new TFrmConferenceStandardCostSetup(AParentForm, Search); frm.Show(); } else { MessageBox.Show(ERRORMESSAGE, String.Format("Conference Standard Costs"), MessageBoxButtons.OK, MessageBoxIcon.Warning); } }
public static bool DeletePartner(Int64 APartnerKey, out TVerificationResultCollection AVerificationResult) { string ShortName; TPartnerClass PartnerClass; TStdPartnerStatusCode PartnerStatusCode; bool ResultValue = false; AVerificationResult = null; ResultValue = true; TDBTransaction Transaction = null; bool SubmissionOK = false; DBAccess.GDBAccessObj.GetNewOrExistingAutoTransaction(IsolationLevel.Serializable, TEnforceIsolationLevel.eilMinimum, ref Transaction, ref SubmissionOK, delegate { ResultValue = MCommonMain.RetrievePartnerShortName(APartnerKey, out ShortName, out PartnerClass, out PartnerStatusCode, Transaction); /* s_user - delete not allowed by CanPartnerBeDeleted */ if (ResultValue) { ResultValue = DeleteEntries(PRecentPartnersTable.GetTableDBName(), PRecentPartnersTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = DeleteEntries(PPartnerGraphicTable.GetTableDBName(), PPartnerGraphicTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } /* Delete extract entries before possibly attempting to delete a */ /* location record referenced in the extract. Decrease key count */ /* in m_extract_master. */ if (ResultValue) { // first make sure that extract master tables are up to date // (decrease key count by number of rows to be deleted) MExtractMasterTable ExtractMasterTable; MExtractMasterRow ExtractMasterRow; MExtractTable ExtractTable = MExtractAccess.LoadViaPPartner(APartnerKey, Transaction); foreach (DataRow Row in ExtractTable.Rows) { ExtractMasterTable = MExtractMasterAccess.LoadByPrimaryKey(((MExtractRow)Row).ExtractId, Transaction); ExtractMasterRow = (MExtractMasterRow)ExtractMasterTable.Rows[0]; ExtractMasterRow.KeyCount = ExtractMasterRow.KeyCount - 1; MExtractMasterAccess.SubmitChanges(ExtractMasterTable, Transaction); } // now delete the actual extract entries ResultValue = DeleteEntries(MExtractTable.GetTableDBName(), MExtractTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } // Delete Partner Location. If locations were only used by this partner then also delete location record. if (ResultValue) { PPartnerLocationTable PartnerLocationTable = PPartnerLocationAccess.LoadViaPPartner(APartnerKey, Transaction); PPartnerLocationTable OtherPartnerLocationTable; PPartnerLocationRow PartnerLocationRow; PLocationRow LocationRow; PLocationTable LocationTableToDelete = new PLocationTable(); foreach (DataRow Row in PartnerLocationTable.Rows) { PartnerLocationRow = (PPartnerLocationRow)Row; OtherPartnerLocationTable = PPartnerLocationAccess.LoadViaPLocation(PartnerLocationRow.SiteKey, PartnerLocationRow.LocationKey, Transaction); // if there is only one partner left using this location (which must be this one) then delete location if ((OtherPartnerLocationTable.Count == 1) && (PartnerLocationRow.LocationKey != 0)) { LocationRow = LocationTableToDelete.NewRowTyped(); LocationRow.SiteKey = PartnerLocationRow.SiteKey; LocationRow.LocationKey = PartnerLocationRow.LocationKey; LocationTableToDelete.Rows.Add(LocationRow); } } // now first delete the partner locations ResultValue = DeleteEntries(PPartnerLocationTable.GetTableDBName(), PPartnerLocationTable.GetPartnerKeyDBName(), APartnerKey, Transaction); // and now locations if they don't refer to any partners any longer foreach (DataRow RowToDelete in LocationTableToDelete.Rows) { LocationRow = (PLocationRow)RowToDelete; PLocationAccess.DeleteByPrimaryKey(LocationRow.SiteKey, LocationRow.LocationKey, Transaction); } } if (ResultValue) { TSearchCriteria[] PartnerAttributeAccessSC = new TSearchCriteria[] { new TSearchCriteria(PPartnerAttributeTable.GetPartnerKeyDBName(), APartnerKey) }; if (PPartnerAttributeAccess.CountUsingTemplate(PartnerAttributeAccessSC, Transaction) > 0) { PPartnerAttributeAccess.DeleteUsingTemplate(PartnerAttributeAccessSC, Transaction); } } if (ResultValue) { ResultValue = ZeroEntries(PChurchTable.GetTableDBName(), PChurchTable.GetContactPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = ZeroEntries(POrganisationTable.GetTableDBName(), POrganisationTable.GetContactPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = ZeroEntries(PBankTable.GetTableDBName(), PBankTable.GetContactPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = ZeroEntries(PVenueTable.GetTableDBName(), PVenueTable.GetContactPartnerKeyDBName(), APartnerKey, Transaction); } // Delete Partner Banking Details. // If Banking Details were only used by this partner then also delete Banking Details record. if (ResultValue) { PPartnerBankingDetailsTable PartnerBankingDetailsTable = PPartnerBankingDetailsAccess.LoadViaPPartner(APartnerKey, Transaction); PPartnerBankingDetailsTable OtherPartnerBankingDetailsTable; PPartnerBankingDetailsRow PartnerBankingDetailsRow; PBankingDetailsRow BankingDetailsRow; PBankingDetailsTable BankingDetailsTableToDelete = new PBankingDetailsTable(); foreach (DataRow Row in PartnerBankingDetailsTable.Rows) { PartnerBankingDetailsRow = (PPartnerBankingDetailsRow)Row; OtherPartnerBankingDetailsTable = PPartnerBankingDetailsAccess.LoadViaPBankingDetails( PartnerBankingDetailsRow.BankingDetailsKey, Transaction); // if there is only one partner left using this banking details record (which must be this one) then delete banking details if (OtherPartnerBankingDetailsTable.Count == 1) { BankingDetailsRow = BankingDetailsTableToDelete.NewRowTyped(); BankingDetailsRow.BankingDetailsKey = PartnerBankingDetailsRow.BankingDetailsKey; BankingDetailsTableToDelete.Rows.Add(BankingDetailsRow); } } // now first delete the partner banking details ResultValue = DeleteEntries(PPartnerBankingDetailsTable.GetTableDBName(), PPartnerBankingDetailsTable.GetPartnerKeyDBName(), APartnerKey, Transaction); // and now banking details if they don't refer to any partners any longer foreach (DataRow RowToDelete in BankingDetailsTableToDelete.Rows) { BankingDetailsRow = (PBankingDetailsRow)RowToDelete; PBankingDetailsAccess.DeleteByPrimaryKey(BankingDetailsRow.BankingDetailsKey, Transaction); } } if (ResultValue) { ResultValue = DeleteEntries(PPartnerTypeTable.GetTableDBName(), PPartnerTypeTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = DeleteEntries(PPartnerRelationshipTable.GetTableDBName(), PPartnerRelationshipTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = DeleteEntries(PPartnerRelationshipTable.GetTableDBName(), PPartnerRelationshipTable.GetRelationKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = DeleteEntries(PCustomisedGreetingTable.GetTableDBName(), PCustomisedGreetingTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = DeleteEntries(PSubscriptionTable.GetTableDBName(), PSubscriptionTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } // delete reminders before contacts if (ResultValue) { ResultValue = DeleteEntries(PPartnerReminderTable.GetTableDBName(), PPartnerReminderTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } var partnerContacts = MPartner.Partner.WebConnectors.TContactsWebConnector.GetPartnerContactLogData(APartnerKey).PPartnerContact .AsEnumerable().Select(r => { var id = r.ItemArray[PPartnerContactTable.ColumnContactLogIdId]; return new { ContactLogId = id, deleteThis = !TContactsWebConnector.IsContactLogAssociatedWithMoreThanOnePartner((long)id) }; }); // Delete contact attributes before deleting contacts if (ResultValue) { String SqlStmt; foreach (var row in partnerContacts) { if (row.deleteThis) { try { // build sql statement for deletion SqlStmt = "DELETE FROM " + PPartnerContactAttributeTable.GetTableDBName() + " WHERE " + PPartnerContactAttributeTable.GetContactIdDBName() + " IN (SELECT " + PPartnerContactTable.GetContactLogIdDBName() + " FROM " + PPartnerContactTable.GetTableDBName() + " WHERE " + PPartnerContactTable.GetPartnerKeyDBName() + " = " + APartnerKey.ToString() + " AND " + PPartnerContactTable.GetContactLogIdDBName() + " = " + row.ContactLogId + ")"; DBAccess.GDBAccessObj.ExecuteNonQuery(SqlStmt, Transaction); } catch (Exception Exc) { TLogging.Log( "An Exception occured during the deletion of " + PPartnerContactAttributeTable.GetTableDBName() + " while deleting a partner: " + Environment.NewLine + Exc.ToString()); throw; } } } } if (ResultValue) { ResultValue = DeleteEntries(PPartnerContactTable.GetTableDBName(), PPartnerContactTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } // Delete any would-be orphaned ContactLog records if (ResultValue) { foreach (var r in partnerContacts.Where(p => p.deleteThis)) { PContactLogAccess.DeleteByPrimaryKey((long)r.ContactLogId, Transaction); } } if (ResultValue) { ResultValue = DeleteEntries(AEmailDestinationTable.GetTableDBName(), AEmailDestinationTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = ZeroEntries(AMotivationDetailTable.GetTableDBName(), AMotivationDetailTable.GetRecipientKeyDBName(), APartnerKey, Transaction); } /* a_recurring_gift - delete not allowed by CanPartnerBeDeleted */ /* a_recurring_gift_detail - delete not allowed by CanPartnerBeDeleted */ /* a_gift - delete not allowed by CanPartnerBeDeleted */ /* a_gift_detail - delete not allowed by CanPartnerBeDeleted */ /* a_ap_supplier - delete not allowed by CanPartnerBeDeleted */ if (ResultValue) { ResultValue = ZeroEntries(PmDocumentTable.GetTableDBName(), PmDocumentTable.GetContactPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = DeleteEntries(PDataLabelValuePartnerTable.GetTableDBName(), PDataLabelValuePartnerTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = ZeroEntries(PDataLabelValuePartnerTable.GetTableDBName(), PDataLabelValuePartnerTable.GetValuePartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = ZeroEntries(PDataLabelValueApplicationTable.GetTableDBName(), PDataLabelValueApplicationTable.GetValuePartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = DeleteEntries(PmJobAssignmentTable.GetTableDBName(), PmJobAssignmentTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = DeleteEntries(PTaxTable.GetTableDBName(), PTaxTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = DeleteEntries(PPartnerInterestTable.GetTableDBName(), PPartnerInterestTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = DeleteEntries(PPartnerMergeTable.GetTableDBName(), PPartnerMergeTable.GetMergeFromDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = DeleteEntries(PPartnerMergeTable.GetTableDBName(), PPartnerMergeTable.GetMergeToDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = DeleteEntries(PPartnerGiftDestinationTable.GetTableDBName(), PPartnerGiftDestinationTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = DeleteEntries(PPartnerCommentTable.GetTableDBName(), PPartnerCommentTable.GetPartnerKeyDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = ZeroEntries(PFoundationTable.GetTableDBName(), PFoundationTable.GetContactPartnerDBName(), APartnerKey, Transaction); } if (ResultValue) { ResultValue = ZeroEntries(PFoundationProposalTable.GetTableDBName(), PFoundationProposalTable.GetPartnerSubmittedByDBName(), APartnerKey, Transaction); } // now delete partner class specific information if (ResultValue) { switch (PartnerClass) { case TPartnerClass.FAMILY: ResultValue = DeleteFamily(APartnerKey, Transaction); break; case TPartnerClass.PERSON: ResultValue = DeletePerson(APartnerKey, Transaction); break; case TPartnerClass.UNIT: ResultValue = DeleteUnit(APartnerKey, Transaction); break; case TPartnerClass.ORGANISATION: ResultValue = DeleteOrganisation(APartnerKey, Transaction); break; case TPartnerClass.CHURCH: ResultValue = DeleteChurch(APartnerKey, Transaction); break; case TPartnerClass.BANK: ResultValue = DeleteBank(APartnerKey, Transaction); break; case TPartnerClass.VENUE: ResultValue = DeleteVenue(APartnerKey, Transaction); break; default: break; } } // finally delete p_partner record itself if (ResultValue) { ResultValue = DeleteEntries(PPartnerTable.GetTableDBName(), PPartnerTable.GetPartnerKeyDBName(), APartnerKey, Transaction); SubmissionOK = true; } }); return ResultValue; }
public static bool GetData(string ATablename, TSearchCriteria[] ASearchCriteria, out TTypedDataTable AResultTable) { // TODO: check access permissions for the current user TDBTransaction ReadTransaction = null; TTypedDataTable tempTable = null; DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction(IsolationLevel.RepeatableRead, TEnforceIsolationLevel.eilMinimum, ref ReadTransaction, delegate { // TODO: auto generate if (ATablename == AApSupplierTable.GetTableDBName()) { tempTable = AApSupplierAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == AApDocumentTable.GetTableDBName()) { tempTable = AApDocumentAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == ATransactionTypeTable.GetTableDBName()) { tempTable = ATransactionTypeAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == ACurrencyTable.GetTableDBName()) { tempTable = ACurrencyAccess.LoadAll(ReadTransaction); } else if (ATablename == ADailyExchangeRateTable.GetTableDBName()) { tempTable = ADailyExchangeRateAccess.LoadAll(ReadTransaction); } else if (ATablename == ACorporateExchangeRateTable.GetTableDBName()) { tempTable = ACorporateExchangeRateAccess.LoadAll(ReadTransaction); } else if (ATablename == ACurrencyLanguageTable.GetTableDBName()) { tempTable = ACurrencyLanguageAccess.LoadAll(ReadTransaction); } else if (ATablename == AFeesPayableTable.GetTableDBName()) { tempTable = AFeesPayableAccess.LoadAll(ReadTransaction); } else if (ATablename == AFeesReceivableTable.GetTableDBName()) { tempTable = AFeesReceivableAccess.LoadAll(ReadTransaction); } else if (ATablename == AAnalysisTypeTable.GetTableDBName()) { tempTable = AAnalysisTypeAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == AGiftBatchTable.GetTableDBName()) { tempTable = AGiftBatchAccess.LoadAll(ReadTransaction); } else if (ATablename == AJournalTable.GetTableDBName()) { tempTable = AJournalAccess.LoadAll(ReadTransaction); } else if (ATablename == ALedgerTable.GetTableDBName()) { tempTable = ALedgerAccess.LoadAll(ReadTransaction); } else if (ATablename == MExtractMasterTable.GetTableDBName()) { if (ASearchCriteria == null) { tempTable = MExtractMasterAccess.LoadAll(ReadTransaction); } else { tempTable = MExtractMasterAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } } else if (ATablename == MExtractTable.GetTableDBName()) { // it does not make sense to load ALL extract rows for all extract masters so search criteria needs to be set if (ASearchCriteria != null) { tempTable = MExtractAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } } else if (ATablename == PcAttendeeTable.GetTableDBName()) { tempTable = PcAttendeeAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcConferenceCostTable.GetTableDBName()) { tempTable = PcConferenceCostAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcEarlyLateTable.GetTableDBName()) { tempTable = PcEarlyLateAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcSupplementTable.GetTableDBName()) { tempTable = PcSupplementAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PcDiscountTable.GetTableDBName()) { tempTable = PcDiscountAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PFormTable.GetTableDBName()) { string[] columns = TTypedDataTable.GetColumnStringList(PFormTable.TableId); StringCollection fieldList = new StringCollection(); for (int i = 0; i < columns.Length; i++) { // Do not load the template document - we don't display it and it is big! if (columns[i] != PFormTable.GetTemplateDocumentDBName()) { fieldList.Add(columns[i]); } } tempTable = PFormAccess.LoadAll(fieldList, ReadTransaction); } else if (ATablename == PInternationalPostalTypeTable.GetTableDBName()) { tempTable = PInternationalPostalTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == PtApplicationTypeTable.GetTableDBName()) { tempTable = PtApplicationTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == PFormalityTable.GetTableDBName()) { tempTable = PFormalityAccess.LoadAll(ReadTransaction); } else if (ATablename == PMailingTable.GetTableDBName()) { tempTable = PMailingAccess.LoadAll(ReadTransaction); } else if (ATablename == PPartnerGiftDestinationTable.GetTableDBName()) { tempTable = PPartnerGiftDestinationAccess.LoadUsingTemplate(ASearchCriteria, ReadTransaction); } else if (ATablename == PmDocumentTypeTable.GetTableDBName()) { tempTable = PmDocumentTypeAccess.LoadAll(ReadTransaction); } else if (ATablename == SGroupTable.GetTableDBName()) { tempTable = SGroupAccess.LoadAll(ReadTransaction); } else { throw new Exception("TCommonDataReader.GetData: unknown table " + ATablename); } }); // Accept row changes here so that the Client gets 'unmodified' rows tempTable.AcceptChanges(); // return the table AResultTable = tempTable; return true; }
/// <summary> /// delete all rows matching the search criteria /// </summary> /// <param name="ATableId">specify which typed table is used</param> /// <param name="ASearchCriteria"></param> /// <param name="ATransaction"></param> public static void DeleteUsingTemplate(short ATableId, TSearchCriteria[] ASearchCriteria, TDBTransaction ATransaction) { if (0 == DBAccess.GDBAccessObj.ExecuteNonQuery(("DELETE FROM PUB_" + TTypedDataTable.GetTableNameSQL(ATableId) + GenerateWhereClause(ASearchCriteria)), ATransaction, GetParametersForWhereClause(ATableId, ASearchCriteria))) { throw new EDBSubmitException( "[TTypedDataAccess.DeleteUsingTemplate {delete all rows matching the search criteria}] Problems DELETing a row: no rows were deleted. Hint: If this can be a valid case, run one of the *Access.Count* Methods before to ensure that you don't call the present Method if there are no records to be expected!", eSubmitChangesOperations.eDelete); } }