using DataAccess.DTOs.Converters; using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperLogics.NdmCalculations.Analyses.Curvatures; using StructureHelperLogics.NdmCalculations.Primitives; namespace DataAccess.DTOs { public class CurvatureCalculatorInputDataToDTOConvertStrategy : ConvertStrategy { private IProcessLogic actionsProcessLogic; private IUpdateStrategy updateStrategy; private IConvertStrategy deflectionConvertStrategy; private IProcessLogic ForceAndPrimitivesLogic => actionsProcessLogic ??= new HasForcesAndPrimitivesProcessLogic(ConvertDirection.ToDTO) { ReferenceDictionary = ReferenceDictionary, TraceLogger = TraceLogger }; private IUpdateStrategy UpdateStrategy => updateStrategy ??= new CurvatureCalculatorInputDataUpdateStrategy() { UpdateChildren = false}; private IConvertStrategy DeflectionConvertStrategy => deflectionConvertStrategy ??= new DeflectionFactorToDTOConvertStrategy(this); public CurvatureCalculatorInputDataToDTOConvertStrategy(IBaseConvertStrategy baseConvertStrategy) : base(baseConvertStrategy) { } public override CurvatureCalculatorInputDataDTO GetNewItem(ICurvatureCalculatorInputData source) { ChildClass = this; NewItem = new(source.Id); UpdateStrategy.Update(NewItem, source); NewItem.DeflectionFactor = DeflectionConvertStrategy.Convert(source.DeflectionFactor); ProcessActions(source); return NewItem; } private void ProcessActions(IHasForcesAndPrimitives source) { ForceAndPrimitivesLogic.Source = source; ForceAndPrimitivesLogic.Target = NewItem; ForceAndPrimitivesLogic.Process(); } } }