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); }