コード例 #1
0
        /// <summary>
        /// Loads FamilyMembers Data from Petra Server into FMainDS.
        ///
        /// </summary>
        /// <returns>true if successful and Family has Family Members, otherwise false.
        /// //DevAge.ComponentModel.Validator;</returns>
        public Boolean LoadDataOnDemand()
        {
            Boolean ReturnValue;
            TRecalculateScreenPartsEventArgs RecalculateScreenPartsEventArgs;
            Int64 FamilyPartnerKey;

            if (FMainDS.PPartner[0].PartnerClass == SharedTypes.PartnerClassEnumToString(TPartnerClass.FAMILY))
            {
                FamilyPartnerKey = FMainDS.PFamily[0].PartnerKey;
            }
            else
            {
                FamilyPartnerKey = FMainDS.PPerson[0].FamilyKey;
            }

            // retrieve Family Members from PetraServer
            // If family has no members, returns false
            try
            {
                // Make sure that Typed DataTable is already there at Client side
                if (FMainDS.FamilyMembers == null)
                {
                    FMainDS.Tables.Add(new PartnerEditTDSFamilyMembersTable(PartnerEditTDSFamilyMembersTable.GetTableName()));
                    FMainDS.InitVars();
                }

                FMainDS.FamilyMembers.Rows.Clear();
                FMainDS.Merge(FPartnerEditUIConnector.GetDataFamilyMembers(FamilyPartnerKey, ""));
                FMainDS.FamilyMembers.AcceptChanges();

                if (FMainDS.FamilyMembers.Rows.Count > 0)
                {
                    ReturnValue = true;
                }
                else
                {
                    ReturnValue = false;
                }
            }
            catch (System.NullReferenceException)
            {
                ReturnValue = false;
                return(false);
            }
            catch (Exception)
            {
                ReturnValue = false;

                // raise;
            }

            // Fire OnRecalculateScreenParts event
            RecalculateScreenPartsEventArgs            = new TRecalculateScreenPartsEventArgs();
            RecalculateScreenPartsEventArgs.ScreenPart = TScreenPartEnum.spCounters;
            OnRecalculateScreenParts(RecalculateScreenPartsEventArgs);
            FDataGrid.Selection.Focus(new Position(1, 1), true);
            return(ReturnValue);
        }
コード例 #2
0
        private Boolean PartnerStatusCodeChangePromotion(string ANewPartnerStatusCode)
        {
            Boolean ReturnValue;
            String  FamilyMembersText;
            PartnerEditTDSFamilyMembersTable FamilyMembersDT;
            Int32 Counter;
            Int32 Counter2;
            PartnerEditTDSFamilyMembersRow FamilyMembersDR;
            PartnerEditTDSFamilyMembersInfoForStatusChangeRow FamilyMembersInfoDR;
            DialogResult FamilyMembersResult;
            DataView     FamilyMembersDV;

            ReturnValue       = true;
            FamilyMembersText = "";

            /* Retrieve Family Members from the PetraServer */
            FamilyMembersDT = FPartnerEditUIConnector.GetDataFamilyMembers(FMainDS.PPartner[0].PartnerKey, "");
            FamilyMembersDV = new DataView(FamilyMembersDT, "", PPersonTable.GetFamilyIdDBName() + " ASC", DataViewRowState.CurrentRows);

            /* Build a formatted String of Family Members' PartnerKeys and ShortNames */
            for (Counter = 0; Counter <= FamilyMembersDV.Count - 1; Counter += 1)
            {
                FamilyMembersDR   = (PartnerEditTDSFamilyMembersRow)FamilyMembersDV[Counter].Row;
                FamilyMembersText = FamilyMembersText + "   " + StringHelper.FormatStrToPartnerKeyString(FamilyMembersDR.PartnerKey.ToString()) +
                                    "   " + FamilyMembersDR.PartnerShortName + Environment.NewLine;
            }

            /* If there are Family Members, ... */
            if (FamilyMembersText != "")
            {
                /* show MessageBox with Family Members to the user, asking whether to promote. */
                FamilyMembersResult =
                    MessageBox.Show(
                        String.Format(
                            Catalog.GetString("Partner Status change to '{0}': \r\n" +
                                              "Should OpenPetra apply this change to all Family Members of this Family?"),
                            ANewPartnerStatusCode) + Environment.NewLine + Environment.NewLine +
                        Catalog.GetString("The Family has the following Family Members:") + Environment.NewLine +
                        FamilyMembersText + Environment.NewLine +
                        Catalog.GetString("(Choose 'Cancel' to cancel the change of the Partner Status\r\n" +
                                          "for this Partner)."),
                        Catalog.GetString("Promote Partner Status Change to All Family Members?"),
                        MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2);

                /* Check User's response */
                switch (FamilyMembersResult)
                {
                case System.Windows.Forms.DialogResult.Yes:

                    /*
                     * User wants to promote the Partner StatusCode change to Family
                     * Members: add new DataTable for that purpose if it doesn't exist yet.
                     */
                    if (FMainDS.FamilyMembersInfoForStatusChange == null)
                    {
                        FMainDS.Tables.Add(new PartnerEditTDSFamilyMembersInfoForStatusChangeTable());
                        FMainDS.InitVars();
                    }

                    /*
                     * Remove any existing DataRows so we start from a 'clean slate'
                     * (the user could change the Partner StatusCode more than once...)
                     */
                    FMainDS.FamilyMembersInfoForStatusChange.Rows.Clear();

                    /*
                     * Add the PartnerKeys of the Family Members that we have just displayed
                     * to the user to the DataTable.
                     *
                     * Note: This DataTable will be sent to the PetraServer when the user
                     * saves the Partner. The UIConnector will pick it up and process it.
                     */
                    for (Counter2 = 0; Counter2 <= FamilyMembersDV.Count - 1; Counter2 += 1)
                    {
                        FamilyMembersDR                = (PartnerEditTDSFamilyMembersRow)FamilyMembersDV[Counter2].Row;
                        FamilyMembersInfoDR            = FMainDS.FamilyMembersInfoForStatusChange.NewRowTyped(false);
                        FamilyMembersInfoDR.PartnerKey = FamilyMembersDR.PartnerKey;
                        FMainDS.FamilyMembersInfoForStatusChange.Rows.Add(FamilyMembersInfoDR);
                    }

                    break;

                case System.Windows.Forms.DialogResult.No:

                    /* no promotion wanted > nothing to do */
                    /* (StatusCode will be changed only for the Family) */
                    break;

                case System.Windows.Forms.DialogResult.Cancel:
                    ReturnValue = false;
                    break;
                }
            }
            else
            {
            }

            /* no promotion needed since there are no Family Members */
            /* (StatusCode will be changed only for the Family) */
            return(ReturnValue);
        }