コード例 #1
0
ファイル: Types.cs プロジェクト: jsuen123/openpetragit
        /// <summary>
        /// convert partner status from string to enum
        /// </summary>
        /// <param name="APartnerStatusCode"></param>
        /// <returns></returns>
        public static TStdPartnerStatusCode StdPartnerStatusCodeStringToEnum(String APartnerStatusCode)
        {
            // just to have a default
            TStdPartnerStatusCode ReturnValue = TStdPartnerStatusCode.spscACTIVE;

            if (APartnerStatusCode == "ACTIVE")
            {
                ReturnValue = TStdPartnerStatusCode.spscACTIVE;
            }
            else if (APartnerStatusCode == "INACTIVE")
            {
                ReturnValue = TStdPartnerStatusCode.spscINACTIVE;
            }
            else if (APartnerStatusCode == "DIED")
            {
                ReturnValue = TStdPartnerStatusCode.spscDIED;
            }
            else if (APartnerStatusCode == "MERGED")
            {
                ReturnValue = TStdPartnerStatusCode.spscMERGED;
            }
            else if (APartnerStatusCode == "PRIVATE")
            {
                ReturnValue = TStdPartnerStatusCode.spscACTIVE;
            }

            return(ReturnValue);
        }
コード例 #2
0
ファイル: Main.cs プロジェクト: jsuen123/openpetragit
        /// <summary>
        /// Retrieves the Partner ShortName, the PartnerClass and PartnerStatus.
        /// </summary>
        /// <param name="APartnerKey">PartnerKey to identify the Partner.</param>
        /// <param name="APartnerShortName">Returns the ShortName.</param>
        /// <param name="APartnerClass">Returns the PartnerClass (FAMILY, ORGANISATION, etc).</param>
        /// <param name="APartnerStatus">Returns the PartnerStatus (eg. ACTIVE, DIED).</param>
        /// <returns>True if partner was found, otherwise false.</returns>
        public static Boolean RetrievePartnerShortName(Int64 APartnerKey,
                                                       out String APartnerShortName,
                                                       out TPartnerClass APartnerClass,
                                                       out TStdPartnerStatusCode APartnerStatus)
        {
            bool           NewTransaction = false;
            bool           Result         = false;
            TDBTransaction ReadTransaction;

            TPartnerClass         tmpPartnerClass  = new TPartnerClass();
            TStdPartnerStatusCode tmpPartnerStatus = new TStdPartnerStatusCode();
            string tmpPartnerShortName             = "";

            if (APartnerKey != 0)
            {
                try
                {
                    ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted,
                                                                                        TEnforceIsolationLevel.eilMinimum,
                                                                                        out NewTransaction);

                    Result = RetrievePartnerShortName(APartnerKey,
                                                      out tmpPartnerShortName,
                                                      out tmpPartnerClass,
                                                      out tmpPartnerStatus,
                                                      ReadTransaction);

                    if (NewTransaction)
                    {
                        DBAccess.GDBAccessObj.CommitTransaction();
                        TLogging.LogAtLevel(7, "RetrievePartnerShortName: committed own transaction.");
                    }
                }
                catch (Exception)
                {
                    TLogging.Log(String.Format("Problem retrieveing partner short name for Partner {0}", APartnerKey));
                    TLogging.LogStackTrace(TLoggingType.ToLogfile);
                }
            }
            else
            {
                APartnerClass = new TPartnerClass();

                Result = true;                //partner key key 0 should be valid
            }

            APartnerShortName = tmpPartnerShortName;
            APartnerClass     = tmpPartnerClass;
            APartnerStatus    = tmpPartnerStatus;

            return(Result);
        }
