aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels/MainViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels/MainViewVM.cs159
1 files changed, 96 insertions, 63 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels/MainViewVM.cs
index 6acaa8423..7d8314860 100644
--- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels/MainViewVM.cs
@@ -12,6 +12,7 @@ using Tango.Core.Commands;
using Tango.MachineStudio.Common.Notifications;
using Z.EntityFramework.Plus;
using System.ComponentModel;
+using Tango.BL.Enumerations;
namespace Tango.MachineStudio.MachineManager.ViewModels
{
@@ -109,81 +110,107 @@ namespace Tango.MachineStudio.MachineManager.ViewModels
{
try
{
- SelectAll = null;
-
- foreach (var machine in Machines.ToList())
+ using (_notification.PushTaskItem("Loading machines..."))
{
- machine.PropertyChanged -= Machine_PropertyChanged;
- }
+ SelectAll = null;
- using (ObservablesContext db = ObservablesContext.CreateDefault())
- {
- var sites = await db.Sites.ToListAsync();
+ foreach (var machine in Machines.ToList())
+ {
+ machine.PropertyChanged -= Machine_PropertyChanged;
+ }
+
+ using (ObservablesContext db = ObservablesContext.CreateDefault())
+ {
+ var sites = await db.Sites.ToListAsync();
- var machines = await db.Machines
- .Include(x => x.Organization.Name)
- .Include(x => x.Configuration.HardwareVersion.Name)
- .Include(x => x.Configuration.HardwareVersion.Version)
- .Include(x => x.Configuration.HardwareVersion.Guid)
- .Select(x => new
+ var machines = await db.Machines
+ .Include(x => x.Organization.Name)
+ .Include(x => x.Configuration.HardwareVersion.Name)
+ .Include(x => x.Configuration.HardwareVersion.Version)
+ .Include(x => x.Configuration.HardwareVersion.Guid)
+ .Select(x => new
+ {
+ x.Guid,
+ x.SerialNumber,
+ x.Name,
+ x.SuspendVersionUpdate,
+ x.SetupFirmware,
+ x.SetupFpga,
+ x.ConfigurationGuid,
+ HardwareVersionGuid = x.Configuration.HardwareVersion.Guid,
+ HardwareVersionName = x.Configuration.HardwareVersion.Name,
+ HardwareVersionVersion = x.Configuration.HardwareVersion.Version,
+ OrganizationName = x.Organization.Name,
+ x.SiteGuid
+ }).ToListAsync();
+
+ var models = new List<MachineModel>();
+
+ foreach (var machine in machines)
{
- x.Guid,
- x.SerialNumber,
- x.Name,
- x.SuspendVersionUpdate,
- x.SetupFirmware,
- x.SetupFpga,
- x.ConfigurationGuid,
- HardwareVersionGuid = x.Configuration.HardwareVersion.Guid,
- HardwareVersionName = x.Configuration.HardwareVersion.Name,
- HardwareVersionVersion = x.Configuration.HardwareVersion.Version,
- OrganizationName = x.Organization.Name,
- x.SiteGuid
- }).ToListAsync();
+ MachineModel model = new MachineModel();
+ model.Guid = machine.Guid;
+ model.SerialNumber = machine.SerialNumber;
+ model.Name = machine.Name;
+ model.EnableFirmwareUpgrade = machine.SetupFirmware;
+ model.EnableSoftwareUpdate = !machine.SuspendVersionUpdate;
+ model.ConfigurationGuid = machine.ConfigurationGuid;
+ model.HardwareVersionGuid = machine.HardwareVersionGuid;
+ model.HardwareVersionName = machine.HardwareVersionName;
+ model.HardwareVersionVersion = machine.HardwareVersionVersion;
+ model.OrganizationName = machine.OrganizationName;
+ model.Site = sites.FirstOrDefault(x => x.Guid == machine.SiteGuid)?.Name;
+ models.Add(model);
+ }
- var models = new List<MachineModel>();
+ if (Filter.IsNotNullOrEmpty())
+ {
+ var filter = Filter.ToLower();
- foreach (var machine in machines)
- {
- MachineModel model = new MachineModel();
- model.Guid = machine.Guid;
- model.SerialNumber = machine.SerialNumber;
- model.Name = machine.Name;
- model.EnableFirmwareUpgrade = machine.SetupFirmware;
- model.EnableSoftwareUpdate = !machine.SuspendVersionUpdate;
- model.ConfigurationGuid = machine.ConfigurationGuid;
- model.HardwareVersionGuid = machine.HardwareVersionGuid;
- model.HardwareVersionName = machine.HardwareVersionName;
- model.HardwareVersionVersion = machine.HardwareVersionVersion;
- model.OrganizationName = machine.OrganizationName;
- model.Site = sites.FirstOrDefault(x => x.Guid == machine.SiteGuid)?.Name;
+ models = models.Where(x =>
+ x.SerialNumber.ToLower().StartsWith(filter) ||
+ x.Name.ToLower().StartsWith(filter) ||
+ x.OrganizationName.ToLower().StartsWith(filter) ||
+ x.Site.ToStringOrEmpty().ToLower().StartsWith(filter)
+ ).ToList();
+ }
- models.Add(model);
- }
+ foreach (var model in models)
+ {
+ var lastUpdate = await db.TangoUpdates.Where(
- if (Filter.IsNotNullOrEmpty())
- {
- var filter = Filter.ToLower();
+ x => x.MachineGuid == model.Guid &&
+ (x.Status == (int)TangoUpdateStatuses.SetupCompleted ||
+ x.Status == (int)TangoUpdateStatuses.UpdateCompleted ||
+ x.Status == (int)TangoUpdateStatuses.OfflineUpdateCompleted ||
+ x.Status == (int)TangoUpdateStatuses.OfflineFirmwareUpgradeCompleted))
+ .OrderByDescending(x => x.LastUpdated)
+ .Select(x => new
+ {
+ x.ApplicationVersion,
+ x.FirmwareVersion
+ })
+ .FirstOrDefaultAsync();
- models = models.Where(x =>
- x.SerialNumber.ToLower().StartsWith(filter) ||
- x.Name.ToLower().StartsWith(filter) ||
- x.OrganizationName.ToLower().StartsWith(filter) ||
- x.Site.ToStringOrEmpty().ToLower().StartsWith(filter)
- ).ToList();
- }
+ if (lastUpdate != null)
+ {
+ model.ApplicationVersion = lastUpdate.ApplicationVersion;
+ model.FirmwareVersion = lastUpdate.FirmwareVersion;
+ }
+ }
- HardwareVersions = (await db.HardwareVersions.ToListAsync()).OrderByDescending(x => x.Version).ToList();
+ HardwareVersions = (await db.HardwareVersions.ToListAsync()).OrderByDescending(x => x.Version).ToList();
- SelectedHardwareVersion = null;
- EnableSoftwareUpdate = null;
- EnableFirmwareUpgrade = null;
+ SelectedHardwareVersion = null;
+ EnableSoftwareUpdate = null;
+ EnableFirmwareUpgrade = null;
- Machines = models;
+ Machines = models;
- foreach (var machine in Machines.ToList())
- {
- machine.PropertyChanged += Machine_PropertyChanged;
+ foreach (var machine in Machines.ToList())
+ {
+ machine.PropertyChanged += Machine_PropertyChanged;
+ }
}
}
}
@@ -277,6 +304,8 @@ namespace Tango.MachineStudio.MachineManager.ViewModels
try
{
+ IsFree = false;
+
using (_notification.PushTaskItem("Applying changes..."))
{
if (Machines == null || Machines.Count(x => x.IsSelected) == 0)
@@ -322,7 +351,7 @@ namespace Tango.MachineStudio.MachineManager.ViewModels
}
}
- await LoadMachines();
+ await LoadMachines();
}
}
catch (Exception ex)
@@ -330,6 +359,10 @@ namespace Tango.MachineStudio.MachineManager.ViewModels
LogManager.Log(ex, "Error applying changes.");
_notification.ShowError($"Error applying changes.\n{ex.FlattenMessage()}");
}
+ finally
+ {
+ IsFree = true;
+ }
}
}
}