Index: Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Service/ClosingStructuresCalculationService.cs =================================================================== diff -u -ra16989b635b3770eb1bbf10c47e41eef796ce2fa -rad4a977be1c898ddc8bebd75252212538f77035f --- Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Service/ClosingStructuresCalculationService.cs (.../ClosingStructuresCalculationService.cs) (revision a16989b635b3770eb1bbf10c47e41eef796ce2fa) +++ Ringtoets/ClosingStructures/src/Ringtoets.ClosingStructures.Service/ClosingStructuresCalculationService.cs (.../ClosingStructuresCalculationService.cs) (revision ad4a977be1c898ddc8bebd75252212538f77035f) @@ -125,6 +125,13 @@ canceled = true; } + /// + /// Performs validation over the values on the given . Error and status information is logged during + /// the execution of the operation. + /// + /// The for which to validate the values. + /// The for which to validate the values. + /// Truec> if has no validation errors; Falsec> otherwise. public static bool Validate(StructuresCalculation calculation, IAssessmentSection assessmentSection) { CalculationServiceHelper.LogValidationBeginTime(calculation.Name); @@ -276,6 +283,9 @@ case ClosingStructureInflowModelType.VerticalWall: validationResults.AddRange(ValidateVerticalWallCalculationInput(inputParameters)); break; + case ClosingStructureInflowModelType.LowSill: + validationResults.AddRange(ValidateLowSillCalculationInput(inputParameters)); + break; default: throw new InvalidEnumArgumentException("inputParameters", (int) inputParameters.InflowModelType, @@ -328,6 +338,41 @@ return validationResults; } + private static IEnumerable ValidateLowSillCalculationInput(ClosingStructuresInput input) + { + var validationResults = new List(); + + validationResults.AddRange(DistributionValidation.ValidateDistribution(input.StormDuration, + ParameterNameExtractor.GetFromDisplayName(RingtoetsCommonFormsResources.Structure_StormDuration_DisplayName))); + + validationResults.AddRange(DistributionValidation.ValidateDistribution(input.InsideWaterLevel, + ParameterNameExtractor.GetFromDisplayName(RingtoetsCommonFormsResources.Structure_InsideWaterLevel_DisplayName))); + + validationResults.AddRange(DistributionValidation.ValidateDistribution(input.ModelFactorSuperCriticalFlow, + ParameterNameExtractor.GetFromDisplayName(RingtoetsCommonFormsResources.Structure_ModelFactorSuperCriticalFlow_DisplayName))); + + if (IsInvalidNumber(input.FactorStormDurationOpenStructure)) + { + validationResults.Add(string.Format(RingtoetsCommonServiceResources.Validation_ValidateInput_No_value_entered_for_ParameterName_0_, + ParameterNameExtractor.GetFromDisplayName(ClosingStructuresFormsResources.FactorStormDurationOpenStructure_DisplayName))); + } + + validationResults.AddRange(DistributionValidation.ValidateDistribution(input.WidthFlowApertures, + ParameterNameExtractor.GetFromDisplayName(RingtoetsCommonFormsResources.Structure_WidthFlowApertures_DisplayName))); + + validationResults.AddRange(DistributionValidation.ValidateDistribution(input.FlowWidthAtBottomProtection, + ParameterNameExtractor.GetFromDisplayName(RingtoetsCommonFormsResources.Structure_FlowWidthAtBottomProtection_DisplayName))); + validationResults.AddRange(DistributionValidation.ValidateDistribution(input.StorageStructureArea, + ParameterNameExtractor.GetFromDisplayName(RingtoetsCommonFormsResources.Structure_StorageStructureArea_DisplayName))); + validationResults.AddRange(DistributionValidation.ValidateDistribution(input.AllowedLevelIncreaseStorage, + ParameterNameExtractor.GetFromDisplayName(RingtoetsCommonFormsResources.Structure_AllowedLevelIncreaseStorage_DisplayName))); + validationResults.AddRange(DistributionValidation.ValidateDistribution(input.ThresholdHeightOpenWeir, + ParameterNameExtractor.GetFromDisplayName(RingtoetsCommonFormsResources.Structure_ThresholdHeightOpenWeir_DisplayName))); + validationResults.AddRange(DistributionValidation.ValidateDistribution(input.CriticalOvertoppingDischarge, + ParameterNameExtractor.GetFromDisplayName(RingtoetsCommonFormsResources.Structure_CriticalOvertoppingDischarge_DisplayName))); + return validationResults; + } + private static bool IsInvalidNumber(RoundedDouble value) { return double.IsNaN(value) || double.IsInfinity(value);