Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 3
0
        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)
 {
 }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        /// <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);
        }
        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 GetDetailDataFromControlsManual(PPartnerRelationshipRow ARow)
 {
 }
        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;
                }
            }
        }
Ejemplo n.º 11
0
        /// <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);
            }
        }