Files
StructureHelper/StructureHelperLogics/Models/BeamShears/Logics/CheckStrategies/StirrupByDensityCheckLogic.cs
2025-08-03 23:37:50 +05:00

72 lines
2.2 KiB
C#

using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperCommon.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace StructureHelperLogics.Models.BeamShears
{
internal class StirrupByDensityCheckLogic : ICheckEntityLogic<IStirrupByDensity>
{
private const int minDensity = 0;
private bool result;
private string checkResult;
public StirrupByDensityCheckLogic(IShiftTraceLogger? traceLogger)
{
TraceLogger = traceLogger;
}
public IStirrupByDensity Entity { get; set; }
public string CheckResult => checkResult;
public IShiftTraceLogger? TraceLogger { get; set; }
public bool Check()
{
checkResult = string.Empty;
result = true;
if (Entity is null)
{
result = false;
string errorString = "\nStirrups by density is not assigned";
TraceMessage(errorString);
}
else
{
CheckEntity();
}
return result;
}
private void CheckEntity()
{
if (Entity.StirrupDensity < minDensity)
{
result = false;
TraceMessage($"\nStirrup {Entity.Name} density d = {Entity.StirrupDensity} must not be less than dmin = {minDensity}");
}
if (Entity.StartCoordinate < 0)
{
result = false;
TraceMessage($"\nStirrup {Entity.Name} start coordinate must not be less than zero, but was {Entity.StartCoordinate}");
}
if (Entity.EndCoordinate <= Entity.StartCoordinate)
{
result = false;
TraceMessage($"\nStirrup {Entity.Name} start coordinate must be less than end coordinte, but was Xstart = {Entity.StartCoordinate}(m), Xend = {Entity.EndCoordinate}(m)");
}
}
private void TraceMessage(string errorString)
{
checkResult += errorString;
TraceLogger?.AddMessage(errorString, TraceLogStatuses.Error);
}
}
}