using StructureHelperCommon.Infrastructures.Exceptions; using StructureHelperCommon.Infrastructures.Interfaces; using StructureHelperCommon.Models.Shapes; namespace DataAccess.DTOs { internal class ShapeFromDTOConvertStrategy : ConvertStrategy { private IConvertStrategy rectangleConvertStrategy; private IConvertStrategy circleConvertStrategy; public ShapeFromDTOConvertStrategy(IBaseConvertStrategy baseConvertStrategy) : base(baseConvertStrategy) { } public override IShape GetNewItem(IShape source) { ChildClass = this; if (source is RectangleShapeDTO rectangleShapeDTO) { rectangleConvertStrategy ??= new DictionaryConvertStrategy (this, new RectangleShapeFromDTOConvertStrategy(this)); NewItem = rectangleConvertStrategy.Convert(rectangleShapeDTO); } if (source is CircleShapeDTO circleShapeDTO) { circleConvertStrategy ??= new DictionaryConvertStrategy (this, new CircleShapeFromDTOConvertStrategy(this)); NewItem = circleConvertStrategy.Convert(circleShapeDTO); } else { throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(source) + ": shape is unknown"); } return NewItem; } } }