/// <summary> /// Validates the Partner Detail data of a Partner of PartnerClass FAMILY. /// </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> /// <returns>void</returns> public static void ValidatePartnerFamilyManual(object AContext, PFamilyRow ARow, ref TVerificationResultCollection AVerificationResultCollection, TValidationControlsDict AValidationControlsDict) { DataColumn ValidationColumn; TValidationControlsData ValidationControlsData; TVerificationResult VerificationResult; // Don't validate deleted DataRows if (ARow.RowState == DataRowState.Deleted) { return; } // 'Marital Status' must not be unassignable ValidationColumn = ARow.Table.Columns[PFamilyTable.ColumnMaritalStatusId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { PtMaritalStatusTable TypeTable; PtMaritalStatusRow TypeRow; VerificationResult = null; if ((!ARow.IsMaritalStatusNull()) && (ARow.MaritalStatus != String.Empty)) { TypeTable = (PtMaritalStatusTable)TSharedDataCache.TMPartner.GetCacheablePartnerTable( TCacheablePartnerTablesEnum.MaritalStatusList); TypeRow = (PtMaritalStatusRow)TypeTable.Rows.Find(ARow.MaritalStatus); // 'Marital Status' must not be unassignable if ((TypeRow != null) && !TypeRow.AssignableFlag && (TypeRow.IsAssignableDateNull() || (TypeRow.AssignableDate <= DateTime.Today))) { // if 'Marital Status' is unassignable then check if the value has been changed or if it is a new record if (TSharedValidationHelper.IsRowAddedOrFieldModified(ARow, PFamilyTable.GetMaritalStatusDBName())) { VerificationResult = new TScreenVerificationResult(new TVerificationResult(AContext, ErrorCodes.GetErrorInfo(PetraErrorCodes.ERR_VALUEUNASSIGNABLE_WARNING, new string[] { ValidationControlsData.ValidationControlLabel, ARow.MaritalStatus })), ValidationColumn, ValidationControlsData.ValidationControl); } } } // Handle addition/removal to/from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } // 'MaritalStatusSince' must be valid ValidationColumn = ARow.Table.Columns[PFamilyTable.ColumnMaritalStatusSinceId]; if (AValidationControlsDict.TryGetValue(ValidationColumn, out ValidationControlsData)) { VerificationResult = TSharedValidationControlHelper.IsNotInvalidDate(ARow.MaritalStatusSince, ValidationControlsData.ValidationControlLabel, AVerificationResultCollection, false, AContext, ValidationColumn, ValidationControlsData.ValidationControl); // Handle addition to/removal from TVerificationResultCollection AVerificationResultCollection.Auto_Add_Or_AddOrRemove(AContext, VerificationResult, ValidationColumn); } }