コード例 #3
0
ファイル: Main.cs プロジェクト: js1987/openpetragit
        /// <summary>
        /// Retrieves the Partner ShortName, the PartnerClass and PartnerStatus.
        /// </summary>
        /// <param name="APartnerKey">PartnerKey to identify the Partner.</param>
        /// <param name="APartnerShortName">Returns the ShortName.</param>
        /// <param name="APartnerClass">Returns the PartnerClass (FAMILY, ORGANISATION, etc).</param>
        /// <param name="APartnerStatus">Returns the PartnerStatus (eg. ACTIVE, DIED).</param>
        /// <returns>True if partner was found, otherwise false.</returns>
        public static Boolean RetrievePartnerShortName(Int64 APartnerKey,
            out String APartnerShortName,
            out TPartnerClass APartnerClass,
            out TStdPartnerStatusCode APartnerStatus)
        {
            bool NewTransaction = false;
            bool Result = false;
            TDBTransaction ReadTransaction;

            TPartnerClass tmpPartnerClass = new TPartnerClass();
            TStdPartnerStatusCode tmpPartnerStatus = new TStdPartnerStatusCode();
            string tmpPartnerShortName = "";

            if (APartnerKey != 0)
            {
                try
                {
                    ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted,
                        TEnforceIsolationLevel.eilMinimum,
                        out NewTransaction);

                    Result = RetrievePartnerShortName(APartnerKey,
                        out tmpPartnerShortName,
                        out tmpPartnerClass,
                        out tmpPartnerStatus,
                        ReadTransaction);

                    if (NewTransaction)
                    {
                        DBAccess.GDBAccessObj.CommitTransaction();
                        TLogging.LogAtLevel(7, "RetrievePartnerShortName: committed own transaction.");
                    }
                }
                catch (Exception)
                {
                    TLogging.Log(String.Format("Problem retrieveing partner short name for Partner {0}", APartnerKey));
                    TLogging.LogStackTrace(TLoggingType.ToLogfile);
                }
            }
            else
            {
                APartnerClass = new TPartnerClass();

                Result = true;                //partner key key 0 should be valid
            }

            APartnerShortName = tmpPartnerShortName;
            APartnerClass = tmpPartnerClass;
            APartnerStatus = tmpPartnerStatus;

            return Result;
        }
コード例 #4
0
ファイル: Helper.cs プロジェクト: lulzzz/openpetra
 /// <summary>
 /// Verifies the existence of a Partner.
 /// </summary>
 /// <param name="APartnerKey">PartnerKey of Partner to find the short name for</param>
 /// <param name="AValidPartnerClasses">Pass in a Set of valid PartnerClasses that the
 ///  Partner is allowed to have (eg. [PERSON, FAMILY], or an empty Set ( [] ).</param>
 /// <param name="APartnerExists">True if the Partner exists in the database or if PartnerKey is 0.</param>
 /// <param name="APartnerShortName">ShortName for the found Partner ('' if Partner
 ///  doesn't exist or PartnerKey is 0)</param>
 /// <param name="APartnerClass">Partner Class of the found Partner (FAMILY if Partner
 ///  doesn't exist or PartnerKey is 0)</param>
 /// <param name="APartnerStatus">Partner Status</param>
 /// <returns>true if Partner was found in DB (except if AValidPartnerClasses isn't
 ///  an empty Set and the found Partner isn't of a PartnerClass that is in the
 ///  Set) or PartnerKey is 0, otherwise false</returns>
 public static bool VerifyPartner(Int64 APartnerKey, TPartnerClass[] AValidPartnerClasses, out bool APartnerExists,
     out String APartnerShortName, out TPartnerClass APartnerClass, out TStdPartnerStatusCode APartnerStatus)
 {
     if (FDelegateVerifyPartner != null)
     {
         return FDelegateVerifyPartner(APartnerKey, AValidPartnerClasses, out APartnerExists, out APartnerShortName,
             out APartnerClass, out APartnerStatus);
     }
     else
     {
         throw new InvalidOperationException("Delegate 'TVerifyPartner' must be initialised before calling this Method");
     }
 }
