aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2020-01-21 17:27:52 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2020-01-21 17:27:52 +0200
commit2dce6d8d825850b942d8065877bdc2d3af9cf499 (patch)
tree6e3a52ded2b602b635a392d9680de77be94013ee /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs
parent27cb63f6a6d4d569aa31ed353f5dca60b9a99d0e (diff)
downloadTango-2dce6d8d825850b942d8065877bdc2d3af9cf499.tar.gz
Tango-2dce6d8d825850b942d8065877bdc2d3af9cf499.zip
Implemented new machine clone and creation.
Implemented auto dispenser generation.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs101
1 files changed, 88 insertions, 13 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs
index 8b0401dc7..1bd790eb6 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs
@@ -39,10 +39,16 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
private ActionTimer _machines_action_timer;
private ActionTimer _dispensers_action_timer;
private MachineDTO _machineBeforeSave;
- private bool _isNewMachine;
#region Properties
+ private bool _isNewMachine;
+ public bool IsNewMachine
+ {
+ get { return _isNewMachine; }
+ set { _isNewMachine = value; RaisePropertyChangedAuto(); }
+ }
+
private ObservablesStaticCollections _machinesAdapter;
public ObservablesStaticCollections MachinesAdapter
{
@@ -441,9 +447,9 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
InvalidateRelayCommands();
}
- private async void LoadSelectedMachine(bool newMachine = false, bool clone = false, MachineVersion selectedVersion = null)
+ private async void LoadSelectedMachine(bool newMachine = false, bool clone = false, MachineCreationDialogVM machineCreationDialogVM = null)
{
- _isNewMachine = false;
+ IsNewMachine = false;
using (_notification.PushTaskItem("Loading machine details..."))
{
@@ -478,6 +484,8 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
bool initHwConfig = true;
+ Configuration machineConfigBeforeClone = null;
+
if (!newMachine)
{
ActiveMachine = (await new MachineBuilder(ActiveMachineAdapter.Context).Set(SelectedMachine.Guid).WithOrganization().WithConfiguration().WithSpools().BuildAsync());
@@ -486,10 +494,12 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
if (clone)
{
- _isNewMachine = true;
+ machineConfigBeforeClone = ActiveMachine.Configuration;
+
+ IsNewMachine = true;
ActiveMachine = ActiveMachine.Clone();
- ActiveMachine.Name = "";
- ActiveMachine.SerialNumber = "";
+ ActiveMachine.Name = machineCreationDialogVM.Name;
+ ActiveMachine.SerialNumber = machineCreationDialogVM.SerialNumber;
ActiveMachine.IsDeviceRegistered = false;
ActiveMachine.DeviceId = null;
ActiveMachine.DeviceName = null;
@@ -498,12 +508,14 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
}
else
{
- _isNewMachine = true;
+ IsNewMachine = true;
- if (selectedVersion == null)
+ if (machineCreationDialogVM.SelectedMachineVersion == null)
{
ActiveMachine = new Machine();
ActiveMachine.Configuration = new Configuration();
+ ActiveMachine.SerialNumber = machineCreationDialogVM.SerialNumber;
+ ActiveMachine.Name = machineCreationDialogVM.Name;
ActiveMachineAdapter.Context.Machines.Add(ActiveMachine);
}
else
@@ -511,7 +523,9 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
try
{
initHwConfig = false;
- ActiveMachine = selectedVersion.CreatePrototypeMachine(ActiveMachineAdapter.Context);
+ ActiveMachine = machineCreationDialogVM.SelectedMachineVersion.CreatePrototypeMachine(ActiveMachineAdapter.Context);
+ ActiveMachine.SerialNumber = machineCreationDialogVM.SerialNumber;
+ ActiveMachine.Name = machineCreationDialogVM.Name;
ActiveMachineAdapter.Context.Machines.Add(ActiveMachine);
HardwareConfigurationViewVM = new HardwareConfigurationViewVM(_notification);
@@ -527,6 +541,47 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
}
}
+ if ((newMachine || clone) && machineCreationDialogVM.GenerateDispensers)
+ {
+ for (int i = 0; i < 8; i++)
+ {
+ Dispenser dispenser = new Dispenser();
+ dispenser.SerialNumber = machineCreationDialogVM.SerialNumber + "-" + (i + 1);
+
+ if (newMachine)
+ {
+ dispenser.NlPerPulse = machineCreationDialogVM.DispenserFactor;
+ dispenser.DispenserTypeGuid = ActiveMachineAdapter.DispenserTypes.First().Guid;
+ }
+ else
+ {
+ var packBefore = machineConfigBeforeClone.NoneEmptyIdsPacks.SingleOrDefault(x => x.PackIndex == i);
+
+ if (packBefore != null)
+ {
+ dispenser.NlPerPulse = packBefore.Dispenser.NlPerPulse;
+ dispenser.DispenserTypeGuid = packBefore.Dispenser.DispenserType.Guid;
+ }
+ else
+ {
+ continue;
+ }
+ }
+
+ dispenser.ProductionDate = DateTime.UtcNow;
+
+ ActiveMachineAdapter.Context.Dispensers.Add(dispenser);
+
+ var idsPack = ActiveMachine.Configuration.NoneEmptyIdsPacks.SingleOrDefault(x => x.PackIndex == i);
+
+ if (idsPack != null)
+ {
+ idsPack.Dispenser = dispenser;
+ idsPack.DispenserGuid = dispenser.Guid;
+ }
+ }
+ }
+
Sites = await ActiveMachineAdapter.Context.Sites.ToListAsync();
Sites.Insert(0, new Site() { Name = "NONE", ID = -1 });
SelectedSite = Sites.SingleOrDefault(x => x.Guid == ActiveMachine.SiteGuid);
@@ -722,7 +777,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
ActiveMachine.Configuration.SetHardwareConfiguration(hwConfig);
await ActiveMachineAdapter.Context.SaveChangesAsync();
- if (_isNewMachine)
+ if (IsNewMachine)
{
_actionLogManager.InsertLog(BL.Enumerations.ActionLogType.MachineCreated, _authentication.CurrentUser, ActiveMachine.Name, ActiveMachine, "New machine created using Machine Studio.");
}
@@ -756,16 +811,23 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
private void AddNewMachine()
{
MachineCreationDialogVM vm = new MachineCreationDialogVM();
+ vm.IsNewMachine = true;
vm.MachineVersions = MachinesAdapter.MachineVersions.ToList();
_notification.ShowModalDialog<MachineCreationDialogVM, Views.MachineCreationDialog>(vm, (x) =>
{
+ if (MachinesAdapter.Context.Machines.Any(y => y.SerialNumber == vm.SerialNumber || y.Name.ToLower() == vm.Name.ToLower()))
+ {
+ _notification.ShowError("Machine serial number or name already exists.");
+ return;
+ }
+
if (vm.SelectedMachineVersion != null && String.IsNullOrWhiteSpace(vm.SelectedMachineVersion.PrototypeMachineData))
{
_notification.ShowError("The selected version does not contain any prototype machine data.");
return;
}
- LoadSelectedMachine(true, false, vm.SelectedMachineVersion);
+ LoadSelectedMachine(true, false, vm);
}, () => { });
}
@@ -779,8 +841,9 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
{
IsFree = false;
await SelectedMachine.DeleteCascadeAsync(MachinesAdapter.Context);
- MachinesAdapter.Context.Machines.Remove(SelectedMachine);
_actionLogManager.InsertLog(BL.Enumerations.ActionLogType.MachineDeleted, _authentication.CurrentUser, SelectedMachine.Name, SelectedMachine, "Machine deleted using Machine Studio.");
+ MachinesAdapter.Context.Machines.Remove(SelectedMachine);
+ MachinesAdapter.Machines.Remove(SelectedMachine);
}
catch (Exception ex)
{
@@ -844,7 +907,19 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
private void CloneMachine()
{
- LoadSelectedMachine(false, true);
+ MachineCreationDialogVM vm = new MachineCreationDialogVM();
+ vm.IsNewMachine = false;
+ vm.MachineVersions = MachinesAdapter.MachineVersions.ToList();
+ _notification.ShowModalDialog<MachineCreationDialogVM, Views.MachineCreationDialog>(vm, (x) =>
+ {
+ if (MachinesAdapter.Context.Machines.Any(y => y.SerialNumber == vm.SerialNumber || y.Name.ToLower() == vm.Name.ToLower()))
+ {
+ _notification.ShowError("Machine serial number or name already exists.");
+ return;
+ }
+
+ LoadSelectedMachine(false, true, vm);
+ }, () => { });
}
private void AddNewSpool()