using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Models.Analyses; using StructureHelperCommon.Models.Projects; namespace DataAccess.DTOs { public class ProjectToDTOConvertStrategy : ConvertStrategy { private IUpdateStrategy updateStrategy; private DictionaryConvertStrategy convertLogic; public ProjectToDTOConvertStrategy() { } public ProjectToDTOConvertStrategy( IUpdateStrategy updateStrategy, DictionaryConvertStrategy convertLogic) { this.updateStrategy = updateStrategy; this.convertLogic = convertLogic; } public override ProjectDTO GetNewItem(IProject source) { InitializeStrategies(); ProjectDTO newItem = new(source.Id); updateStrategy.Update(newItem, source); newItem.VisualAnalyses.Clear(); foreach (var item in source.VisualAnalyses) { var newVisualAnalysis = convertLogic.Convert(item); newItem.VisualAnalyses.Add(newVisualAnalysis); } return newItem; } private void InitializeStrategies() { updateStrategy ??= new ProjectUpdateStrategy(); convertLogic ??= new DictionaryConvertStrategy (this, new VisualAnalysisToDTOConvertStrategy(ReferenceDictionary, TraceLogger) ); } } }