コード例 #5
0
        /// <summary>
        /// Retrieves the Partner ShortName, the PartnerClass and PartnerStatus.
        /// </summary>
        /// <param name="APartnerKey">PartnerKey to identify the Partner.</param>
        /// <param name="APartnerShortName">Returns the ShortName.</param>
        /// <param name="APartnerClass">Returns the PartnerClass (FAMILY, ORGANISATION, etc).</param>
        /// <param name="APartnerStatus">Returns the PartnerStatus (eg. ACTIVE, DIED).</param>
        /// <param name="ATransaction">Open DB Transaction.</param>
        /// <returns>True if partner was found, otherwise false.</returns>
        public static Boolean RetrievePartnerShortName(Int64 APartnerKey,
                                                       out String APartnerShortName,
                                                       out TPartnerClass APartnerClass,
                                                       out TStdPartnerStatusCode APartnerStatus,
                                                       TDBTransaction ATransaction)
        {
            Boolean          ReturnValue;
            StringCollection RequiredColumns;
            PPartnerTable    PartnerTable;

            // initialise out Arguments
            APartnerShortName = "";

            // Default. This is not really correct but the best compromise if PartnerKey is 0 or Partner isn't found since we have an enum here.
            APartnerClass = TPartnerClass.FAMILY;

            // Default. This is not really correct but the best compromise if PartnerKey is 0 or Partner isn't found since we have an enum here.
            APartnerStatus = TStdPartnerStatusCode.spscINACTIVE;

            if (APartnerKey != 0)
            {
                // only some fields are needed
                RequiredColumns = new StringCollection();
                RequiredColumns.Add(PPartnerTable.GetPartnerShortNameDBName());
                RequiredColumns.Add(PPartnerTable.GetPartnerClassDBName());
                RequiredColumns.Add(PPartnerTable.GetStatusCodeDBName());

                PartnerTable = PPartnerAccess.LoadByPrimaryKey(APartnerKey, RequiredColumns, ATransaction, null, 0, 0);

                if (PartnerTable.Rows.Count == 0)
                {
                    ReturnValue = false;
                }
                else
                {
                    // since we loaded by primary key there must just be one partner row
                    APartnerShortName = PartnerTable[0].PartnerShortName;
                    APartnerClass     = SharedTypes.PartnerClassStringToEnum(PartnerTable[0].PartnerClass);

                    APartnerStatus = SharedTypes.StdPartnerStatusCodeStringToEnum(PartnerTable[0].StatusCode);
                    ReturnValue    = true;
                }
            }
            else
            {
                // Return result as valid if Partner Key is 0.
                ReturnValue = true;
            }

            return(ReturnValue);
        }
コード例 #6
0
 /// <summary>
 /// Verifies the existence of a Partner.
 /// </summary>
 /// <param name="APartnerKey">PartnerKey of Partner to find the short name for</param>
 /// <param name="AValidPartnerClasses">Pass in a Set of valid PartnerClasses that the
 ///  Partner is allowed to have (eg. [PERSON, FAMILY], or an empty Set ( [] ).</param>
 /// <param name="APartnerExists">True if the Partner exists in the database or if PartnerKey is 0.</param>
 /// <param name="APartnerShortName">ShortName for the found Partner ('' if Partner
 ///  doesn't exist or PartnerKey is 0)</param>
 /// <param name="APartnerClass">Partner Class of the found Partner (FAMILY if Partner
 ///  doesn't exist or PartnerKey is 0)</param>
 /// <param name="APartnerStatus">Partner Status</param>
 /// <returns>true if Partner was found in DB (except if AValidPartnerClasses isn't
 ///  an empty Set and the found Partner isn't of a PartnerClass that is in the
 ///  Set) or PartnerKey is 0, otherwise false</returns>
 public static Boolean VerifyPartner(Int64 APartnerKey,
                                     TPartnerClass[] AValidPartnerClasses,
                                     out bool APartnerExists,
                                     out String APartnerShortName,
                                     out TPartnerClass APartnerClass,
                                     out TStdPartnerStatusCode APartnerStatus)
 {
     return(TRemote.MPartner.Partner.ServerLookups.WebConnectors.VerifyPartner(APartnerKey,
                                                                               AValidPartnerClasses,
                                                                               out APartnerExists,
                                                                               out APartnerShortName,
                                                                               out APartnerClass,
                                                                               out APartnerStatus));
 }
