// Copyright (C) Stichting Deltares 2017. All rights reserved. // // This file is part of Ringtoets. // // Ringtoets is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . // // All names, logos, and references to "Deltares" are registered trademarks of // Stichting Deltares and remain full property of Stichting Deltares at all times. // All rights reserved. using System.Collections.Generic; using System.Linq; using Ringtoets.MacroStabilityInwards.Data; using Ringtoets.MacroStabilityInwards.Data.SoilProfile; namespace Ringtoets.MacroStabilityInwards.Service { /// /// Class responsible for macro stability inwards input properties in sync. /// public static class MacroStabilityInwardsInputService { /// /// Sets and that match the input of a calculation if there is one matching /// or respectively. /// /// The input parameters to set the . /// The available stochastic soil models. public static void SetMatchingStochasticSoilModel(MacroStabilityInwardsInput macroStabilityInwardsInput, IEnumerable availableStochasticSoilModels) { List available = availableStochasticSoilModels.ToList(); if (available.Count == 1) { macroStabilityInwardsInput.StochasticSoilModel = available.First(); } else if (!available.Any() || !available.Contains(macroStabilityInwardsInput.StochasticSoilModel)) { macroStabilityInwardsInput.StochasticSoilModel = null; } SyncStochasticSoilProfileWithStochasticSoilModel(macroStabilityInwardsInput); } /// /// Sets the to the corresponding : /// /// null if no is set. /// The first element of when it is the only element. /// /// /// The input parameters to set the . public static void SyncStochasticSoilProfileWithStochasticSoilModel(MacroStabilityInwardsInput macroStabilityInwardsInput) { if (macroStabilityInwardsInput.StochasticSoilModel != null) { if (macroStabilityInwardsInput.StochasticSoilModel.StochasticSoilProfiles.Count() == 1) { macroStabilityInwardsInput.StochasticSoilProfile = macroStabilityInwardsInput.StochasticSoilModel.StochasticSoilProfiles.First(); return; } if (macroStabilityInwardsInput.StochasticSoilProfile == null || macroStabilityInwardsInput.StochasticSoilModel.StochasticSoilProfiles.Contains(macroStabilityInwardsInput.StochasticSoilProfile)) { return; } } macroStabilityInwardsInput.StochasticSoilProfile = null; } } }