Files
StructureHelper/StructureHelperLogics/NdmCalculations/Analyses/ValueDiagrams/ValueDiagramCalculator.cs
2025-11-16 21:03:57 +05:00

63 lines
2.2 KiB
C#

using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models;
using StructureHelperCommon.Models.Calculators;
using StructureHelperLogics.NdmCalculations.Analyses.ByForces;
using StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams.Logics;
namespace StructureHelperLogics.NdmCalculations.Analyses.ValueDiagrams
{
public class ValueDiagramCalculator : IValueDiagramCalculator
{
private readonly IValueDiagramCalculatorLogic valueDiagramCalculatorLogic = new ValueDiagramCalculatorLogic();
private readonly ICheckEntityLogic<IValueDiagramCalculatorInputData> checkInputDataLogic;
private IValueDiagramCalculatorResult result;
public Guid Id { get; }
public string Name { get; set; }
public bool ShowTraceData { get; set; }
public IResult Result => result;
public IShiftTraceLogger? TraceLogger { get; set; }
public IValueDiagramCalculatorInputData InputData { get; set; } = new ValueDiagramCalculatorInputData(Guid.NewGuid());
public ValueDiagramCalculator(ICheckEntityLogic<IValueDiagramCalculatorInputData> checkInputDataLogic)
{
this.checkInputDataLogic = checkInputDataLogic;
}
public ValueDiagramCalculator(Guid id)
{
Id = id;
checkInputDataLogic = new ValueDiagramInputDataCheckLogic();
}
public object Clone()
{
ValueDiagramCalculator newItem = new ValueDiagramCalculator(Guid.NewGuid());
var updateLogic = new ValueDiagramCalculatorUpdateStrategy();
updateLogic.Update(newItem, this);
return newItem;
}
public void Run()
{
checkInputDataLogic.Entity = InputData;
if (checkInputDataLogic.Check() != true)
{
result = new ValueDiagramCalculatorResult()
{
IsValid = false,
Description = checkInputDataLogic.CheckResult
};
return;
}
valueDiagramCalculatorLogic.InputData = InputData;
result = valueDiagramCalculatorLogic.GetResult();
}
}
}