コード例 #7
0
        /// <summary>
        /// Retrieves the Partner ShortName, the PartnerClass and PartnerStatus.
        /// </summary>
        /// <param name="APartnerKey">PartnerKey to identify the Partner.</param>
        /// <param name="APartnerShortName">Returns the ShortName.</param>
        /// <param name="APartnerClass">Returns the PartnerClass (FAMILY, ORGANISATION, etc).</param>
        /// <param name="APartnerStatus">Returns the PartnerStatus (eg. ACTIVE, DIED).</param>
        /// <returns>True if partner was found, otherwise false.</returns>
        public static Boolean RetrievePartnerShortName(Int64 APartnerKey,
                                                       out String APartnerShortName,
                                                       out TPartnerClass APartnerClass,
                                                       out TStdPartnerStatusCode APartnerStatus)
        {
            bool Result = false;

            TPartnerClass         tmpPartnerClass  = new TPartnerClass();
            TStdPartnerStatusCode tmpPartnerStatus = new TStdPartnerStatusCode();
            string tmpPartnerShortName             = "";

            if (APartnerKey != 0)
            {
                TDBTransaction ReadTransaction = null;

                DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction(IsolationLevel.ReadCommitted,
                                                                          TEnforceIsolationLevel.eilMinimum,
                                                                          ref ReadTransaction,
                                                                          delegate
                {
                    Result = RetrievePartnerShortName(APartnerKey,
                                                      out tmpPartnerShortName,
                                                      out tmpPartnerClass,
                                                      out tmpPartnerStatus,
                                                      ReadTransaction);
                });
            }
            else
            {
                APartnerClass = new TPartnerClass();

                Result = true;                //partner key key 0 should be valid
            }

            APartnerShortName = tmpPartnerShortName;
            APartnerClass     = tmpPartnerClass;
            APartnerStatus    = tmpPartnerStatus;

            return(Result);
        }
コード例 #8
0
ファイル: Main.cs プロジェクト: Davincier/openpetra
        /// <summary>
        /// Retrieves the Partner ShortName, the PartnerClass and PartnerStatus.
        /// </summary>
        /// <param name="APartnerKey">PartnerKey to identify the Partner.</param>
        /// <param name="APartnerShortName">Returns the ShortName.</param>
        /// <param name="APartnerClass">Returns the PartnerClass (FAMILY, ORGANISATION, etc).</param>
        /// <param name="APartnerStatus">Returns the PartnerStatus (eg. ACTIVE, DIED).</param>
        /// <returns>True if partner was found, otherwise false.</returns>
        public static Boolean RetrievePartnerShortName(Int64 APartnerKey,
            out String APartnerShortName,
            out TPartnerClass APartnerClass,
            out TStdPartnerStatusCode APartnerStatus)
        {
            bool Result = false;

            TPartnerClass tmpPartnerClass = new TPartnerClass();
            TStdPartnerStatusCode tmpPartnerStatus = new TStdPartnerStatusCode();
            string tmpPartnerShortName = "";

            if (APartnerKey != 0)
            {
                TDBTransaction ReadTransaction = null;

                DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction(IsolationLevel.ReadCommitted,
                    TEnforceIsolationLevel.eilMinimum,
                    ref ReadTransaction,
                    delegate
                    {
                        Result = RetrievePartnerShortName(APartnerKey,
                            out tmpPartnerShortName,
                            out tmpPartnerClass,
                            out tmpPartnerStatus,
                            ReadTransaction);
                    });
            }
            else
            {
                APartnerClass = new TPartnerClass();

                Result = true;                //partner key key 0 should be valid
            }

            APartnerShortName = tmpPartnerShortName;
            APartnerClass = tmpPartnerClass;
            APartnerStatus = tmpPartnerStatus;

            return Result;
        }
