private void ShowEmergencyContacts(object sender, EventArgs e) { string contactFor = string.Empty; string primaryContact = Catalog.GetString("PRIMARY EMERGENCY CONTACT") + Environment.NewLine + Environment.NewLine; string secondaryContact = Catalog.GetString("SECONDARY EMERGENCY CONTACT") + Environment.NewLine + Environment.NewLine; Int64 primaryContactKey = 0; Int64 secondaryContactKey = 0; if ((FMainDS.PPerson != null) && (FMainDS.PPerson.Rows.Count > 0)) { PPersonRow row = (PPersonRow)FMainDS.PPerson.Rows[0]; contactFor = String.Format(Catalog.GetString("Emergency Contact Information For: {0} {1} {2} [{3:0000000000}]"), row.Title, row.FirstName, row.FamilyName, row.PartnerKey); FPetraUtilsObject.GetForm().Cursor = Cursors.WaitCursor; PPartnerRelationshipTable relationshipTable = TRemote.MPartner.Partner.WebConnectors.GetPartnerRelationships(row.PartnerKey); FPetraUtilsObject.GetForm().Cursor = Cursors.Default; for (int i = 0; i < relationshipTable.Rows.Count; i++) { PPartnerRelationshipRow relationshipRow = (PPartnerRelationshipRow)relationshipTable.Rows[i]; if (string.Compare(relationshipRow.RelationName, "EMER-1", true) == 0) { ParseEmergencyContactData(ref primaryContact, relationshipRow); primaryContactKey = relationshipRow.PartnerKey; } else if (string.Compare(relationshipRow.RelationName, "EMER-2", true) == 0) { ParseEmergencyContactData(ref secondaryContact, relationshipRow); secondaryContactKey = relationshipRow.PartnerKey; } } } if (primaryContactKey == 0) { primaryContact += Catalog.GetString("No primary contact"); } if (secondaryContactKey == 0) { secondaryContact += Catalog.GetString("No secondary contact"); } if ((primaryContactKey != 0) || (secondaryContactKey != 0)) { // Show the emergency contacts dialog and pass it the inofrmation we have found TFrmEmergencyContactsDialog dlg = new TFrmEmergencyContactsDialog(FPetraUtilsObject.GetCallerForm()); dlg.SetParameters(contactFor, primaryContact, secondaryContact, primaryContactKey, secondaryContactKey); dlg.Show(); } else { MessageBox.Show(Catalog.GetString("There is no emergency contact information for this person."), Catalog.GetString("Emergency Contacts"), MessageBoxButtons.OK, MessageBoxIcon.Information); } }
private void ValidateDataDetailsManual(PPartnerRelationshipRow ARow) { bool NewPartner = (FMainDS.PPartner.Rows[0].RowState == DataRowState.Added); TVerificationResultCollection VerificationResultCollection = FPetraUtilsObject.VerificationResultCollection; TSharedPartnerValidation_Partner.ValidateRelationshipManual(this, ARow, ref VerificationResultCollection, FValidationControlsDict, NewPartner, ((PPartnerRow)FMainDS.PPartner.Rows[0]).PartnerKey); }
private void ParseEmergencyContactData(ref string AContact, PPartnerRelationshipRow ARelationshipRow) { string primaryPhone; string primaryEmail; PartnerEditTDS editTDS = TRemote.MPartner.Partner.WebConnectors.GetPartnerDetails(ARelationshipRow.PartnerKey, false, false, out primaryPhone, out primaryEmail); if ((editTDS.PPartner != null) && (editTDS.PPartner.Rows.Count > 0)) { PPartnerRow partnerRow = (PPartnerRow)editTDS.PPartner.Rows[0]; AContact += String.Format("{0}{1}{1}", partnerRow.PartnerShortName, Environment.NewLine); } DateTime?dtLastModified = null; if (!ARelationshipRow.IsDateModifiedNull()) { // We have a modified date dtLastModified = ARelationshipRow.DateModified; // Just check to make sure that the created date is not later for some starnge reason if (!ARelationshipRow.IsDateCreatedNull()) { if (ARelationshipRow.DateCreated > dtLastModified) { dtLastModified = ARelationshipRow.DateCreated; } } } else if (!ARelationshipRow.IsDateCreatedNull()) { // No date modifed but we do have the original creation date dtLastModified = ARelationshipRow.DateCreated; } if (dtLastModified.HasValue) { AContact += String.Format(Catalog.GetString("This contact was last set on: {0}{1}{1}"), StringHelper.DateToLocalizedString(dtLastModified.Value), Environment.NewLine); } if (primaryPhone.Length > 0) { AContact += String.Format(Catalog.GetString("Primary phone: {0}{1}"), primaryPhone, Environment.NewLine); } if (primaryEmail.Length > 0) { AContact += String.Format(Catalog.GetString("Primary email: {0}{1}"), primaryEmail, Environment.NewLine); } if (ARelationshipRow.Comment.Length > 0) { AContact += String.Format(Catalog.GetString("Extra information:{1} {0}{1}"), ARelationshipRow.Comment, Environment.NewLine); } }
private void ShowDetailsManual(PPartnerRelationshipRow ARow) { long RelationPartnerKey; btnEditOtherPartner.Enabled = false; if (ARow != null) { btnDelete.Enabled = true; // depending on the relation select other partner to be edited if (ARow.PartnerKey == ((PPartnerRow)FMainDS.PPartner.Rows[0]).PartnerKey) { RelationPartnerKey = GetSelectedDetailRow().RelationKey; } else { RelationPartnerKey = GetSelectedDetailRow().PartnerKey; } if (RelationPartnerKey != 0) { btnEditOtherPartner.Enabled = true; } if (ARow.RowState == DataRowState.Added) { txtPPartnerRelationshipPartnerKey.Enabled = true; cmbPPartnerRelationshipRelationName.Enabled = true; txtPPartnerRelationshipRelationKey.Enabled = true; } else { txtPPartnerRelationshipPartnerKey.Enabled = false; cmbPPartnerRelationshipRelationName.Enabled = false; txtPPartnerRelationshipRelationKey.Enabled = false; } } }
private void GetDetailDataFromControlsManual(PPartnerRelationshipRow ARow) { }
public void TestDeleteChurch() { DataSet ResponseDS = new PartnerEditTDS(); TVerificationResultCollection VerificationResult; String TextMessage; Boolean CanDeletePartner; PPartnerRow ChurchPartnerRow; PPartnerRow PartnerRow; TSubmitChangesResult result; Int64 PartnerKey; TPartnerEditUIConnector connector = new TPartnerEditUIConnector(); PartnerEditTDS MainDS = new PartnerEditTDS(); ChurchPartnerRow = TCreateTestPartnerData.CreateNewChurchPartner(MainDS); result = connector.SubmitChanges(ref MainDS, ref ResponseDS, out VerificationResult); Assert.AreEqual(TSubmitChangesResult.scrOK, result, "create church record"); // check if church partner can be deleted (still needs to be possible at this point) CanDeletePartner = TPartnerWebConnector.CanPartnerBeDeleted(ChurchPartnerRow.PartnerKey, out TextMessage); if (TextMessage.Length > 0) { TLogging.Log(TextMessage); } Assert.IsTrue(CanDeletePartner); // create family partner and relationship to church partner PartnerRow = TCreateTestPartnerData.CreateNewFamilyPartner(MainDS); PPartnerRelationshipRow RelationshipRow = MainDS.PPartnerRelationship.NewRowTyped(); RelationshipRow.PartnerKey = ChurchPartnerRow.PartnerKey; RelationshipRow.RelationName = "SUPPCHURCH"; RelationshipRow.RelationKey = PartnerRow.PartnerKey; MainDS.PPartnerRelationship.Rows.Add(RelationshipRow); result = connector.SubmitChanges(ref MainDS, ref ResponseDS, out VerificationResult); Assert.AreEqual(TSubmitChangesResult.scrOK, result, "add relationship record to church record"); CommonNUnitFunctions.EnsureNullOrOnlyNonCriticalVerificationResults(VerificationResult, "There was a critical error when saving:"); // now deletion must not be possible since relationship as SUPPCHURCH exists CanDeletePartner = TPartnerWebConnector.CanPartnerBeDeleted(ChurchPartnerRow.PartnerKey, out TextMessage); if (TextMessage.Length > 0) { TLogging.Log(TextMessage); } Assert.IsTrue(!CanDeletePartner); // now test actual deletion of church partner ChurchPartnerRow = TCreateTestPartnerData.CreateNewChurchPartner(MainDS); PartnerKey = ChurchPartnerRow.PartnerKey; result = connector.SubmitChanges(ref MainDS, ref ResponseDS, out VerificationResult); Assert.AreEqual(TSubmitChangesResult.scrOK, result, "create church record for deletion"); // check if church record is being deleted Assert.IsTrue(TPartnerWebConnector.DeletePartner(PartnerKey, out VerificationResult)); // check that church record is really deleted Assert.IsTrue(!TPartnerServerLookups.VerifyPartner(PartnerKey)); }
/// <summary> /// Get the missing information of a short term application partner. /// This could be Passport, Date of Birth, Gender, Mother Tongue, Emergency Contact, Event, Travel information /// </summary> /// <param name="APartnerKey">Partner Key</param> /// <param name="AApplicationKey">Application Key</param> /// <param name="ARegistrationOffice">Registration Office</param> /// <returns>String of all the missing informations for this partner and application</returns> private String GetMissingInfo(Int64 APartnerKey, int AApplicationKey, Int64 ARegistrationOffice) { String MissingInfo = ""; PmPassportDetailsTable PassportTable; PPersonTable PersonTable; PPartnerTable PartnerTable; PPartnerRelationshipTable PartnerRelationshipTable; PmShortTermApplicationTable ShortTermApplicationTable; // Check for passport Details PassportTable = PmPassportDetailsAccess.LoadViaPPerson(APartnerKey, situation.GetDatabaseConnection().Transaction); bool PassportDetailMissing = true; for (int Counter = 0; Counter < PassportTable.Rows.Count; ++Counter) { PmPassportDetailsRow row = (PmPassportDetailsRow)PassportTable.Rows[Counter]; if (row.FullPassportName.Length > 0) { PassportDetailMissing = false; } } if (PassportDetailMissing) { MissingInfo += " Passport Details,"; } // Check for Date of Birth and Gender PersonTable = PPersonAccess.LoadByPrimaryKey(APartnerKey, situation.GetDatabaseConnection().Transaction); if (PassportTable.Rows.Count == 0) { MissingInfo += " Date of Birth, Gender,"; } else { PPersonRow PersonRow = (PPersonRow)PersonTable.Rows[0]; if (PersonRow.IsDateOfBirthNull()) { MissingInfo += " Date of Birth,"; } if (PersonRow.Gender == "Unknown") { MissingInfo += " Gender,"; } } // Check for mother tongue PartnerTable = PPartnerAccess.LoadByPrimaryKey(APartnerKey, situation.GetDatabaseConnection().Transaction); if (PassportTable.Rows.Count == 0) { MissingInfo += " Mother Tongue,"; } else if (((PPartnerRow)PartnerTable.Rows[0]).LanguageCode == "99") { MissingInfo += " Mother Tongue,"; } // Check for partner relationship PartnerRelationshipTable = PPartnerRelationshipAccess.LoadViaPPartnerRelationKey(APartnerKey, situation.GetDatabaseConnection().Transaction); bool HasEmergencyContact = false; for (int Counter = 0; Counter < PartnerRelationshipTable.Rows.Count; ++Counter) { PPartnerRelationshipRow Row = (PPartnerRelationshipRow)PartnerRelationshipTable.Rows[Counter]; if (Row.PartnerKey == 0) { continue; } if ((Row.RelationName == "PAREND") || (Row.RelationName == "GUARDIAN") || (Row.RelationName == "RELATIVE") || (Row.RelationName == "EMER-1") || (Row.RelationName == "EMER-2") || (Row.RelationName == "NOK-OTHER")) { HasEmergencyContact = true; break; } } if (!HasEmergencyContact) { MissingInfo += " Emergency Contact,"; } // Check for Event and Travel information ShortTermApplicationTable = PmShortTermApplicationAccess.LoadByPrimaryKey(APartnerKey, AApplicationKey, ARegistrationOffice, situation.GetDatabaseConnection().Transaction); bool HasEvent = false; bool HasTravelInfo = false; for (int Counter = 0; Counter < ShortTermApplicationTable.Rows.Count; ++Counter) { PmShortTermApplicationRow Row = (PmShortTermApplicationRow)ShortTermApplicationTable.Rows[Counter]; if (Row.ConfirmedOptionCode != "") { HasEvent = true; } if ((!Row.IsArrivalNull()) && (!Row.IsDepartureNull())) { HasTravelInfo = true; } } if (!HasEvent) { MissingInfo += " Event,"; } if (!HasTravelInfo) { MissingInfo += "Travel Information,"; } // remove the last , if (MissingInfo.Length > 0) { MissingInfo.Remove(MissingInfo.Length - 1); } return(MissingInfo); }
/// <summary> /// Validates the Relationship data of a Partner. /// </summary> /// <param name="AContext">Context that describes where the data validation failed.</param> /// <param name="ARow">The <see cref="DataRow" /> which holds the the data against which the validation is run.</param> /// <param name="AVerificationResultCollection">Will be filled with any <see cref="TVerificationResult" /> items if /// data validation errors occur.</param> /// <param name="AValidationControlsDict">A <see cref="TValidationControlsDict" /> containing the Controls that /// display data that is about to be validated.</param> /// <param name="AValidateForNewPartner">true if validation is run for a new partner record</param> /// <param name="APartnerKey">main partner key this validation is run for</param> /// <returns>void</returns> public static void ValidateRelationshipManual(object AContext, PPartnerRelationshipRow ARow, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict, bool AValidateForNewPartner = false, Int64 APartnerKey = 0) { DataColumn ValidationColumn; TValidationControlsData ValidationControlsData; TVerificationResult VerificationResult; // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return; } // 'Partner' must have a valid partner key and must not be 0 ValidationColumn = ARow.Table.Columns[PPartnerRelationshipTable.ColumnPartnerKeyId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = null; // don't complain if this is done for a new partner record (partner key not yet saved in db) if (!(AValidateForNewPartner && (APartnerKey == ARow.PartnerKey))) { VerificationResult = TSharedPartnerValidation_Partner.IsValidPartner( ARow.PartnerKey, new TPartnerClass[] { }, false, "", AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Since the validation can result in different ResultTexts we need to remove any validation result manually as a call to // AVerificationResultCollection.AddOrRemove wouldn't remove a previous validation result with a different // ResultText! AVerificationResultCollection.Remove(ValidationColumn); AVerificationResultCollection.AddAndIgnoreNullValue(VerificationResult); } // 'Partner Key' and 'Another Partner Key'must not be the same // (Partner Key 0 will be dealt with by other checks) if ((ARow.PartnerKey != 0) && (ARow.PartnerKey == ARow.RelationKey)) { VerificationResult = new TScreenVerificationResult(new TVerificationResult(AContext, ErrorCodes.GetErrorInfo(PetraErrorCodes.ERR_VALUESIDENTICAL_ERROR, new string[] { ARow.PartnerKey.ToString(), ARow.RelationKey.ToString() })), ValidationColumn, ValidationControlsData.ValidationControl); } // Handle addition to/removal from TVerificationResultCollection //if (AVerificationResultCollection.Contains(ValidationColumn)) //{xxx AVerificationResultCollection.AddAndIgnoreNullValue(VerificationResult); //} } // 'Another Partner' must have a valid partner key and must not be 0 ValidationColumn = ARow.Table.Columns[PPartnerRelationshipTable.ColumnRelationKeyId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { // don't complain if this is done for a new partner record (partner key not yet saved in db) if (!(AValidateForNewPartner && (APartnerKey == ARow.RelationKey))) { VerificationResult = TSharedPartnerValidation_Partner.IsValidPartner( ARow.RelationKey, new TPartnerClass[] { }, false, "", AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Since the validation can result in different ResultTexts we need to remove any validation result manually as a call to // AVerificationResultCollection.AddOrRemove wouldn't remove a previous validation result with a different // ResultText! AVerificationResultCollection.Remove(ValidationColumn); AVerificationResultCollection.AddAndIgnoreNullValue(VerificationResult); } } // 'Relation' must be valid and have a value ValidationColumn = ARow.Table.Columns[PPartnerRelationshipTable.ColumnRelationNameId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { PRelationTable RelationTable; PRelationRow RelationRow; VerificationResult = null; if ((!ARow.IsRelationNameNull()) && (ARow.RelationName != String.Empty)) { RelationTable = (PRelationTable)TSharedDataCache.TMPartner.GetCacheablePartnerTable( TCacheablePartnerTablesEnum.RelationList); RelationRow = (PRelationRow)RelationTable.Rows.Find(ARow.RelationName); // 'Relation' must be valid if ((RelationRow != null) && !RelationRow.ValidRelation) { VerificationResult = new TScreenVerificationResult(new TVerificationResult(AContext, ErrorCodes.GetErrorInfo(PetraErrorCodes.ERR_VALUEUNASSIGNABLE_WARNING, new string[] { ValidationControlsData.ValidationControlLabel, ARow.RelationName })), ValidationColumn, ValidationControlsData.ValidationControl); } } else { VerificationResult = TStringChecks.StringMustNotBeEmpty(ARow.RelationName, ValidationControlsData.ValidationControlLabel, AContext, ValidationColumn, ValidationControlsData.ValidationControl); } // Handle addition/removal to/from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } }