public static int CheckPartnerCommitments(long AFromPartnerKey, long AToPartnerKey, TPartnerClass APartnerClass) { PPersonTable FromPersonTable = null; PPersonTable ToPersonTable = null; int ReturnValue = 0; TDBTransaction Transaction = DBAccess.GDBAccessObj.BeginTransaction(IsolationLevel.ReadCommitted); try { if (APartnerClass == TPartnerClass.FAMILY) { FromPersonTable = PPersonAccess.LoadViaPFamily(AFromPartnerKey, Transaction); ToPersonTable = PPersonAccess.LoadViaPFamily(AToPartnerKey, Transaction); } else if (APartnerClass == TPartnerClass.PERSON) { FromPersonTable = PPersonAccess.LoadViaPPartner(AFromPartnerKey, Transaction); ToPersonTable = PPersonAccess.LoadViaPPartner(AToPartnerKey, Transaction); } // check if from partner has commitments if (PersonHasCommitments(FromPersonTable, Transaction)) { ReturnValue = 1; // check if two persons are in same family if ((APartnerClass == TPartnerClass.PERSON) && (((PPersonRow)FromPersonTable.Rows[0]).FamilyKey == ((PPersonRow)ToPersonTable.Rows[0]).FamilyKey)) { ReturnValue = 3; } // check if to partner also has commitments else if (PersonHasCommitments(ToPersonTable, Transaction)) { ReturnValue = 2; } } } catch (Exception e) { TLogging.Log(e.ToString()); } finally { DBAccess.GDBAccessObj.RollbackTransaction(); TLogging.LogAtLevel(7, "TMergePartnersWebConnector.CheckPartnerCommitments: rollback own transaction."); } return(ReturnValue); }
/// <summary> /// Load data from db. /// Data is held in variable MainDS.PPartner and then MainDS.PLocation, PFamilyAccess etc... /// The latter is to get the additional information not present in PPartner but in dependent tables. /// </summary> /// <param name="MainDS"> /// The Datastructure which is filled with the data from the DB. /// It should be empty initially. /// </param> private static void LoadDataFromDB(ref PartnerEditTDS MainDS) { TDBTransaction Transaction = DBAccess.GDBAccessObj.BeginTransaction(IsolationLevel.Serializable); try { PPartnerAccess.LoadAll(MainDS, Transaction); TLogging.LogAtLevel(TLogging.DEBUGLEVEL_TRACE, "Read Partners from Database : " + MainDS.PPartner.Rows.Count.ToString()); TLogging.LogAtLevel(TLogging.DEBUGLEVEL_TRACE, "Now reading additional data for each Partner:"); foreach (PPartnerRow partnerRow in MainDS.PPartner.Rows) { long partnerKey = partnerRow.PartnerKey; PLocationAccess.LoadViaPPartner(MainDS, partnerKey, Transaction); PPartnerLocationAccess.LoadViaPPartner(MainDS, partnerKey, Transaction); PPartnerTypeAccess.LoadViaPPartner(MainDS, partnerKey, Transaction); PPersonAccess.LoadViaPPartner(MainDS, partnerKey, Transaction); PFamilyAccess.LoadViaPPartner(MainDS, partnerKey, Transaction); POrganisationAccess.LoadViaPPartnerPartnerKey(MainDS, partnerKey, Transaction); PUnitAccess.LoadViaPPartnerPartnerKey(MainDS, partnerKey, Transaction); UmUnitStructureAccess.LoadViaPUnitChildUnitKey(MainDS, partnerKey, Transaction); PBankAccess.LoadViaPPartnerPartnerKey(MainDS, partnerKey, Transaction); } if (TLogging.DebugLevel >= TLogging.DEBUGLEVEL_TRACE) { TLogging.Log("All in all:"); SortedList <string, int> sortedtables = new SortedList <string, int>(); sortedtables.Add("PLocation", MainDS.PLocation.Count); sortedtables.Add("PPartnerLocation", MainDS.PPartnerLocation.Count); sortedtables.Add("PPartnerType", MainDS.PPartnerType.Count); sortedtables.Add("PPerson", MainDS.PPerson.Count); sortedtables.Add("PFamily", MainDS.PFamily.Count); sortedtables.Add("POrganisation", MainDS.POrganisation.Count); foreach (KeyValuePair <string, int /*TTypedDataTable*/> pair in sortedtables) { TLogging.Log(pair.Key + " : " + pair.Value.ToString()); } } } catch (Exception e) { TLogging.Log("ExportPartners: " + e.Message); } DBAccess.GDBAccessObj.RollbackTransaction(); }
public static int CheckPartnerCommitments(long AFromPartnerKey, long AToPartnerKey, TPartnerClass APartnerClass) { PPersonTable FromPersonTable = null; PPersonTable ToPersonTable = null; int ReturnValue = 0; TDBTransaction Transaction = null; DBAccess.GDBAccessObj.BeginAutoReadTransaction(IsolationLevel.ReadCommitted, ref Transaction, delegate { if (APartnerClass == TPartnerClass.FAMILY) { FromPersonTable = PPersonAccess.LoadViaPFamily(AFromPartnerKey, Transaction); ToPersonTable = PPersonAccess.LoadViaPFamily(AToPartnerKey, Transaction); } else if (APartnerClass == TPartnerClass.PERSON) { FromPersonTable = PPersonAccess.LoadViaPPartner(AFromPartnerKey, Transaction); ToPersonTable = PPersonAccess.LoadViaPPartner(AToPartnerKey, Transaction); } // check if from partner has commitments if (PersonHasCommitments(FromPersonTable, Transaction)) { ReturnValue = 1; // check if two persons are in same family if ((APartnerClass == TPartnerClass.PERSON) && (((PPersonRow)FromPersonTable.Rows[0]).FamilyKey == ((PPersonRow)ToPersonTable.Rows[0]).FamilyKey)) { ReturnValue = 3; } // check if to partner also has commitments else if (PersonHasCommitments(ToPersonTable, Transaction)) { ReturnValue = 2; } } }); return(ReturnValue); }