コード例 #9
0
ファイル: Extracts.cs プロジェクト: merbst/openpetra
        /// <summary>
        /// extend an extract from a list of best addresses
        /// </summary>
        /// <param name="AExtractId">Extract Id of the Extract to extend</param>
        /// <param name="APartnerKeysTable"></param>
        /// <param name="APartnerKeyColumn">number of the column that contains the partner keys</param>
        /// <param name="ASiteKeyColumn">number of the column that contains the site keys</param>
        /// <param name="ALocationKeyColumn">number of the column that contains the location keys</param>
        /// <param name="AKeyCount">The number of keys that were actually added to the extract (any duplicates are excluded)</param>
        /// <param name="AIgnoredKeyList">A reference to a List of long.  If not null the server will fill it with the partner keys that were ignored.  Does not include duplicates.</param>
        /// <param name="AIgnoreDuplicates">true if duplicates should be looked out for. Can be set to false if called only once and not several times per extract.</param>
        /// <param name="AIgnoreInactive">true if inactive partners should be ignored</param>
        /// <param name="AIgnoreNonMailingLocations">true to ignore if the partner's best address is a non-mailing location</param>
        /// <param name="AIgnoreNoSolicitations">true to ignore partners where the No Solicitations flag is set</param>
        public static void ExtendExtractFromListOfPartnerKeys(
            Int32 AExtractId,
            DataTable APartnerKeysTable,
            Int32 APartnerKeyColumn,
            Int32 ASiteKeyColumn,
            Int32 ALocationKeyColumn,
            out Int32 AKeyCount,
            out List <long> AIgnoredKeyList,
            bool AIgnoreDuplicates,
            bool AIgnoreInactive,
            bool AIgnoreNonMailingLocations,
            bool AIgnoreNoSolicitations)
        {
            int RecordCounter = 0;
            PPartnerLocationTable PartnerLocationKeysTable;
            Int64 PartnerKey;

            List <long> ignoredKeyList = new List <long>();

            TDBTransaction Transaction  = null;
            bool           SubmissionOK = true;

            DBAccess.GDBAccessObj.GetNewOrExistingAutoTransaction(IsolationLevel.Serializable, ref Transaction, ref SubmissionOK,
                                                                  delegate
            {
                // Pre-process the table to remove partner rows that do not match the filter requirements
                for (int i = APartnerKeysTable.Rows.Count - 1; i >= 0; i--)
                {
                    DataRow dr       = APartnerKeysTable.Rows[i];
                    Int64 partnerKey = Convert.ToInt64(dr[APartnerKeyColumn]);

                    // Get a partner record containing our fields of interest
                    StringCollection fields = new StringCollection();
                    fields.Add(PPartnerTable.GetStatusCodeDBName());
                    fields.Add(PPartnerTable.GetNoSolicitationsDBName());
                    DataTable dt = PPartnerAccess.LoadByPrimaryKey(partnerKey, fields, Transaction);

                    if (dt.Rows.Count > 0)
                    {
                        if (AIgnoreInactive || AIgnoreNoSolicitations)
                        {
                            bool isActive         = false;
                            bool isNoSolicitation = false;
                            object o = dt.Rows[0][PPartnerTable.GetStatusCodeDBName()];

                            if (o != null)
                            {
                                TStdPartnerStatusCode statusCode = SharedTypes.StdPartnerStatusCodeStringToEnum(o.ToString());
                                isActive = (statusCode == TStdPartnerStatusCode.spscACTIVE);
                            }

                            o = dt.Rows[0][PPartnerTable.GetNoSolicitationsDBName()];

                            if (o != null)
                            {
                                isNoSolicitation = Convert.ToBoolean(o);
                            }

                            if ((AIgnoreInactive && !isActive) || (AIgnoreNoSolicitations && isNoSolicitation))
                            {
                                ignoredKeyList.Add(partnerKey);
                                APartnerKeysTable.Rows.Remove(dr);
                            }
                        }
                    }
                    else
                    {
                        ignoredKeyList.Add(partnerKey);
                    }
                }

                MExtractTable ExtractTable = new MExtractTable();
                ExtractTable = MExtractAccess.LoadViaMExtractMaster(AExtractId, Transaction);

                // Location Keys need to be determined as extracts do not only need partner keys but
                // also Location Keys.
                DetermineBestLocationKeys(APartnerKeysTable, APartnerKeyColumn, ASiteKeyColumn,
                                          ALocationKeyColumn, out PartnerLocationKeysTable,
                                          Transaction);

                // use the returned table which contains partner and location keys to build the extract
                foreach (PPartnerLocationRow PartnerLocationRow in PartnerLocationKeysTable.Rows)
                {
                    PartnerKey = PartnerLocationRow.PartnerKey;

                    if (PartnerKey > 0)
                    {
                        if (AIgnoreNonMailingLocations)
                        {
                            // The PartnerLocationRow only contains the PK fields so now we need to get the SendMail column
                            StringCollection fields = new StringCollection();
                            fields.Add(PPartnerLocationTable.GetSendMailDBName());

                            PPartnerLocationTable t =
                                PPartnerLocationAccess.LoadByPrimaryKey(PartnerKey, PartnerLocationRow.SiteKey,
                                                                        PartnerLocationRow.LocationKey, fields, Transaction);

                            if ((t != null) && (t.Rows.Count > 0) && (((PPartnerLocationRow)t.Rows[0]).SendMail == false))
                            {
                                ignoredKeyList.Add(PartnerKey);
                                continue;
                            }
                        }

                        RecordCounter += 1;
                        TLogging.LogAtLevel(1, "Preparing Partner " + PartnerKey + " (Record Number " + RecordCounter + ")");

                        // add row for partner to extract and fill with contents
                        MExtractRow NewRow = ExtractTable.NewRowTyped();
                        NewRow.ExtractId   = AExtractId;
                        NewRow.PartnerKey  = PartnerKey;
                        NewRow.SiteKey     = Convert.ToInt64(PartnerLocationRow[PPartnerLocationTable.GetSiteKeyDBName()]);
                        NewRow.LocationKey = Convert.ToInt32(PartnerLocationRow[PPartnerLocationTable.GetLocationKeyDBName()]);

                        // only add row if it does not already exist for this partner
                        if (AIgnoreDuplicates || !ExtractTable.Rows.Contains(new object[] { NewRow.ExtractId, NewRow.PartnerKey, NewRow.SiteKey }))
                        {
                            ExtractTable.Rows.Add(NewRow);
                        }
                    }
                }

                if (ExtractTable.Rows.Count > 0)
                {
                    // update field in extract master for quick access to number of partners in extract
                    MExtractMasterTable ExtractMaster = MExtractMasterAccess.LoadByPrimaryKey(AExtractId, Transaction);
                    ExtractMaster[0].KeyCount         = ExtractTable.Rows.Count;

                    ExtractTable.ThrowAwayAfterSubmitChanges = true;     // no need to keep data as this increases speed significantly

                    MExtractAccess.SubmitChanges(ExtractTable, Transaction);

                    MExtractMasterAccess.SubmitChanges(ExtractMaster, Transaction);
                }
            });

            AKeyCount       = RecordCounter;
            AIgnoredKeyList = ignoredKeyList;
        }
