aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineCreationDialogVM.cs4
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MainViewVM.cs52
2 files changed, 47 insertions, 9 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineCreationDialogVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineCreationDialogVM.cs
index 9d203b76d..93c7490fb 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineCreationDialogVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineDesigner/ViewModels/MachineCreationDialogVM.cs
@@ -17,7 +17,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
public List<HardwareVersion> HardwareVersionsFiltered
{
- get { return HardwareVersions.Where(x => x.MachineType == (int)MachineType).ToList(); }
+ get { return HardwareVersions != null ? HardwareVersions.Where(x => x.MachineType == (int)MachineType).ToList() : null; }
}
private HardwareVersion _selectedHardwareVersion;
@@ -64,7 +64,7 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
protected override bool CanOK()
{
- return base.CanOK() && !String.IsNullOrWhiteSpace(SerialNumber) && !String.IsNullOrWhiteSpace(Name) && SelectedHardwareVersion != null;
+ return base.CanOK() && !String.IsNullOrWhiteSpace(SerialNumber) && !String.IsNullOrWhiteSpace(Name) && (SelectedHardwareVersion != null || HardwareVersions == null);
}
}
}
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 c928af0c7..06d702ca0 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
@@ -537,13 +537,51 @@ namespace Tango.MachineStudio.MachineDesigner.ViewModels
machineConfigBeforeClone = ActiveMachine.Configuration;
IsNewMachine = true;
- ActiveMachine = ActiveMachine.Clone();
- ActiveMachine.Name = machineCreationDialogVM.Name;
- ActiveMachine.SerialNumber = machineCreationDialogVM.SerialNumber;
- ActiveMachine.IsDeviceRegistered = false;
- ActiveMachine.DeviceId = null;
- ActiveMachine.DeviceName = null;
- ActiveMachine.ActivationKey = null;
+ var cloned = ActiveMachine.Clone();
+ cloned.Name = machineCreationDialogVM.Name;
+ cloned.SerialNumber = machineCreationDialogVM.SerialNumber;
+ cloned.IsDeviceRegistered = false;
+ cloned.DeviceId = null;
+ cloned.DeviceName = null;
+ cloned.ActivationKey = null;
+ cloned.Organization = null;
+ cloned.SiteGuid = null;
+ cloned.OrganizationGuid = null;
+
+ while (cloned.ActivationKey == null) //Generate a random password and make sure no machine matches it.
+ {
+ cloned.ActivationKey = PasswordGenerator.Generate(8, PasswordGenerator.PasswordType.Alpha, PasswordGenerator.PasswordCasing.Upper);
+ if (await ActiveMachineAdapter.Context.Machines.Where(x => x.ActivationKey == cloned.ActivationKey).CountAsync() == 0)
+ {
+ break;
+ }
+
+ cloned.ActivationKey = null;
+ }
+
+
+ for (int i = 0; i < ActiveMachine.Configuration.IdsPacks.Count; i++)
+ {
+ var dispenser = ActiveMachine.Configuration.IdsPacks[i].Dispenser;
+
+ if (dispenser != null)
+ {
+ var clonedDispenser = new Dispenser();
+ clonedDispenser.CalibrationData = dispenser.CalibrationData;
+ clonedDispenser.DispenserType = dispenser.DispenserType;
+ clonedDispenser.DispenserTypeGuid = dispenser.DispenserTypeGuid;
+ clonedDispenser.NlPerPulse = dispenser.NlPerPulse;
+ clonedDispenser.PartNumber = dispenser.PartNumber;
+ clonedDispenser.PcbSerial = dispenser.PcbSerial;
+ clonedDispenser.PcbVersion = dispenser.PcbVersion;
+ clonedDispenser.ProductionDate = dispenser.ProductionDate;
+ clonedDispenser.SerialNumber = cloned.SerialNumber + "_D" + (i + 1);
+
+ cloned.Configuration.IdsPacks[i].Dispenser = clonedDispenser;
+ }
+ }
+
+ ActiveMachine = cloned;
ActiveMachineAdapter.Context.Machines.Add(ActiveMachine);
}
}