From 6e7818382734e9ef0b65552bb026c6b0a4f69e4b Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Tue, 4 May 2021 19:16:53 +0300 Subject: Added new Machine Manager Role and Permission --- .../MachineManagerModule.cs | 2 +- .../ViewModels/MainViewVM.cs | 224 +++++++++++---------- 2 files changed, 124 insertions(+), 102 deletions(-) (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager') diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/MachineManagerModule.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/MachineManagerModule.cs index a55e332cf..c19a5c45e 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/MachineManagerModule.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.MachineManager/MachineManagerModule.cs @@ -50,7 +50,7 @@ namespace Tango.MachineStudio.MachineManager { get { - return Permissions.RunMachineStudio; + return Permissions.RunMachineManagerModule; } } 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 b97f5e1d9..6acaa8423 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 @@ -11,6 +11,7 @@ using Tango.BL.Entities; using Tango.Core.Commands; using Tango.MachineStudio.Common.Notifications; using Z.EntityFramework.Plus; +using System.ComponentModel; namespace Tango.MachineStudio.MachineManager.ViewModels { @@ -106,86 +107,94 @@ namespace Tango.MachineStudio.MachineManager.ViewModels private async Task LoadMachines() { - SelectAll = null; - - foreach (var machine in Machines.ToList()) + try { - machine.PropertyChanged -= Machine_PropertyChanged; - } + SelectAll = null; - 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 - { - 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(); - - foreach (var machine in machines) + foreach (var machine in Machines.ToList()) { - 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); + machine.PropertyChanged -= Machine_PropertyChanged; } - if (Filter.IsNotNullOrEmpty()) + using (ObservablesContext db = ObservablesContext.CreateDefault()) { - var filter = Filter.ToLower(); - - 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(); - } + 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 + { + 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(); + + 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.Add(model); + } - HardwareVersions = (await db.HardwareVersions.ToListAsync()).OrderByDescending(x => x.Version).ToList(); + if (Filter.IsNotNullOrEmpty()) + { + var filter = Filter.ToLower(); + + 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(); + } - SelectedHardwareVersion = null; - EnableSoftwareUpdate = null; - EnableFirmwareUpgrade = null; + HardwareVersions = (await db.HardwareVersions.ToListAsync()).OrderByDescending(x => x.Version).ToList(); - Machines = models; + SelectedHardwareVersion = null; + EnableSoftwareUpdate = null; + EnableFirmwareUpgrade = null; - foreach (var machine in Machines.ToList()) - { - machine.PropertyChanged += Machine_PropertyChanged; + Machines = models; + + foreach (var machine in Machines.ToList()) + { + machine.PropertyChanged += Machine_PropertyChanged; + } } } + catch (Exception ex) + { + LogManager.Log(ex, "Error loading machines."); + _notification.ShowError($"Error loading machines.\n{ex.FlattenMessage()}"); + } } - private void Machine_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) + private void Machine_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (_preventChange) return; @@ -264,50 +273,63 @@ namespace Tango.MachineStudio.MachineManager.ViewModels private async void Apply() { - if (Machines == null || Machines.Count(x => x.IsSelected) == 0) - { - _notification.ShowInfo("No machines selected"); - return; - } + if (!_notification.ShowQuestion($"You are about to modify {Machines.Count(x => x.IsSelected)} machines. Are you sure?")) return; - using (ObservablesContext db = ObservablesContext.CreateDefault()) + try { - var machines = Machines.Where(x => x.IsSelected).ToList(); - - var guids = machines.Select(x => x.Guid).ToArray(); - - if (EnableSoftwareUpdate != null) + using (_notification.PushTaskItem("Applying changes...")) { - await db.Machines.Where(x => guids.Contains(x.Guid)).UpdateAsync(x => - new Machine() + if (Machines == null || Machines.Count(x => x.IsSelected) == 0) { - SuspendVersionUpdate = !EnableSoftwareUpdate.Value - }); - } + _notification.ShowInfo("No machines selected"); + return; + } - if (EnableFirmwareUpgrade != null) - { - await db.Machines.Where(x => guids.Contains(x.Guid)).UpdateAsync(x => - new Machine() + using (ObservablesContext db = ObservablesContext.CreateDefault()) { - SetupFirmware = EnableFirmwareUpgrade.Value, - SetupFpga = EnableFirmwareUpgrade.Value, - }); - } - - if (SelectedHardwareVersion != null) - { - guids = machines.Select(x => x.ConfigurationGuid).ToArray(); + var machines = Machines.Where(x => x.IsSelected).ToList(); + + var guids = machines.Select(x => x.Guid).ToArray(); + + if (EnableSoftwareUpdate != null) + { + await db.Machines.Where(x => guids.Contains(x.Guid)).UpdateAsync(x => + new Machine() + { + SuspendVersionUpdate = !EnableSoftwareUpdate.Value + }); + } + + if (EnableFirmwareUpgrade != null) + { + await db.Machines.Where(x => guids.Contains(x.Guid)).UpdateAsync(x => + new Machine() + { + SetupFirmware = EnableFirmwareUpgrade.Value, + SetupFpga = EnableFirmwareUpgrade.Value, + }); + } + + if (SelectedHardwareVersion != null) + { + guids = machines.Select(x => x.ConfigurationGuid).ToArray(); + + await db.Configurations.Where(x => guids.Contains(x.Guid)).UpdateAsync(x => + new Configuration() + { + HardwareVersionGuid = SelectedHardwareVersion.Guid + }); + } + } - await db.Configurations.Where(x => guids.Contains(x.Guid)).UpdateAsync(x => - new Configuration() - { - HardwareVersionGuid = SelectedHardwareVersion.Guid - }); + await LoadMachines(); } } - - await LoadMachines(); + catch (Exception ex) + { + LogManager.Log(ex, "Error applying changes."); + _notification.ShowError($"Error applying changes.\n{ex.FlattenMessage()}"); + } } } } -- cgit v1.3.1