コード例 #10
0
ファイル: Types.cs プロジェクト: js1987/openpetragit
 /// <summary>
 /// convert partner status from enum to string
 /// </summary>
 /// <param name="APartnerStatusCode"></param>
 /// <returns></returns>
 public static String StdPartnerStatusCodeEnumToString(TStdPartnerStatusCode APartnerStatusCode)
 {
     // Return the Enum value from the 4th character onwards (strip out prefix)
     return APartnerStatusCode.ToString("G").Substring(4);
 }
コード例 #11
0
        public static Boolean VerifyPartnerAndGetDetails(Int64 APartnerKey,
                                                         out String APartnerShortName,
                                                         out TPartnerClass APartnerClass,
                                                         out Boolean AIsMergedPartner,
                                                         out Boolean AUserCanAccessPartner)
        {
            APartnerShortName     = "";
            APartnerClass         = TPartnerClass.FAMILY; // Default. This is not really correct but the best compromise if PartnerKey is 0 or Partner isn't found since we have an enum here.
            AIsMergedPartner      = false;
            AUserCanAccessPartner = false;

            TDBTransaction        ReadTransaction;
            Boolean               NewTransaction;
            StringCollection      RequiredColumns;
            PPartnerTable         PartnerTable;
            Boolean               ReturnValue   = true;
            TStdPartnerStatusCode PartnerStatus = TStdPartnerStatusCode.spscACTIVE;

            // initialise outout Arguments
            if (APartnerKey != 0)
            {
                // only some fields are needed
                RequiredColumns = new StringCollection();
                RequiredColumns.Add(PPartnerTable.GetPartnerShortNameDBName());
                RequiredColumns.Add(PPartnerTable.GetPartnerClassDBName());
                RequiredColumns.Add(PPartnerTable.GetStatusCodeDBName());
                RequiredColumns.Add(PPartnerTable.GetRestrictedDBName());
                RequiredColumns.Add(PPartnerTable.GetUserIdDBName());
                RequiredColumns.Add(PPartnerTable.GetGroupIdDBName());

                ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted,
                                                                                    TEnforceIsolationLevel.eilMinimum,
                                                                                    out NewTransaction);
                try
                {
                    PartnerTable = PPartnerAccess.LoadByPrimaryKey(APartnerKey, RequiredColumns, ReadTransaction, null, 0, 0);
                }
                finally
                {
                    if (NewTransaction)
                    {
                        DBAccess.GDBAccessObj.CommitTransaction();
                        TLogging.LogAtLevel(7, "TPartnerServerLookups.VerifyPartner: committed own transaction.");
                    }
                }

                if (PartnerTable.Rows.Count == 0)
                {
                    ReturnValue = false;
                }
                else
                {
                    // since we loaded by primary key there must just be one partner row
                    APartnerShortName = PartnerTable[0].PartnerShortName;
                    APartnerClass     = SharedTypes.PartnerClassStringToEnum(PartnerTable[0].PartnerClass);
                    PartnerStatus     = SharedTypes.StdPartnerStatusCodeStringToEnum(PartnerTable[0].StatusCode);

                    // check if user can access partner
                    if (Ict.Petra.Server.MPartner.Common.TSecurity.CanAccessPartner(PartnerTable[0]) == TPartnerAccessLevelEnum.palGranted)
                    {
                        AUserCanAccessPartner = true;
                    }

                    // check if partner is merged
                    if (PartnerStatus == TStdPartnerStatusCode.spscMERGED)
                    {
                        AIsMergedPartner = true;
                    }
                    else
                    {
                        AIsMergedPartner = false;
                    }

                    ReturnValue = true;
                }
            }
            else
            {
                // Return result as valid if Partner Key is 0.
                ReturnValue = true;
            }

            return(ReturnValue);
        }
