/// <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);
        }
Example #2
0
        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);
        }
Example #3
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);
        }
Example #4
0
        /// <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);
            }
        }
Example #5
0
        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);
        }
Example #6
0
        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;
            }
        }
Example #7
0
        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);
                }
            }
        }
Example #8
0
        /// <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);
        }
Example #9
0
 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();
     }
 }
Example #10
0
        /// <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);
        }
Example #11
0
        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;
            }
        }
Example #12
0
        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);
        }
Example #14
0
        /// <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);
        }
Example #18
0
        /// <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;
            }
        }
Example #20
0
        /// <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);
        }
Example #21
0
        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;
            }
        }
Example #22
0
        /// <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
        }
Example #23
0
        /// 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
        }
Example #24
0
 private void CommunicationService_PublishingStatusNotification(object sender, SharedTypes.ValueEventArgs<PublishingStatus> args)
 {
     if (CommunicationService.SessionId == ((CommunicationService)sender).SessionId)
         Deployment.Current.Dispatcher.BeginInvoke(() => ShowStatus(args.Value));
 }
Example #25
0
        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
            }
        }
Example #28
0
        /// <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);
        }
Example #29
0
 /// <summary>
 /// Sets the Partner's PartnerStatus to 'ACTIVE'.
 /// </summary>
 public void SetPartnerStatusToActive()
 {
     cmbPartnerStatus.SetSelectedString(SharedTypes.StdPartnerStatusCodeEnumToString(TStdPartnerStatusCode.spscACTIVE));
 }
Example #30
0
        /// <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;
        }
Example #31
0
        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();
            }
        }