/// <summary> /// Returns the Family Members of a Family. /// </summary> /// <param name="AFamilyPartnerKey">PartnerKey of the FAMILY.</param> /// <param name="AReadTransaction">Open DB Transaction.</param> /// <returns>An Instance of <see cref="PartnerInfoTDSFamilyMembersTable" />. /// If there were Family Members, there will be one DataRow for each Family Member.</returns> private static PartnerInfoTDSFamilyMembersTable GetFamilyMembers(Int64 AFamilyPartnerKey, TDBTransaction AReadTransaction) { OdbcParameter[] ParametersArray; DataSet TmpDS; PPersonTable FamilyPersonsDT; PartnerInfoTDSFamilyMembersRow NewRow; PartnerInfoTDSFamilyMembersTable FamilyMembersDT; FamilyMembersDT = new PartnerInfoTDSFamilyMembersTable(); ParametersArray = new OdbcParameter[1]; ParametersArray[0] = new OdbcParameter("", OdbcType.Decimal, 10); ParametersArray[0].Value = (System.Object)AFamilyPartnerKey; TmpDS = new DataSet(); FamilyPersonsDT = new PPersonTable(); TmpDS.Tables.Add(FamilyPersonsDT); DBAccess.GetDBAccessObj(AReadTransaction).Select(TmpDS, "SELECT " + "PUB_" + PPartnerTable.GetTableDBName() + '.' + PPartnerTable.GetPartnerKeyDBName() + ", " + PPersonTable.GetFamilyNameDBName() + ", " + PPersonTable.GetTitleDBName() + ", " + PPersonTable.GetFirstNameDBName() + ", " + PPersonTable.GetMiddleName1DBName() + ", " + PPersonTable.GetFamilyIdDBName() + ' ' + "FROM PUB_" + PPersonTable.GetTableDBName() + " INNER JOIN " + "PUB_" + PPartnerTable.GetTableDBName() + " ON " + "PUB_" + PPersonTable.GetTableDBName() + '.' + PPartnerTable.GetPartnerKeyDBName() + " = " + "PUB_" + PPartnerTable.GetTableDBName() + '.' + PPartnerTable.GetPartnerKeyDBName() + ' ' + "WHERE " + PPersonTable.GetFamilyKeyDBName() + " = ? " + "AND " + PPartnerTable.GetStatusCodeDBName() + " <> '" + SharedTypes.StdPartnerStatusCodeEnumToString(TStdPartnerStatusCode.spscMERGED) + "' " + // Make sure we don't load MERGED Partners (shouldn't have a p_family_key_n, but just in case.) "ORDER BY " + PPersonTable.GetFamilyIdDBName() + " ASC", PPersonTable.GetTableName(), AReadTransaction, ParametersArray, 0, 0); // Add Persons to Table for (Int32 Counter = 0; Counter <= FamilyPersonsDT.Rows.Count - 1; Counter += 1) { NewRow = FamilyMembersDT.NewRowTyped(false); NewRow.PartnerKey = FamilyPersonsDT[Counter].PartnerKey; NewRow.PartnerShortName = Calculations.DeterminePartnerShortName(TSaveConvert.StringColumnToString(FamilyPersonsDT.ColumnFamilyName, FamilyPersonsDT[Counter]), TSaveConvert.StringColumnToString(FamilyPersonsDT.ColumnTitle, FamilyPersonsDT[Counter]), TSaveConvert.StringColumnToString(FamilyPersonsDT.ColumnFirstName, FamilyPersonsDT[Counter]), TSaveConvert.StringColumnToString(FamilyPersonsDT.ColumnMiddleName1, FamilyPersonsDT[Counter])); NewRow.FamilyId = FamilyPersonsDT[Counter].FamilyId; FamilyMembersDT.Rows.Add(NewRow); } return(FamilyMembersDT); }
public static PartnerEditTDS CreateNewPartner( string APartnerClass, out List <string> ASubscriptions, out List <string> APartnerTypes, out string ADefaultEmailAddress, out string ADefaultPhoneMobile, out string ADefaultPhoneLandline) { TPartnerEditUIConnector partneredit = new TPartnerEditUIConnector(); string TmpSiteCountryCode; Int64 SiteKey = DomainManager.GSiteKey; PartnerEditTDS MainDS = partneredit.GetDataNewPartner( SiteKey, NewPartnerKey(), SharedTypes.PartnerClassStringToEnum(APartnerClass), String.Empty, String.Empty, false, -1, -1, -1, out TmpSiteCountryCode); MainDS.PPartner[0].ReceiptLetterFrequency = "Annual"; PLocationRow location = MainDS.PLocation.NewRowTyped(); location.SiteKey = SiteKey; // TODO: read country code from SystemDefaults table location.CountryCode = "DE"; location.LocationKey = -1; MainDS.PLocation.Rows.Add(location); TDBTransaction Transaction = new TDBTransaction(); DBAccess.ReadTransaction(ref Transaction, delegate { PCountryAccess.LoadAll(MainDS, Transaction); PPublicationAccess.LoadAll(MainDS, Transaction); PPartnerStatusAccess.LoadAll(MainDS, Transaction); PTypeAccess.LoadAll(MainDS, Transaction); }); APartnerTypes = new List <string>(); ASubscriptions = new List <string>(); ADefaultEmailAddress = String.Empty; ADefaultPhoneMobile = String.Empty; ADefaultPhoneLandline = String.Empty; return(MainDS); }
/// <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); }
/// <summary> /// mark the selected partner record as the one last worked with in the application /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void SetPartnerLastWorkedWith(System.Object sender, EventArgs e) { ExtractTDSMExtractRow SelectedRow = GetSelectedDetailRow(); TPartnerClass SelectedPartnersPartnerClass = SharedTypes.PartnerClassStringToEnum(SelectedRow.PartnerClass); if (SelectedRow != null) { TUserDefaults.NamedDefaults.SetLastPartnerWorkedWith(SelectedRow.PartnerKey, TLastPartnerUse.lpuMailroomPartner, SelectedPartnersPartnerClass); TRemote.MPartner.Partner.WebConnectors.AddRecentlyUsedPartner (SelectedRow.PartnerKey, SelectedPartnersPartnerClass, false, TLastPartnerUse.lpuMailroomPartner); } }
public static PartnerEditTDS CreateNewPartner( string APartnerClass, out List <string> ASubscriptions, out List <string> APartnerTypes, out string ADefaultEmailAddress, out string ADefaultPhoneMobile, out string ADefaultPhoneLandline) { TPartnerEditUIConnector partneredit = new TPartnerEditUIConnector(); string TmpSiteCountryCode; PartnerEditTDS MainDS = partneredit.GetDataNewPartner( DomainManager.GSiteKey, NewPartnerKey(), SharedTypes.PartnerClassStringToEnum(APartnerClass), String.Empty, String.Empty, false, -1, -1, -1, out TmpSiteCountryCode); MainDS.PPartner[0].ReceiptLetterFrequency = "ANNUAL"; PLocationRow location = MainDS.PLocation.NewRowTyped(); location.SiteKey = DomainManager.GSiteKey; location.LocationKey = -1; MainDS.PLocation.Rows.Add(location); TDBTransaction Transaction = null; DBAccess.GDBAccessObj.BeginAutoReadTransaction(IsolationLevel.ReadCommitted, ref Transaction, delegate { PPublicationAccess.LoadAll(MainDS, Transaction); PPartnerStatusAccess.LoadAll(MainDS, Transaction); PTypeAccess.LoadAll(MainDS, Transaction); }); APartnerTypes = new List <string>(); ASubscriptions = new List <string>(); ADefaultEmailAddress = String.Empty; ADefaultPhoneMobile = String.Empty; ADefaultPhoneLandline = String.Empty; return(MainDS); }
private void TPartnerNewDialogWinForm_Load(System.Object sender, System.EventArgs e) { FLogic = new TPartnerNewDialogScreenLogic(); cmbPartnerClass.InitialiseUserControl(); cmbAcquisitionCode.InitialiseUserControl(); // Hide invalid Acquisition Codes this.cmbAcquisitionCode.Filter = PAcquisitionTable.GetValidAcquisitionDBName() + " <> 0"; // Setup Data // As part of bug 5556 testing, checked if this returned a DataTable with any rows with RowState Modified. // The test didn't return much so this isn't conclusive, but it doesn't point to an error: // DataTable summary: 1 rows; 0 Added, 0 deleted, 0 detached, ***0 modified***, 1 unchanged. Table name InstalledSitesList FInstalledSitesDT = TDataCache.TMPartner.GetCacheablePartnerTable(TCacheablePartnerTablesEnum.InstalledSitesList); if (FInstalledSitesDT.Rows.Count != 0) { FLogic.CreateColumns(grdInstalledSites, FInstalledSitesDT); // DataBindingrelated stuff SetupDataGridDataBinding(); // Setup screen with default values InitialiseUI(); if ((FPartnerClass == SharedTypes.PartnerClassEnumToString(TPartnerClass.PERSON)) || (FDefaultPartnerClass == SharedTypes.PartnerClassEnumToString(TPartnerClass.PERSON))) { ShowFamilyPartnerSelection(true); } // Make the Grid respond on updown keys cmbPartnerClass.Focus(); grdInstalledSites.Focus(); // make sure that the grid row gets selected; Mono would not do it automatically DataGrid_FocusRowEntered(null, null); FFormSetupFinished = true; } else { MessageBox.Show(StrCantCreateNewPartner, MCommonResourcestrings.StrErrorNoInstalledSites); DialogResult = System.Windows.Forms.DialogResult.Cancel; Close(); return; } }
private void CmbPartnerClass_SelectedValueChanged(System.Object Sender, System.EventArgs e) { if (FFormSetupFinished) { txtPartnerKey.PartnerClass = cmbPartnerClass.GetSelectedString(); if (cmbPartnerClass.GetSelectedString() == SharedTypes.PartnerClassEnumToString(TPartnerClass.PERSON)) { ShowFamilyPartnerSelection(true); } else { ShowFamilyPartnerSelection(false); } } }
/// <summary> /// Tests whether the current user has access to a particular Partner. /// </summary> /// <remarks> /// <para>Corresponds to Progress 4GL Method 'CanAccessPartner' in /// common/sp_partn.p</para> /// <para>A server-side implementation of this Method exists that has only the /// <paramref name="APartnerRow" />parameter as an Argument. It /// looks up the Foundation Row on its own if this is needed.</para> /// </remarks> /// <param name="APartnerRow">Partner for which access should be checked for.</param> /// <param name="AIsFoundation">Set to true if Partner is a Foundation.</param> /// <param name="AFoundationRow">Foundation Row needs to be passed in /// if Partner is a Foundation.</param> /// <returns><see cref="TPartnerAccessLevelEnum.palGranted" /> if access /// to the Partner is granted, otherwise a different /// <see cref="TPartnerAccessLevelEnum" /> value.</returns> public static TPartnerAccessLevelEnum CanAccessPartner(PPartnerRow APartnerRow, bool AIsFoundation, PFoundationRow AFoundationRow) { TPetraPrincipal userinfo = UserInfo.GetUserInfo(); if ((APartnerRow.Restricted == PARTNER_RESTRICTED_TO_USER) && !((APartnerRow.UserId == userinfo.UserID) || userinfo.IsInModule("SYSMAN"))) { TLogging.LogAtLevel(6, "CanAccessPartner: Access DENIED - Partner " + APartnerRow.PartnerKey.ToString() + " is restriced to User " + APartnerRow.UserId + "!"); return(TPartnerAccessLevelEnum.palRestrictedToUser); } else if ((APartnerRow.Restricted == PARTNER_RESTRICTED_TO_GROUP) && !((userinfo.IsInGroup(APartnerRow.GroupId)) || userinfo.IsInModule("SYSMAN"))) { TLogging.LogAtLevel(6, "CanAccessPartner: Access DENIED - Partner " + APartnerRow.PartnerKey.ToString() + " is restriced to Group " + APartnerRow.GroupId + "!"); return(TPartnerAccessLevelEnum.palRestrictedToGroup); } if (APartnerRow.PartnerClass == SharedTypes.PartnerClassEnumToString(TPartnerClass.ORGANISATION)) { if (AIsFoundation) { if (AFoundationRow != null) { if (!CheckFoundationSecurity(AFoundationRow)) { TLogging.LogAtLevel(6, "CanAccessPartner: Access DENIED - Partner " + APartnerRow.PartnerKey.ToString() + " is restriced by Foundation Ownership!"); return(TPartnerAccessLevelEnum.palRestrictedByFoundationOwnership); } } else { throw new System.ArgumentException("AFoundationRow must not be null if AIsFoundation is true"); } } } TLogging.LogAtLevel(6, "CanAccessPartner: Access to Partner " + APartnerRow.PartnerKey.ToString() + " is GRANTED!"); return(TPartnerAccessLevelEnum.palGranted); }
private void GetDataFromControlsExtra(PPartnerRow ARow) { /* * Extra logic is needed for FAMILY and PERSON Partners because ARow.NoSolicitations is overwritten in * the auto-generated GetDataFromControls Method by the value of chkOtherNoSolicitations.Checked! */ if (FPartnerClass == SharedTypes.PartnerClassEnumToString(TPartnerClass.FAMILY)) { ARow.NoSolicitations = chkFamilyNoSolicitations.Checked; ARow.AddresseeTypeCode = cmbFamilyAddresseeTypeCode.GetSelectedString(); } else if (FPartnerClass == SharedTypes.PartnerClassEnumToString(TPartnerClass.PERSON)) { ARow.NoSolicitations = chkPersonNoSolicitations.Checked; ARow.AddresseeTypeCode = cmbPersonAddresseeTypeCode.GetSelectedString(); } }
/// <summary> /// Checks for the existance of a Partner. /// </summary> /// <param name="APartnerKey">PartnerKey of the Partner to check for.</param> /// <param name="AMustNotBeMergedPartner">Set to true to check whether the Partner /// must not be a Merged Partner.</param> /// <returns>An instance of PPartnerRow if the Partner exists (taking AMustNotBeMergedPartner into consideration), /// otherwise null.</returns> public static PPartnerRow CheckPartnerExists2(Int64 APartnerKey, bool AMustNotBeMergedPartner) { PPartnerRow ReturnValue = null; TDBTransaction ReadTransaction; Boolean NewTransaction; PPartnerTable PartnerTable; if (APartnerKey != 0) { ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { PartnerTable = PPartnerAccess.LoadByPrimaryKey(APartnerKey, ReadTransaction); } finally { if (NewTransaction) { DBAccess.GDBAccessObj.CommitTransaction(); TLogging.LogAtLevel(7, "CheckPartnerExists: committed own transaction."); } } if (PartnerTable.Rows.Count != 0) { if (AMustNotBeMergedPartner) { if (SharedTypes.StdPartnerStatusCodeStringToEnum( PartnerTable[0].StatusCode) != TStdPartnerStatusCode.spscMERGED) { ReturnValue = PartnerTable[0]; } } else { ReturnValue = PartnerTable[0]; } } } return(ReturnValue); }
private void TPartnerNewDialogWinForm_Load(System.Object sender, System.EventArgs e) { FLogic = new TPartnerNewDialogScreenLogic(); cmbPartnerClass.InitialiseUserControl(); cmbAcquisitionCode.InitialiseUserControl(); // Hide invalid Acquisition Codes this.cmbAcquisitionCode.Filter = PAcquisitionTable.GetValidAcquisitionDBName() + " <> 0"; // Setup Data FInstalledSitesDT = TDataCache.TMPartner.GetCacheablePartnerTable(TCacheablePartnerTablesEnum.InstalledSitesList); if (FInstalledSitesDT.Rows.Count != 0) { FLogic.CreateColumns(grdInstalledSites, FInstalledSitesDT); // DataBindingrelated stuff SetupDataGridDataBinding(); // Setup screen with default values InitialiseUI(); if ((FPartnerClass == SharedTypes.PartnerClassEnumToString(TPartnerClass.PERSON)) || (FDefaultPartnerClass == SharedTypes.PartnerClassEnumToString(TPartnerClass.PERSON))) { ShowFamilyPartnerSelection(true); } // Make the Grid respond on updown keys cmbPartnerClass.Focus(); grdInstalledSites.Focus(); // make sure that the grid row gets selected; Mono would not do it automatically DataGrid_FocusRowEntered(null, null); FFormSetupFinished = true; } else { MessageBox.Show(StrCantCreateNewPartner, MCommonResourcestrings.StrErrorNoInstalledSites); DialogResult = System.Windows.Forms.DialogResult.Cancel; Close(); return; } }
private void CmbPersonGender_SelectedValueChanged(System.Object sender, System.EventArgs e) { if (cmbPersonGender.GetSelectedString() == "Female") { cmbPersonAddresseeTypeCode.SetSelectedString(SharedTypes.StdAddresseeTypeCodeEnumToString(TStdAddresseeTypeCode.satcFEMALE)); } else if (cmbPersonGender.GetSelectedString() == "Male") { cmbPersonAddresseeTypeCode.SetSelectedString(SharedTypes.StdAddresseeTypeCodeEnumToString(TStdAddresseeTypeCode.satcMALE)); } // /* // * Also assign the value directly to the databound data field! // * Strangely enough, this is necessary for the case if the user doesn't TAB out // * of cmbPersonGender, but uses the mouse to select anything else on the screen // * *except* cmbAddresseeType! // */ // FMainDS.PPartner[0].AddresseeTypeCode = cmbAddresseeType.SelectedItem.ToString(); }
public static BankTDS GetPBankRecords() { TDBTransaction ReadTransaction; Boolean NewTransaction; BankTDS ReturnValue = new BankTDS(); ReadTransaction = DBAccess.GDBAccessObj.GetNewOrExistingTransaction(IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, out NewTransaction); try { string QueryBankRecords = "SELECT PUB_p_bank.*, PUB_p_partner.p_status_code_c, PUB_p_location.* " + "FROM PUB_p_bank JOIN PUB_p_partner ON PUB_p_partner.p_partner_key_n = PUB_p_bank.p_partner_key_n " + "LEFT OUTER JOIN PUB_p_partner_location ON PUB_p_bank.p_partner_key_n = PUB_p_partner_location.p_partner_key_n " + "AND (PUB_p_partner_location.p_date_good_until_d IS NULL OR PUB_p_partner_location.p_date_good_until_d >= DATE(NOW())) " + "JOIN PUB_p_location ON PUB_p_partner_location.p_site_key_n = PUB_p_location.p_site_key_n " + "AND PUB_p_partner_location.p_location_key_i = PUB_p_location.p_location_key_i"; DBAccess.GDBAccessObj.Select(ReturnValue, QueryBankRecords, ReturnValue.PBank.TableName, ReadTransaction, null); foreach (BankTDSPBankRow Row in ReturnValue.PBank.Rows) { // mark inactive bank accounts if (Row.StatusCode != SharedTypes.StdPartnerStatusCodeEnumToString(TStdPartnerStatusCode.spscACTIVE)) { Row.BranchCode = SharedConstants.INACTIVE_VALUE_WITH_QUALIFIERS + " " + Row.BranchCode; } } } finally { if (NewTransaction) { DBAccess.GDBAccessObj.RollbackTransaction(); TLogging.LogAtLevel(7, "TPartnerDataReaderWebConnector.GetPBankRecords: committed own transaction."); } } return(ReturnValue); }
/// <summary> /// todoComment /// </summary> /// <param name="e"></param> /// <param name="AMainDS"></param> /// <param name="AVerificationResult"></param> public static void VerifyUnitNameChange(DataColumnChangeEventArgs e, PartnerEditTDS AMainDS, out TVerificationResult AVerificationResult) { AVerificationResult = null; System.Windows.Forms.DialogResult ApprovalFromIFC; try { /* * Check for an *edited* Partner of PartnerClass UNIT whether it has a * Special Type 'LEDGER' */ if ((SharedTypes.PartnerClassStringToEnum(AMainDS.PPartner[0].PartnerClass) == TPartnerClass.UNIT) && (AMainDS.PPartner[0].HasVersion(DataRowVersion.Original))) { if (AMainDS.PPartnerType != null) { if (AMainDS.PPartnerType.Rows.Find(new Object[] { AMainDS.PPartner[0].PartnerKey, "LEDGER" }) != null) { ApprovalFromIFC = MessageBox.Show(StrFundnameChange, StrFundNameChangeTitle, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (ApprovalFromIFC == System.Windows.Forms.DialogResult.No) { AVerificationResult = new TVerificationResult("", StrFundNameChangeUndone, StrFundNameChangeUndoneTitle, PetraErrorCodes.ERR_UNITNAMECHANGEUNDONE, TResultSeverity.Resv_Noncritical); } } } } } catch (Exception) { throw; } }
public static BankTDS GetPBankRecords() { BankTDS ReturnValue = new BankTDS(); TDBTransaction ReadTransaction = null; // Need to use 'GetNewOrExistingAutoReadTransaction' rather than 'BeginAutoReadTransaction' to allow // switching to the 'Find by Bank Details' on Partner Find while a Report is calculating (Bug #3877). DBAccess.GDBAccessObj.GetNewOrExistingAutoReadTransaction( IsolationLevel.ReadCommitted, TEnforceIsolationLevel.eilMinimum, ref ReadTransaction, delegate { const string QUERY_BANKRECORDS = "SELECT PUB_p_bank.*, PUB_p_partner.p_status_code_c, PUB_p_location.* " + "FROM PUB_p_bank JOIN PUB_p_partner ON PUB_p_partner.p_partner_key_n = PUB_p_bank.p_partner_key_n " + "LEFT OUTER JOIN PUB_p_partner_location ON PUB_p_bank.p_partner_key_n = PUB_p_partner_location.p_partner_key_n " + "AND (PUB_p_partner_location.p_date_good_until_d IS NULL OR PUB_p_partner_location.p_date_good_until_d >= DATE(NOW())) " + "JOIN PUB_p_location ON PUB_p_partner_location.p_site_key_n = PUB_p_location.p_site_key_n " + "AND PUB_p_partner_location.p_location_key_i = PUB_p_location.p_location_key_i"; DBAccess.GDBAccessObj.Select(ReturnValue, QUERY_BANKRECORDS, ReturnValue.PBank.TableName, ReadTransaction, null); foreach (BankTDSPBankRow Row in ReturnValue.PBank.Rows) { // mark inactive bank accounts if (Row.StatusCode != SharedTypes.StdPartnerStatusCodeEnumToString(TStdPartnerStatusCode.spscACTIVE)) { Row.BranchCode = SharedConstants.INACTIVE_VALUE_WITH_QUALIFIERS + " " + Row.BranchCode; } } }); return(ReturnValue); }
/// <summary> /// Deletes the currently selected Partner. /// </summary> public bool DeletePartner() { TFormsMessage BroadcastMessage; if (TPartnerMain.DeletePartner(FPartnerKey, ((UserControl)this.ParentForm).ParentForm)) { BroadcastMessage = new TFormsMessage(TFormsMessageClassEnum.mcPartnerDeleted, null); BroadcastMessage.SetMessageDataPartner( FPartnerKey, SharedTypes.PartnerClassStringToEnum(DetermineCurrentPartnerClass()), "", DetermineCurrentPartnerStatus()); TFormsList.GFormsList.BroadcastFormMessage(BroadcastMessage); return(true); } return(false); }
public static BankTDS GetPBankRecords() { BankTDS ReturnValue = new BankTDS(); TDBTransaction ReadTransaction = null; // Automatic handling of a Read-only DB Transaction - and also the automatic establishment and closing of a DB // Connection where a DB Transaction can be exectued (only if that should be needed). DBAccess.SimpleAutoReadTransactionWrapper( IsolationLevel.ReadCommitted, "TPartnerDataReaderWebConnector.GetPBankRecords", out ReadTransaction, delegate { const string QUERY_BANKRECORDS = "SELECT PUB_p_bank.*, PUB_p_partner.p_status_code_c, PUB_p_location.* " + "FROM PUB_p_bank JOIN PUB_p_partner ON PUB_p_partner.p_partner_key_n = PUB_p_bank.p_partner_key_n " + "LEFT OUTER JOIN PUB_p_partner_location ON PUB_p_bank.p_partner_key_n = PUB_p_partner_location.p_partner_key_n " + "AND (PUB_p_partner_location.p_date_good_until_d IS NULL OR PUB_p_partner_location.p_date_good_until_d >= DATE(NOW())) " + "JOIN PUB_p_location ON PUB_p_partner_location.p_site_key_n = PUB_p_location.p_site_key_n " + "AND PUB_p_partner_location.p_location_key_i = PUB_p_location.p_location_key_i"; DBAccess.GetDBAccessObj(ReadTransaction).Select(ReturnValue, QUERY_BANKRECORDS, ReturnValue.PBank.TableName, ReadTransaction, null); foreach (BankTDSPBankRow Row in ReturnValue.PBank.Rows) { // mark inactive bank accounts if (Row.StatusCode != SharedTypes.StdPartnerStatusCodeEnumToString(TStdPartnerStatusCode.spscACTIVE)) { Row.BranchCode = SharedConstants.INACTIVE_VALUE_WITH_QUALIFIERS + " " + Row.BranchCode; } } }); return(ReturnValue); }
/// <summary> /// Sets the background colour of the CheckBox depending on whether it is /// Checked or not. /// </summary> /// <returns>void</returns> private void SetupChkNoSolicitations() { CheckBox ChkNoSolicitations; #region Choose CheckBox according to Partner Class switch (SharedTypes.PartnerClassStringToEnum(FPartnerClass)) { case TPartnerClass.PERSON: ChkNoSolicitations = chkPersonNoSolicitations; break; case TPartnerClass.FAMILY: ChkNoSolicitations = chkFamilyNoSolicitations; break; case TPartnerClass.CHURCH: case TPartnerClass.ORGANISATION: case TPartnerClass.UNIT: case TPartnerClass.BANK: ChkNoSolicitations = chkOtherNoSolicitations; break; default: ChkNoSolicitations = chkOtherNoSolicitations; break; } #endregion if (ChkNoSolicitations.Checked) { ChkNoSolicitations.BackColor = System.Drawing.Color.PeachPuff; } else { ChkNoSolicitations.BackColor = System.Drawing.SystemColors.Control; } }
// A new row is selected in the grid private void FocusedRowChanged(System.Object sender, EventArgs e) { if (grdDetails.SelectedDataRows.Length == 1) { DataRowView RowDataRowView = (DataRowView)grdDetails.SelectedDataRows[0]; if (RowDataRowView.Row[BankTDSPBankTable.GetStatusCodeDBName()].ToString() != SharedTypes.StdPartnerStatusCodeEnumToString(TStdPartnerStatusCode.spscACTIVE)) { chkShowInactive.Enabled = false; } else { chkShowInactive.Enabled = true; } // Update property with a new selected bank's partner key FBankPartnerKey = Convert.ToInt64(RowDataRowView.Row[BankTDSPBankTable.GetPartnerKeyDBName()]); btnAccept.Enabled = true; btnEdit.Enabled = true; } }
/// <summary> /// Load all the data of a partner into a TDS /// </summary> public static PartnerImportExportTDS ExportPartner(Int64 APartnerKey, TPartnerClass?APartnerClass = null) { PartnerImportExportTDS MainDS = new PartnerImportExportTDS(); TDBTransaction Transaction = new TDBTransaction(); DBAccess.ReadTransaction( ref Transaction, delegate { PPartnerAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); // APartnerClass is optional but if it was not provided we need to assign to it now if (APartnerClass == null) { APartnerClass = SharedTypes.PartnerClassStringToEnum(MainDS.PPartner[0].PartnerClass); } if (APartnerClass == TPartnerClass.CHURCH) { PChurchAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); } else if (APartnerClass == TPartnerClass.FAMILY) { PFamilyAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); PPartnerGiftDestinationAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); } else if (APartnerClass == TPartnerClass.PERSON) { PPersonAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); PmPersonalDataAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); PmPassportDetailsAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmDocumentAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PmDocumentTypeAccess.LoadAll(MainDS, Transaction); PmPersonQualificationAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmSpecialNeedAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmPastExperienceAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmPersonLanguageAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmPersonAbilityAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmStaffDataAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmJobAssignmentAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PmPersonEvaluationAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmPersonSkillAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmGeneralApplicationAccess.LoadViaPPersonPartnerKey(MainDS, APartnerKey, Transaction); PtApplicationTypeAccess.LoadAll(MainDS, Transaction); PmShortTermApplicationAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); PmYearProgramApplicationAccess.LoadViaPPerson(MainDS, APartnerKey, Transaction); } else if (APartnerClass == TPartnerClass.ORGANISATION) { POrganisationAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); } else if (APartnerClass == TPartnerClass.UNIT) { PUnitAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); UmUnitStructureAccess.LoadViaPUnitChildUnitKey(MainDS, APartnerKey, Transaction); UmUnitAbilityAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); UmUnitLanguageAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); UmUnitCostAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); UmJobAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); UmJobRequirementAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); UmJobLanguageAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); UmJobQualificationAccess.LoadViaPUnit(MainDS, APartnerKey, Transaction); } else if (APartnerClass == TPartnerClass.VENUE) { PVenueAccess.LoadByPrimaryKey(MainDS, APartnerKey, Transaction); PcBuildingAccess.LoadViaPVenue(MainDS, APartnerKey, Transaction); PcRoomAccess.LoadViaPVenue(MainDS, APartnerKey, Transaction); } PPartnerAttributeAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PLocationAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PPartnerLocationAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PPartnerCommentAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PPartnerTypeAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PPartnerInterestAccess.LoadViaPPartner(MainDS, APartnerKey, Transaction); PInterestAccess.LoadAll(MainDS, Transaction); }); return(MainDS); }
private void ApplySecurity() { if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PPartnerTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner. This continues in the switch statments! // timop: I have disabled all controls. usually you have p_partner modify permissions, or none CustomEnablingDisabling.DisableControlGroup(pnlContent); } switch (SharedTypes.PartnerClassStringToEnum(FPartnerClass)) { case TPartnerClass.PERSON: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PPersonTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlPerson, cmbPersonAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlPerson, chkPersonNoSolicitations); // need to disable all Fields that are DataBound to p_person CustomEnablingDisabling.DisableControlGroup(pnlPerson); cmbPersonAddresseeTypeCode.Focus(); } break; case TPartnerClass.FAMILY: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PFamilyTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlFamily, cmbFamilyAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlFamily, chkFamilyNoSolicitations); // need to disable all Fields that are DataBound to p_family CustomEnablingDisabling.DisableControlGroup(pnlFamily); cmbFamilyAddresseeTypeCode.Focus(); } break; case TPartnerClass.CHURCH: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PChurchTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlOther2ndLine, cmbOtherAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlOther2ndLine, chkOtherNoSolicitations); // need to disable all Fields that are DataBound to p_church CustomEnablingDisabling.DisableControlGroup(pnlOther2ndLine); cmbOtherAddresseeTypeCode.Focus(); } break; case TPartnerClass.ORGANISATION: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, POrganisationTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlOther2ndLine, cmbOtherAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlOther2ndLine, chkOtherNoSolicitations); // need to disable all Fields that are DataBound to p_organisation CustomEnablingDisabling.DisableControlGroup(pnlOther2ndLine); cmbOtherAddresseeTypeCode.Focus(); } break; case TPartnerClass.UNIT: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PUnitTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlOther2ndLine, cmbOtherAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlOther2ndLine, chkOtherNoSolicitations); // need to disable all Fields that are DataBound to p_unit CustomEnablingDisabling.DisableControlGroup(pnlOther2ndLine); cmbOtherAddresseeTypeCode.Focus(); } break; case TPartnerClass.BANK: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PBankTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlOther2ndLine, cmbOtherAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlOther2ndLine, chkOtherNoSolicitations); // need to disable all Fields that are DataBound to p_bank CustomEnablingDisabling.DisableControlGroup(pnlOther2ndLine); cmbOtherAddresseeTypeCode.Focus(); } break; case TPartnerClass.VENUE: if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapMODIFY, PVenueTable.GetTableDBName())) { // need to disable all Fields that are DataBound to p_partner CustomEnablingDisabling.DisableControl(pnlOther2ndLine, cmbOtherAddresseeTypeCode); CustomEnablingDisabling.DisableControl(pnlOther2ndLine, chkOtherNoSolicitations); // need to disable all Fields that are DataBound to p_venue CustomEnablingDisabling.DisableControlGroup(pnlOther2ndLine); cmbOtherAddresseeTypeCode.Focus(); } break; default: MessageBox.Show(String.Format(Catalog.GetString("Unrecognised Partner Class '{0}'!"), FPartnerClass)); break; } }
/// <summary> /// Retrieves 'Rest' of Partner Information data. /// </summary> /// <param name="APartnerDR">DataRow that contains the Partner data.</param> /// <param name="APartnerInfoDS" >Typed PartnerInfoTDS DataSet</param> /// <param name="AReadTransaction" >Open DB Transaction.</param> private static void RestInternal(PPartnerRow APartnerDR, ref PartnerInfoTDS APartnerInfoDS, TDBTransaction AReadTransaction) { PartnerInfoTDSPartnerAdditionalInfoRow PartnerInfoDR; TPartnerClass PartnerClass; DateTime LastContactDate; PPersonTable PersonDT; PPartnerTable FamilyPartnerDT; Int64 PartnerKey = APartnerDR.PartnerKey; /* * Load Special Types */ PPartnerTypeAccess.LoadViaPPartner(APartnerInfoDS, PartnerKey, AReadTransaction); /* * Load Subscriptions */ PSubscriptionAccess.LoadViaPPartnerPartnerKey(APartnerInfoDS, PartnerKey, AReadTransaction); #region Populate PartnerAdditionalInfo Table if (APartnerInfoDS.PartnerAdditionalInfo.Rows.Count == 0) { PartnerInfoDR = APartnerInfoDS.PartnerAdditionalInfo.NewRowTyped(false); } else { PartnerInfoDR = APartnerInfoDS.PartnerAdditionalInfo[0]; } if (!APartnerDR.IsCommentNull()) { PartnerInfoDR.Notes = APartnerDR.Comment.Trim(); } if (!APartnerDR.IsDateCreatedNull()) { PartnerInfoDR.DateCreated = APartnerDR.DateCreated; } if (!APartnerDR.IsDateModifiedNull()) { PartnerInfoDR.DateModified = APartnerDR.DateModified; } if (!APartnerDR.IsLanguageCodeNull()) { PartnerInfoDR.MainLanguages = APartnerDR.LanguageCode; } if (!APartnerDR.IsPreviousNameNull()) { PartnerInfoDR.PreviousName = APartnerDR.PreviousName; } // Determination of Last Contact Date TMailroom.GetLastContactDate(PartnerKey, out LastContactDate, AReadTransaction.DataBaseObj); PartnerInfoDR.LastContact = LastContactDate; /* * Special Data according to Partner Class */ PartnerClass = SharedTypes.PartnerClassStringToEnum(APartnerDR.PartnerClass); switch (PartnerClass) { case TPartnerClass.PERSON: PersonDT = PPersonAccess.LoadByPrimaryKey(APartnerDR.PartnerKey, AReadTransaction); if (PersonDT != null) { if (!PersonDT[0].IsDateOfBirthNull()) { PartnerInfoDR.DateOfBirth = PersonDT[0].DateOfBirth; } // Get Family Members info APartnerInfoDS.Merge(GetFamilyMembers(PersonDT[0].FamilyKey, AReadTransaction)); // Get Family Partner info FamilyPartnerDT = PPartnerAccess.LoadByPrimaryKey(PersonDT[0].FamilyKey, AReadTransaction); if (FamilyPartnerDT != null) { PartnerInfoDR.Family = FamilyPartnerDT[0].PartnerShortName; PartnerInfoDR.FamilyKey = FamilyPartnerDT[0].PartnerKey; } // Get the Languages of a Person from Personnel PartnerInfoDR.AdditionalLanguages = GetPersonLanguagesFromPersonnel( APartnerDR.PartnerKey, PartnerInfoDR.MainLanguages, AReadTransaction); } break; case TPartnerClass.FAMILY: // Get Family Members info APartnerInfoDS.Merge(GetFamilyMembers(PartnerKey, AReadTransaction)); break; case TPartnerClass.UNIT: // Get Unit structure info APartnerInfoDS.Merge(GetUnitStructure(PartnerKey, AReadTransaction)); break; } // Get Partners' PartnerAttributes PartnerAttributesInternal(PartnerKey, ref APartnerInfoDS, false, AReadTransaction); // TODO: Apply Contact Details Security if (APartnerInfoDS.PartnerAdditionalInfo.Rows.Count == 0) { APartnerInfoDS.PartnerAdditionalInfo.Rows.Add(PartnerInfoDR); } #endregion }
/// arrange the panels and controls according to the partner class public void InitialiseUserControl() { FIgnorePartnerStatusChange = false; // Set up ToolTip this.components = new System.ComponentModel.Container(); FTipMain = new System.Windows.Forms.ToolTip(this.components); FTipMain.AutoPopDelay = 4000; FTipMain.InitialDelay = 500; FTipMain.ReshowDelay = 100; BuildValidationControlsDict(); // Ensure that the Worker Field Panel (and thus the Button on it) always comes last in the Tab Order pnlWorkerField.TabIndex = 999; #region Show fields according to Partner Class txtPartnerKey.PartnerClass = FPartnerClass; switch (SharedTypes.PartnerClassStringToEnum(FPartnerClass)) { case TPartnerClass.PERSON: pnlPerson.Visible = true; pnlWorkerField.Visible = true; pnlPerson2ndLine.Visible = true; // Set ToolTips in addition to StatusBar texts for fields to make it clearer what to fill in there... FTipMain.SetToolTip(this.txtPersonTitle, PPersonTable.GetTitleHelp()); FTipMain.SetToolTip(this.txtPersonFirstName, PPersonTable.GetFirstNameHelp()); FTipMain.SetToolTip(this.txtPersonMiddleName, PPersonTable.GetMiddleName1Help()); FTipMain.SetToolTip(this.txtPersonFamilyName, PPersonTable.GetFamilyNameHelp()); txtPersonTitle.TextChanged += new EventHandler(OnAnyDataColumnChanging); txtPersonFirstName.TextChanged += new EventHandler(OnAnyDataColumnChanging); txtPersonMiddleName.TextChanged += new EventHandler(OnAnyDataColumnChanging); txtPersonFamilyName.TextChanged += new EventHandler(OnAnyDataColumnChanging); this.cmbPersonGender.SelectedValueChanged += new System.EventHandler(this.CmbPersonGender_SelectedValueChanged); txtPartnerClass.BackColor = TCommonControlsHelper.PartnerClassPERSONColour; // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtPersonTitle.SelectionStart = 0; break; case TPartnerClass.FAMILY: pnlFamily.Visible = true; pnlWorkerField.Visible = true; pnlFamily2ndLine.Visible = true; // Set ToolTips in addition to StatusBar texts for fields to make it clearer what to fill in there... FTipMain.SetToolTip(this.txtFamilyTitle, PFamilyTable.GetTitleHelp()); FTipMain.SetToolTip(this.txtFamilyFirstName, PFamilyTable.GetFirstNameHelp()); FTipMain.SetToolTip(this.txtFamilyFamilyName, PFamilyTable.GetFamilyNameHelp()); txtFamilyTitle.TextChanged += new EventHandler(OnAnyDataColumnChanging); txtFamilyFirstName.TextChanged += new EventHandler(OnAnyDataColumnChanging); txtFamilyFamilyName.TextChanged += new EventHandler(OnAnyDataColumnChanging); // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtFamilyTitle.SelectionStart = 0; break; case TPartnerClass.CHURCH: pnlChurch.Visible = true; pnlOther2ndLine.Visible = true; txtChurchName.TextChanged += new EventHandler(OnAnyDataColumnChanging); // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtChurchName.SelectionStart = 0; break; case TPartnerClass.ORGANISATION: pnlOrganisation.Visible = true; pnlOther2ndLine.Visible = true; txtOrganisationName.TextChanged += new EventHandler(OnAnyDataColumnChanging); // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtOrganisationName.SelectionStart = 0; break; case TPartnerClass.UNIT: pnlUnit.Visible = true; pnlOther2ndLine.Visible = true; txtUnitName.TextChanged += new EventHandler(OnAnyDataColumnChanging); FMainDS.PUnit.ColumnChanging += new DataColumnChangeEventHandler(OnUnitDataColumnChanging); // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtUnitName.SelectionStart = 0; break; case TPartnerClass.BANK: pnlBank.Visible = true; pnlOther2ndLine.Visible = true; txtBranchName.TextChanged += new EventHandler(OnAnyDataColumnChanging); // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtBranchName.SelectionStart = 0; break; case TPartnerClass.VENUE: pnlVenue.Visible = true; pnlOther2ndLine.Visible = true; txtVenueName.TextChanged += new EventHandler(OnAnyDataColumnChanging); // Ensure that the Text in the first TextBox isn't all selected when the Form is brought up txtVenueName.SelectionStart = 0; break; default: MessageBox.Show(String.Format(Catalog.GetString("Unrecognised Partner Class '{0}'!"), FPartnerClass)); break; } #endregion }
private void CommunicationService_PublishingStatusNotification(object sender, SharedTypes.ValueEventArgs<PublishingStatus> args) { if (CommunicationService.SessionId == ((CommunicationService)sender).SessionId) Deployment.Current.Dispatcher.BeginInvoke(() => ShowStatus(args.Value)); }
public GraphQLModel(IAppEntity app, IEnumerable <ISchemaEntity> schemas, SharedTypes typeFactory, ISemanticLog log) { this.log = log; schema = new Builder(app, typeFactory).BuildSchema(schemas); }
private DataTable GetDataLabelsForPartnerClassesListTable(TDBTransaction AReadTransaction, string ATableName) { const string PARTNERCLASSCOL = "PartnerClass"; const string DLAVAILCOL = "DataLabelsAvailable"; DataTable TmpTable; DataRow NewDR; TOfficeSpecificDataLabelsUIConnector OfficeSpecificDataLabelsUIConnector; // Create our custom Cacheable DataTable on-the-fly TmpTable = new DataTable(ATableName); DataColumn PKColumn = new DataColumn(PARTNERCLASSCOL, System.Type.GetType("System.String")); TmpTable.Columns.Add(PKColumn); TmpTable.Columns.Add(new DataColumn(DLAVAILCOL, System.Type.GetType("System.Boolean"))); TmpTable.PrimaryKey = new DataColumn[] { PKColumn }; /* * Create an Instance of TOfficeSpecificDataLabelsUIConnector - PartnerKey and DataLabelUse are not important here * because we only call Method 'CountLabelUse', which doesn't rely on any of them. */ OfficeSpecificDataLabelsUIConnector = new TOfficeSpecificDataLabelsUIConnector(0, TOfficeSpecificDataLabelUseEnum.Family); // DataLabels available for PERSONs? NewDR = TmpTable.NewRow(); NewDR[PARTNERCLASSCOL] = SharedTypes.PartnerClassEnumToString(TPartnerClass.PERSON); NewDR[DLAVAILCOL] = (OfficeSpecificDataLabelsUIConnector.CountLabelUse(NewDR[PARTNERCLASSCOL].ToString(), AReadTransaction) != 0); TmpTable.Rows.Add(NewDR); // DataLabels available for FAMILYs? NewDR = TmpTable.NewRow(); NewDR[PARTNERCLASSCOL] = SharedTypes.PartnerClassEnumToString(TPartnerClass.FAMILY); NewDR[DLAVAILCOL] = (OfficeSpecificDataLabelsUIConnector.CountLabelUse(NewDR[PARTNERCLASSCOL].ToString(), AReadTransaction) != 0); TmpTable.Rows.Add(NewDR); // DataLabels available for CHURCHes? NewDR = TmpTable.NewRow(); NewDR[PARTNERCLASSCOL] = SharedTypes.PartnerClassEnumToString(TPartnerClass.CHURCH); NewDR[DLAVAILCOL] = (OfficeSpecificDataLabelsUIConnector.CountLabelUse(NewDR[PARTNERCLASSCOL].ToString(), AReadTransaction) != 0); TmpTable.Rows.Add(NewDR); // DataLabels available for ORGANISATIONs? NewDR = TmpTable.NewRow(); NewDR[PARTNERCLASSCOL] = SharedTypes.PartnerClassEnumToString(TPartnerClass.ORGANISATION); NewDR[DLAVAILCOL] = (OfficeSpecificDataLabelsUIConnector.CountLabelUse(NewDR[PARTNERCLASSCOL].ToString(), AReadTransaction) != 0); TmpTable.Rows.Add(NewDR); // DataLabels available for UNITs? NewDR = TmpTable.NewRow(); NewDR[PARTNERCLASSCOL] = SharedTypes.PartnerClassEnumToString(TPartnerClass.UNIT); NewDR[DLAVAILCOL] = (OfficeSpecificDataLabelsUIConnector.CountLabelUse(NewDR[PARTNERCLASSCOL].ToString(), AReadTransaction) != 0); TmpTable.Rows.Add(NewDR); // DataLabels available for BANKs? NewDR = TmpTable.NewRow(); NewDR[PARTNERCLASSCOL] = SharedTypes.PartnerClassEnumToString(TPartnerClass.BANK); NewDR[DLAVAILCOL] = (OfficeSpecificDataLabelsUIConnector.CountLabelUse(NewDR[PARTNERCLASSCOL].ToString(), AReadTransaction) != 0); TmpTable.Rows.Add(NewDR); // DataLabels available for VENUEs? NewDR = TmpTable.NewRow(); NewDR[PARTNERCLASSCOL] = SharedTypes.PartnerClassEnumToString(TPartnerClass.VENUE); NewDR[DLAVAILCOL] = (OfficeSpecificDataLabelsUIConnector.CountLabelUse(NewDR[PARTNERCLASSCOL].ToString(), AReadTransaction) != 0); TmpTable.Rows.Add(NewDR); return(TmpTable); }
private void AddPartner(System.Object sender, EventArgs e) { ExtractTDSMExtractRow NewRow; System.Int64 PartnerKey = 0; string PartnerShortName; TPartnerClass?PartnerClass; TPartnerClass PartnerClass2; TLocationPK ResultLocationPK; DataRow[] ExistingPartnerDataRows; ExtractTDSMExtractRow ExisitingPartnerRow; // If the delegate is defined, the host form will launch a Modal Partner Find screen for us if (TCommonScreensForwarding.OpenPartnerFindScreen != null) { // delegate IS defined try { TCommonScreensForwarding.OpenPartnerFindScreen.Invoke ("", out PartnerKey, out PartnerShortName, out PartnerClass, out ResultLocationPK, this.ParentForm); if (PartnerKey != -1) { ExistingPartnerDataRows = FMainDS.MExtract.Select(ExtractTDSMExtractTable.GetPartnerKeyDBName() + " = " + PartnerKey.ToString()); if (ExistingPartnerDataRows.Length > 0) { // check if partner already exists in extract MessageBox.Show(Catalog.GetString("A record for this partner already exists in this extract"), Catalog.GetString("Add Partner to Extract"), MessageBoxButtons.OK, MessageBoxIcon.Information); // select the already existing partner record in the grid so the user can see it ExisitingPartnerRow = (ExtractTDSMExtractRow)ExistingPartnerDataRows[0]; SelectByPartnerKey(PartnerKey, ExisitingPartnerRow.SiteKey); return; } TRemote.MPartner.Partner.ServerLookups.WebConnectors.GetPartnerShortName( PartnerKey, out PartnerShortName, out PartnerClass2); // add new record to extract NewRow = FMainDS.MExtract.NewRowTyped(); NewRow.ExtractId = FExtractId; NewRow.PartnerKey = PartnerKey; NewRow.PartnerShortName = PartnerShortName; NewRow.PartnerClass = SharedTypes.PartnerClassEnumToString(PartnerClass2); NewRow.SiteKey = ResultLocationPK.SiteKey; NewRow.LocationKey = ResultLocationPK.LocationKey; FMainDS.MExtract.Rows.Add(NewRow); // Refresh DataGrid to show the added partner record grdDetails.Refresh(); // select the added partner record in the grid so the user can see the change SelectByPartnerKey(PartnerKey, ResultLocationPK.SiteKey); // enable save button on screen FPetraUtilsObject.SetChangedFlag(); } } catch (Exception exp) { throw new EOPAppException("Exception occured while calling PartnerFindScreen Delegate!", exp); } // end try } }
/// <summary> /// todoComment /// </summary> /// <param name="AChangingPartnerTypeRow"></param> /// <param name="AIsRemoval"></param> /// <returns></returns> public Boolean PerformPartnerTypeAddOrRemoval(DataRow AChangingPartnerTypeRow, out Boolean AIsRemoval) { const String TYPECODE_COSTCENTRE = "COSTCENTRE"; Boolean ReturnValue = false; AIsRemoval = false; String TypeCode; DataRow ExistingMatchingDataRow; PPartnerTypeTable PartnerTypeTable; PPartnerTypeRow TheNewRow; PTypeRow CheckTypeRow; DataRowView[] CheckTypeRows; DialogResult CheckTypeRowsAnswer; TRecalculateScreenPartsEventArgs RecalculateScreenPartsEventArgs; String CostCentreLink; PartnerTypeTable = FMainDS.PPartnerType; try { TypeCode = AChangingPartnerTypeRow["TypeCode"].ToString(); ExistingMatchingDataRow = PartnerTypeTable.Rows.Find(new Object[] { ((PPartnerRow)FMainDS.PPartner.Rows[0]).PartnerKey, TypeCode }); if (ExistingMatchingDataRow == null) { /* * Add Special Type */ // Check security permission if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapCREATE, PPartnerTypeTable.GetTableDBName())) { TMessages.MsgSecurityException(new ESecurityDBTableAccessDeniedException("", "create", PPartnerTypeTable.GetTableDBName()), this.GetType()); AChangingPartnerTypeRow.CancelEdit(); // reset to unchecked return(false); } // Check: is this Partner Type assignable? // MessageBox.Show("Perform check: is PartnerType assignable? TypeCode: " + TypeCode); CheckTypeRows = FDataCache_PartnerTypeListDV.FindRows(TypeCode); if (CheckTypeRows.Length > 0) { CheckTypeRow = (PTypeRow)CheckTypeRows[0].Row; if (!CheckTypeRow.ValidType) { /*CheckTypeRowsAnswer = TMessages.MsgQuestion( * ErrorCodes.GetErrorInfo(PetraErrorCodes.ERR_VALUEUNASSIGNABLE, TypeCode), * this.GetType(), false);*/ CheckTypeRowsAnswer = MessageBox.Show( string.Format(StrTheCodeIsNoLongerActive, TypeCode), Catalog.GetString("Invalid Data Entered"), MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2); if (CheckTypeRowsAnswer == DialogResult.No) { // reset to unchecked AChangingPartnerTypeRow.CancelEdit(); return(false); } } } // add new row to PartnerType table PartnerTypeTable = FMainDS.PPartnerType; TheNewRow = PartnerTypeTable.NewRowTyped(); TheNewRow.PartnerKey = FMainDS.PPartner[0].PartnerKey; TheNewRow.TypeCode = TypeCode; TheNewRow.CreatedBy = UserInfo.GUserInfo.UserID; TheNewRow.DateCreated = DateTime.Now.Date; PartnerTypeTable.Rows.Add(TheNewRow); // Fire OnRecalculateScreenParts event RecalculateScreenPartsEventArgs = new TRecalculateScreenPartsEventArgs(); RecalculateScreenPartsEventArgs.ScreenPart = TScreenPartEnum.spCounters; OnRecalculateScreenParts(RecalculateScreenPartsEventArgs); ReturnValue = true; AIsRemoval = false; } else { /* * Remove Special Type */ // Check security permission if (!UserInfo.GUserInfo.IsTableAccessOK(TTableAccessPermission.tapDELETE, PPartnerTypeTable.GetTableDBName())) { TMessages.MsgSecurityException(new ESecurityDBTableAccessDeniedException("", "delete", PPartnerTypeTable.GetTableDBName()), this.GetType()); // reset to checked AChangingPartnerTypeRow.CancelEdit(); return(false); } // perform check: If COSTCENTRE is to be removed then check whether Partner has a link to costcentre set up if (TypeCode == TYPECODE_COSTCENTRE) { try { if (FPartnerEditUIConnector.HasPartnerCostCentreLink(out CostCentreLink)) { MessageBox.Show(String.Format(StrPartnerHasCostCentreLink, CostCentreLink, StrPartnerHasCostCentreLinkTitle)); // reset to checked AChangingPartnerTypeRow.CancelEdit(); return(false); } } catch (ESecurityAccessDeniedException Exp) { TMessages.MsgSecurityException(Exp, this.GetType()); MessageBox.Show(StrSecurityPreventsRemoval, StrSecurityPreventsRemovalTitle, MessageBoxButtons.OK, MessageBoxIcon.Warning); // reset to checked AChangingPartnerTypeRow.CancelEdit(); return(false); } catch (Exception) { throw; } } // Delete row from PartnerType table ExistingMatchingDataRow.Delete(); // Fire OnRecalculateScreenParts event RecalculateScreenPartsEventArgs = new TRecalculateScreenPartsEventArgs(); RecalculateScreenPartsEventArgs.ScreenPart = TScreenPartEnum.spCounters; OnRecalculateScreenParts(RecalculateScreenPartsEventArgs); ReturnValue = true; AIsRemoval = true; } /* * Check if this change could be applied to Family Members */ // TODO PartnerTypeFamilyMembersPropagationSelectionWinForm Dialog still missing #if TODO if (SharedTypes.PartnerClassStringToEnum(FMainDS.PPartner[0].PartnerClass) == TPartnerClass.FAMILY) { if (HasFamilyFamilyMembers()) { if (FDelegatePartnerTypePropagationSelection != null) { if (!AIsRemoval) { FMainDS.Merge(FDelegatePartnerTypePropagationSelection(TypeCode, "ADD")); } else { FMainDS.Merge(FDelegatePartnerTypePropagationSelection(TypeCode, "DELETE")); } } } } #endif } catch (Exception E) { MessageBox.Show(E.ToString()); ReturnValue = false; } return(ReturnValue); }
/// <summary> /// Sets the Partner's PartnerStatus to 'ACTIVE'. /// </summary> public void SetPartnerStatusToActive() { cmbPartnerStatus.SetSelectedString(SharedTypes.StdPartnerStatusCodeEnumToString(TStdPartnerStatusCode.spscACTIVE)); }
/// <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; }
private void BtnOK_Click(System.Object sender, System.EventArgs e) { Int64 NewPartnerKey; String NewPartnerClass; NewPartnerClass = cmbPartnerClass.GetSelectedString(); if (NewPartnerClass == SharedTypes.PartnerClassEnumToString(TPartnerClass.PERSON)) { if (TAppSettingsManager.GetValue("AllowCreationPersonRecords", "true", false).ToLower() != "true") { MessageBox.Show("We are planning to change the Person and Family system to something more easy to understand." + Environment.NewLine + "To avoid problems upgrading your database, please create a FAMILY partner rather than a PERSON partner!" + Environment.NewLine + "Otherwise, please add a parameter AllowCreationPersonRecords with value true to your config files.", "NO CREATION OF PERSONS AT THE MOMENT", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); return; } FFamilyPartnerKey = Convert.ToInt32(txtFamilyPartnerBox.Text); if (FFamilyPartnerKey == 0) { MessageBox.Show(StrFamilyNeedsToBeSelected, StrFamilyNeedsToBeSelectedTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtFamilyPartnerBox.Focus(); return; } else //check if a family with the given familyPartnerKey exists; if this is not the case then diplay a message box { TPartnerClass[] AValidPartnerClasses = new TPartnerClass[1]; AValidPartnerClasses[0] = TPartnerClass.FAMILY; bool APartnerExists; String APartnerShortName; TPartnerClass APartnerClass; TStdPartnerStatusCode APartnerStatus; if (!TServerLookup.TMPartner.VerifyPartner(FFamilyPartnerKey, AValidPartnerClasses, out APartnerExists, out APartnerShortName, out APartnerClass, out APartnerStatus)) { MessageBox.Show(StrCorrectFamilyKeyNeedsToBeEntered, StrCorrectFamilyKeyNeedsToBeEnteredTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); txtFamilyPartnerBox.Focus(); return; } } } NewPartnerKey = txtPartnerKey.PartnerKey; if (FPartnerEditUIConnector.SubmitPartnerKeyForNewPartner(FSiteKey, FPartnerKey, ref NewPartnerKey)) { FPartnerKey = NewPartnerKey; DialogResult = System.Windows.Forms.DialogResult.OK; Close(); } else { MessageBox.Show(String.Format(StrAPartnerKeyExists, txtPartnerKey.PartnerKey, StrAPartnerKeyExistsTitle)); txtPartnerKey.Focus(); } }