Beispiel #1
0
        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();
        }
Beispiel #3
0
        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);
        }