using Microsoft.Win32; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL; using Tango.BL.ActionLogs; using Tango.BL.DTO; using Tango.BL.Entities; using Tango.BL.Enumerations; using Tango.Core.Commands; using Tango.MachineStudio.Common.Notifications; using Tango.SharedUI; namespace Tango.MachineStudio.ThreadExtensions.ViewModels { public class TestResultViewVM : ViewModel { private INotificationProvider _notification; private IActionLogManager _actionLogManager; #region Properties private string _threadName; /// /// Gets or sets the name of the thread. Using in print /// /// /// The name of the thread. /// public string ThreadName { get { return _threadName; } set { _threadName = value; RaisePropertyChangedAuto(); } } private bool _isSelected; /// /// Gets or sets a value indicating whether this instance is selected. /// public bool IsSelected { get { return _isSelected; } set { _isSelected = value; RaisePropertyChangedAuto(); } } private RmlExtensionTestResult _testResult; public RmlExtensionTestResult TestResult { get { return _testResult; } set { _testResult = value; RaisePropertyChangedAuto(); } } #endregion public RelayCommand ExportToFileCommand { get; set; } public TestResultViewVM(INotificationProvider notification, IActionLogManager actionLogManager) { _notification = notification; _actionLogManager = actionLogManager; ExportToFileCommand = new RelayCommand(ExportToFile); } #region save // public void Save(ObservablesContext active_context) //{ // try // { // IsFree = false; // TestResult.LastUpdated = DateTime.UtcNow; // var RmlExtensionTestResultAfterChange = RmlExtensionTestResultDTO.FromObservable(TestResult); // active_context.SaveChanges(); // } // catch (Exception ex) // { // LogManager.Log(ex, "Could not update RmlExtension TestResult."); // _notification.ShowError($"An error occurred while trying to save RmlExtension TestResult.\n{ex.Message}"); // } // finally // { // IsFree = true; // } //} #endregion private void ExportToFile() { SaveFileDialog dlg = new SaveFileDialog(); try { dlg.Title = $"Export excel calibration file for {TestResult.Name}"; dlg.Filter = "Text Files|*.txt"; dlg.DefaultExt = ".txt"; dlg.FileName = $"RML_EXTENSION_{TestResult.Name}.txt"; if (dlg.ShowDialog().Value) { using (StreamWriter outputFile = new StreamWriter(dlg.FileName)) { outputFile.WriteLine(String.Format($" {TestResult.Name.ToUpper()} ")); outputFile.WriteLine(""); outputFile.WriteLine(""); outputFile.WriteLine(" Dryer temperature"); outputFile.WriteLine(""); outputFile.WriteLine(String.Format($" Dryer temperature : {TestResult.DryerTemperature.ToString()}")); outputFile.WriteLine(String.Format($" Tunnel temperature : {TestResult.TunnelTemperature.ToString()}")); outputFile.WriteLine(String.Format($" Tunnel flow : {TestResult.TunnelFlow.ToString()}")); outputFile.WriteLine(String.Format($" Tunnel AVG temperature : {TestResult.TunnelAvgTemperature.ToString()}")); outputFile.WriteLine(""); outputFile.WriteLine(""); outputFile.WriteLine(" Tension through the thread path"); outputFile.WriteLine(""); outputFile.WriteLine(String.Format($" Head : {TestResult.TensionHeadMin.ToString()} - {TestResult.TensionHeadMax.ToString()}")); outputFile.WriteLine(String.Format($" After dryer : {TestResult.TensionAfterDryerMin.ToString()} - {TestResult.TensioinAfterDryerMax.ToString()}")); outputFile.WriteLine(String.Format($" Winder : {TestResult.BtsrMin.ToString()} - {TestResult.BtsrMax.ToString()}")); outputFile.WriteLine(String.Format($" BTSR : {TestResult.TensionHeadMin.ToString()} - {TestResult.TensionHeadMax.ToString()}")); outputFile.WriteLine(String.Format($" Puller tension : {TestResult.PullerTensionMin.ToString()} - {TestResult.PullerTensionMax.ToString()}")); outputFile.WriteLine(String.Format($" Winder exit tension: {TestResult.ExitTensionMin.ToString()} - {TestResult.ExitTensionMax.ToString()}")); outputFile.WriteLine(""); outputFile.WriteLine(" Rubbing results"); outputFile.WriteLine(""); outputFile.WriteLine(" Color DeltaE CIE 100 % GS 100% DeltaETestResult CIE 200 % GS 200% "); foreach (var rubbingResult in TestResult.RubbingResults) { StringBuilder sb = new StringBuilder(); //sb.Append(" Color: "); sb.Append($" { rubbingResult.TestResultColor.ToString()} "); //sb.Append(" DeltaE CIE 100 % : "); sb.Append($" { rubbingResult.DeltaeCie100.ToString()} "); //sb.Append(" GS 100% : "); sb.Append($" { rubbingResult.Gs100.ToString()} "); //sb.Append(" DeltaE CIE 200 % : "); sb.Append($" { rubbingResult.DeltaeCie200.ToString()} "); //sb.Append(" GS 200% : "); sb.Append($" { rubbingResult.Gs200.ToString()} "); outputFile.WriteLine(sb); } outputFile.WriteLine(""); outputFile.WriteLine(" Mechanical properties"); outputFile.WriteLine(""); outputFile.WriteLine(" %Color Color Load at Maximum Load(N) STDEV Percentage Strain at Maximum Load STDEV "); foreach (var result in TestResult.TensileResults) { StringBuilder sb = new StringBuilder(); //sb.Append(" % Color: "); sb.Append($" { result.ColorPercent.ToString()}"); //sb.Append(" Color : "); sb.Append($" { result.TestResultColor.ToString()}"); //sb.Append(" Load at Maximum Load(N) : "); sb.Append($" { result.MaxLoad.ToString()}"); //sb.Append(" STDEV : "); sb.Append($" { result.StdevMaxLoad.ToString()}"); //sb.Append(" Percentage Strain at Maximum Load: "); sb.Append($" {result.StrainMaxLoad.ToString()}"); //sb.Append(" STDEV : "); sb.Append($" { result.StdevStrainMaxLoad.ToString()}"); outputFile.WriteLine(sb); } outputFile.WriteLine(""); outputFile.WriteLine(" Uniformity"); outputFile.WriteLine(""); outputFile.WriteLine(String.Format($" Zone1 : {TestResult.SeverityZone1Min.ToString()} - {TestResult.SeverityZone1Max.ToString()}")); outputFile.WriteLine(String.Format($" Zone2 : {TestResult.SeverityZone2Min.ToString()} - {TestResult.SeverityZone2Max.ToString()}")); outputFile.WriteLine(""); outputFile.WriteLine(" COF"); outputFile.WriteLine(""); outputFile.WriteLine(" Thread name Lub Version COF Lub amount "); outputFile.WriteLine(String.Format($" REF {TestResult.RefLubVersion} {TestResult.RefCof.ToString()} {TestResult.RefLub.ToString()}")); outputFile.WriteLine(String.Format($" {ThreadName} {TestResult.ThreadLubVersion} {TestResult.ThreadCof.ToString()} {TestResult.ThreadLub.ToString()}")); outputFile.WriteLine(""); outputFile.WriteLine(String.Format($" Comments: {TestResult.Comment}")); outputFile.WriteLine(String.Format($" Conclusion: {TestResult.Conclusions}")); outputFile.WriteLine(""); outputFile.Flush(); } } } catch (Exception ex) { LogManager.Log(ex, "Error exporting excel file " + dlg.FileName); _notification.ShowError("An error occurred while trying to export the test result data."); } } } }