diff options
| author | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2021-05-05 19:50:31 +0300 |
|---|---|---|
| committer | Roy Ben Shabat <Roy.mail.net@gmail.com> | 2021-05-05 19:50:31 +0300 |
| commit | 8594795f820e03b988c37b9e5d9771670889074d (patch) | |
| tree | b554463c0f91161e172a4384cf2b99c91ef7e6bc /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels | |
| parent | 6e7818382734e9ef0b65552bb026c6b0a4f69e4b (diff) | |
| download | Tango-8594795f820e03b988c37b9e5d9771670889074d.tar.gz Tango-8594795f820e03b988c37b9e5d9771670889074d.zip | |
Machine Manager Improvements.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels')
| -rw-r--r-- | Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/ViewModels/MainViewVM.cs | 159 |
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; + } } } } |
