aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/JobRunsLogging/DefaultJobRunsLogger.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/JobRunsLogging/DefaultJobRunsLogger.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/JobRunsLogging/DefaultJobRunsLogger.cs110
1 files changed, 110 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/JobRunsLogging/DefaultJobRunsLogger.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/JobRunsLogging/DefaultJobRunsLogger.cs
new file mode 100644
index 000000000..fb01e3aa8
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/JobRunsLogging/DefaultJobRunsLogger.cs
@@ -0,0 +1,110 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.BL;
+using Tango.BL.Entities;
+using Tango.BL.Enumerations;
+using Tango.Core;
+using Tango.Core.DI;
+using Tango.Integration.ExternalBridge;
+using Tango.Integration.Operation;
+using Tango.MachineStudio.Common.StudioApplication;
+
+namespace Tango.MachineStudio.Common.JobRunsLogging
+{
+ public class DefaultJobRunsLogger : ExtendedObject, IJobRunsLogger
+ {
+ private ObservablesContext _context;
+ private DateTime _start_date;
+ private Job _job;
+ private IStudioApplicationManager applicationManager;
+
+ public void Init(IStudioApplicationManager appManager)
+ {
+ applicationManager = appManager;
+ _context = ObservablesContext.CreateDefault();
+ applicationManager.ConnectedMachineChanged += ApplicationManager_ConnectedMachineChanged;
+ }
+
+ private void ApplicationManager_ConnectedMachineChanged(object sender, IExternalBridgeClient machine)
+ {
+ if (machine != null)
+ {
+ machine.PrintingStarted -= Machine_PrintingStarted;
+ machine.PrintingStarted += Machine_PrintingStarted;
+ machine.PrintingCompleted -= Machine_PrintingCompleted;
+ machine.PrintingCompleted += Machine_PrintingCompleted;
+ machine.PrintingAborted -= Machine_PrintingAborted;
+ machine.PrintingAborted += Machine_PrintingAborted;
+ machine.PrintingFailed -= Machine_PrintingFailed;
+ machine.PrintingFailed += Machine_PrintingFailed;
+ }
+ }
+
+ private void Machine_PrintingFailed(object sender, PrintingFailedEventArgs e)
+ {
+ if (e.Job.Guid == _job.Guid)
+ {
+ Task.Factory.StartNew(() =>
+ {
+ _context.JobRuns.Add(new JobRun()
+ {
+ StartDate = _start_date,
+ EndDate = DateTime.UtcNow,
+ JobGuid = _job.Guid,
+ JobRunStatus = JobRunStatus.Failed,
+ FailedMessage = e.Exception.Message,
+ });
+
+ _context.SaveChanges();
+ });
+ }
+ }
+
+ private void Machine_PrintingAborted(object sender, PrintingEventArgs e)
+ {
+ if (e.Job.Guid == _job.Guid)
+ {
+ Task.Factory.StartNew(() =>
+ {
+ _context.JobRuns.Add(new JobRun()
+ {
+ StartDate = _start_date,
+ EndDate = DateTime.UtcNow,
+ JobGuid = _job.Guid,
+ JobRunStatus = JobRunStatus.Aborted,
+ });
+
+ _context.SaveChanges();
+ });
+ }
+ }
+
+ private void Machine_PrintingCompleted(object sender, PrintingEventArgs e)
+ {
+ if (e.Job.Guid == _job.Guid)
+ {
+ Task.Factory.StartNew(() =>
+ {
+ _context.JobRuns.Add(new JobRun()
+ {
+ StartDate = _start_date,
+ EndDate = DateTime.UtcNow,
+ JobGuid = _job.Guid,
+ JobRunStatus = JobRunStatus.Completed,
+ });
+
+ _context.SaveChanges();
+ });
+ }
+ }
+
+ private void Machine_PrintingStarted(object sender, PrintingEventArgs e)
+ {
+ _job = e.Job;
+ _start_date = DateTime.UtcNow;
+ }
+ }
+}