using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Models; using StructureHelperCommon.Services; using StructureHelperLogics.Models.BeamShears; namespace DataAccess.DTOs { public class HasBeamShearSectionsToDTORenameStrategy : IUpdateStrategy { private IConvertStrategy convertStrategy; private Dictionary<(Guid id, Type type), ISaveable> ReferenceDictionary { get; } private IShiftTraceLogger TraceLogger { get; } public HasBeamShearSectionsToDTORenameStrategy(Dictionary<(Guid id, Type type), ISaveable> referenceDictionary, IShiftTraceLogger traceLogger) { ReferenceDictionary = referenceDictionary; TraceLogger = traceLogger; } public void Update(IHasBeamShearSections targetObject, IHasBeamShearSections sourceObject) { CheckObject.ThrowIfNull(targetObject); CheckObject.ThrowIfNull(sourceObject); if (ReferenceEquals(targetObject, sourceObject)) { return; } CheckObject.ThrowIfNull(sourceObject.Sections); CheckObject.ThrowIfNull(targetObject.Sections); InitializeStrategies(); targetObject.Sections.Clear(); foreach (var section in sourceObject.Sections) { var newSection = convertStrategy.Convert(section); targetObject.Sections.Add(newSection); } } private void InitializeStrategies() { convertStrategy = new DictionaryConvertStrategy (ReferenceDictionary, TraceLogger, new BeamShearSectionToDTOConvertStrategy(ReferenceDictionary, TraceLogger)); } } }