Files
StructureHelper/StructureHelper/Windows/BeamShears/BeamShearResultViewModel.cs
2025-08-10 18:24:46 +05:00

80 lines
3.2 KiB
C#

using StructureHelper.Infrastructure;
using StructureHelper.Services.Exports;
using StructureHelper.Windows.CalculationWindows.CalculatorsViews;
using StructureHelperLogics.Models.BeamShears;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Input;
namespace StructureHelper.Windows.BeamShears
{
public class BeamShearResultViewModel : ViewModelBase
{
private IBeamShearCalculatorResult result;
private RelayCommand showSectionResultsCommand;
private RelayCommand showDiagramCommand;
private RelayCommand exportToExcelCommand;
private RelayCommand showGraphResultsCommand;
public IBeamShearActionResult SelectedResult { get; set; }
public List<IBeamShearActionResult> ActionResults => result.ActionResults;
public ValidResultCounterVM ValidResultCounter { get; }
public BeamShearResultViewModel(IBeamShearCalculatorResult result)
{
this.result = result;
ValidResultCounter = new(this.result.ActionResults);
}
public ICommand ShowSectionResultsCommand => showSectionResultsCommand ??= new RelayCommand(ShowSectionResults, o=>SelectedResult != null);
public ICommand ShowDiagramCommand => showDiagramCommand ??= new RelayCommand(Show2DDiagram, o=>SelectedResult != null);
public ICommand ExportToExcelCommand => exportToExcelCommand ??= new RelayCommand(ExportToExcel, o=>SelectedResult != null);
public ICommand ShowGraphResultsCommand => showGraphResultsCommand ??= new RelayCommand(ShowGraphResults, o => SelectedResult != null);
private void ShowGraphResults(object obj)
{
if (SelectedResult is null) {return; }
if (SelectedResult.SectionResults is null) {return; }
var sectionResult = SelectedResult.SectionResults
.OrderByDescending(x => x.FactorOfUsing)
.FirstOrDefault();
var window = new InclinedSectionViewerView(sectionResult);
window.ShowDialog();
}
private void ExportToExcel(object obj)
{
if (SelectedResult is null) { return; }
var inputData = new ExportToFileInputData
{
Filter = "csv |*.csv",
Title = "Save in *.csv File"
};
var logic = new ExportActionResultToCSVLogic(SelectedResult);
var exportService = new ExportToFileService(inputData, logic);
exportService.Export();
}
private void Show2DDiagram(object obj)
{
if (SelectedResult is null) { return; }
if (SelectedResult.SectionResults is null) { return; }
var sectionResult = SelectedResult.SectionResults
.OrderByDescending(x => x.FactorOfUsing)
.FirstOrDefault();
var logic = new ShearDiagramLogic(SelectedResult);
logic.ShowWindow(sectionResult.ResultInputData.InclinedSection.StartCoord);
}
private void ShowSectionResults(object commandParameter)
{
if (SelectedResult is null) { return; }
Window window = new BeamShearActionResultView(SelectedResult);
window.ShowDialog();
}
}
}