aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/ConfigurationViewVM.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/ConfigurationViewVM.cs')
-rw-r--r--Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/ConfigurationViewVM.cs101
1 files changed, 101 insertions, 0 deletions
diff --git a/Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/ConfigurationViewVM.cs b/Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/ConfigurationViewVM.cs
new file mode 100644
index 000000000..61eef2bdc
--- /dev/null
+++ b/Software/Visual_Studio/FSE/Modules/Tango.FSE.MachineConfiguration/ViewModels/ConfigurationViewVM.cs
@@ -0,0 +1,101 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.BL.Entities;
+using Tango.Core.Commands;
+using Tango.Core.DI;
+using Tango.FSE.Common;
+using Tango.FSE.Common.AutoComplete;
+using Tango.FSE.Common.SQL;
+using Tango.FSE.MachineConfiguration.Messages;
+using static Tango.FSE.BL.Services.MachineConfigurationService;
+
+namespace Tango.FSE.MachineConfiguration.ViewModels
+{
+ public class ConfigurationViewVM : FSEViewModel
+ {
+ [TangoInject]
+ private IRemoteSqlProvider RemoteSqlProvider { get; set; }
+
+ private MachineEditingComposition _editingComposition;
+ public MachineEditingComposition EditingComposition
+ {
+ get { return _editingComposition; }
+ set { _editingComposition = value; RaisePropertyChangedAuto(); }
+ }
+
+ public RelayCommand SaveCommand { get; set; }
+ public RelayCommand ResetCountersCommand { get; set; }
+ public RelayCommand ResetDeviceRegistrationCommand { get; set; }
+
+
+ public ConfigurationViewVM()
+ {
+ RegisterForMessage<EditingCompositionLoadedMessage>(OnEditingCompositionLoaded);
+ SaveCommand = new RelayCommand(SaveConfiguration);
+ ResetCountersCommand = new RelayCommand(ResetCounters);
+ ResetDeviceRegistrationCommand = new RelayCommand(ResetDeviceRegistration);
+ }
+
+ private void OnEditingCompositionLoaded(EditingCompositionLoadedMessage msg)
+ {
+ using (NotificationProvider.PushTaskItem("Loading machine configuration..."))
+ {
+ EditingComposition = msg.EditingComposition;
+ EditingComposition.Machine.ForceVersionUpdateChanged += (x, value) => { if (value) EditingComposition.Machine.SuspendVersionUpdate = false; };
+ EditingComposition.Machine.SuspendVersionUpdateChanged += (x, value) => { if (value) EditingComposition.Machine.ForceVersionUpdate = false; };
+ }
+ }
+
+ private async void SaveConfiguration()
+ {
+ using (NotificationProvider.PushTaskItem("Saving machine configuration..."))
+ {
+ EditingComposition = await Services.MachineConfigurationService.SaveMachineEditingComposition(EditingComposition);
+ await NotificationProvider.ShowSuccess("Machine configuration saved successfully.");
+ }
+ }
+
+ private async void ResetCounters()
+ {
+ if (!MachineProvider.IsPPCAvailable)
+ {
+ await NotificationProvider.ShowError("Resetting the machine counters requires an active connection to this machine.");
+ return;
+ }
+
+ if (!await NotificationProvider.ShowWarningQuestion("Resetting the machine counters will delete the entire job runs history. Are you sure?", "RESET COUNTERS", "CANCEL")) return;
+
+ using (var task = NotificationProvider.PushTaskItem("Resetting machine counters..."))
+ {
+ task.UpdateProgress("Resetting local machine counters...");
+
+ var result = await RemoteSqlProvider.ExecuteSqlCommandAsync(new RemoteSqlCommand()
+ {
+ Mode = RemoteSqlCommandMode.Local,
+ Timeout = 30,
+ SQL = "DELETE FROM JOB_RUNS"
+ });
+
+ int localJobRuns = result.LocalAffectedRecords;
+
+ task.UpdateProgress("Resetting global machine counters...");
+
+ int remoteJobRuns = await Services.MachineConfigurationService.ResetCounters(EditingComposition.Machine.Guid);
+
+ await NotificationProvider.ShowSuccess("Machine counters deleted successfully.");
+ }
+ }
+
+ private async void ResetDeviceRegistration()
+ {
+ if (!await NotificationProvider.ShowWarningQuestion("Resetting the machine's device registration will allow other panel PCs to perform a machine setup for this machine. Are you sure?", "RESET", "CANCEL")) return;
+
+ EditingComposition.Machine.IsDeviceRegistered = false;
+ EditingComposition.Machine.DeviceId = null;
+ EditingComposition.Machine.DeviceName = null;
+ }
+ }
+}