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