コード例 #12
0
ファイル: Types.cs プロジェクト: jsuen123/openpetragit
 /// <summary>
 /// convert partner status from enum to string
 /// </summary>
 /// <param name="APartnerStatusCode"></param>
 /// <returns></returns>
 public static String StdPartnerStatusCodeEnumToString(TStdPartnerStatusCode APartnerStatusCode)
 {
     // Return the Enum value from the 4th character onwards (strip out prefix)
     return(APartnerStatusCode.ToString("G").Substring(4));
 }
コード例 #13
0
ファイル: Main.cs プロジェクト: js1987/openpetragit
        /// <summary>
        /// Retrieves the Partner ShortName, the PartnerClass and PartnerStatus.
        /// </summary>
        /// <param name="APartnerKey">PartnerKey to identify the Partner.</param>
        /// <param name="APartnerShortName">Returns the ShortName.</param>
        /// <param name="APartnerClass">Returns the PartnerClass (FAMILY, ORGANISATION, etc).</param>
        /// <param name="APartnerStatus">Returns the PartnerStatus (eg. ACTIVE, DIED).</param>
        /// <param name="ATransaction">Open DB Transaction.</param>
        /// <returns>True if partner was found, otherwise false.</returns>
        public static Boolean RetrievePartnerShortName(Int64 APartnerKey,
            out String APartnerShortName,
            out TPartnerClass APartnerClass,
            out TStdPartnerStatusCode APartnerStatus,
            TDBTransaction ATransaction)
        {
            Boolean ReturnValue;
            StringCollection RequiredColumns;
            PPartnerTable PartnerTable;

            // initialise out Arguments
            APartnerShortName = "";

            // Default. This is not really correct but the best compromise if PartnerKey is 0 or Partner isn't found since we have an enum here.
            APartnerClass = TPartnerClass.FAMILY;

            // Default. This is not really correct but the best compromise if PartnerKey is 0 or Partner isn't found since we have an enum here.
            APartnerStatus = TStdPartnerStatusCode.spscINACTIVE;

            if (APartnerKey != 0)
            {
                // only some fields are needed
                RequiredColumns = new StringCollection();
                RequiredColumns.Add(PPartnerTable.GetPartnerShortNameDBName());
                RequiredColumns.Add(PPartnerTable.GetPartnerClassDBName());
                RequiredColumns.Add(PPartnerTable.GetStatusCodeDBName());

                PartnerTable = PPartnerAccess.LoadByPrimaryKey(APartnerKey, RequiredColumns, ATransaction, null, 0, 0);

                if (PartnerTable.Rows.Count == 0)
                {
                    ReturnValue = false;
                }
                else
                {
                    // since we loaded by primary key there must just be one partner row
                    APartnerShortName = PartnerTable[0].PartnerShortName;
                    APartnerClass = SharedTypes.PartnerClassStringToEnum(PartnerTable[0].PartnerClass);

                    APartnerStatus = SharedTypes.StdPartnerStatusCodeStringToEnum(PartnerTable[0].StatusCode);
                    ReturnValue = true;
                }
            }
            else
            {
                // Return result as valid if Partner Key is 0.
                ReturnValue = true;
            }

            return ReturnValue;
        }