/// <summary> /// Load data from database /// </summary> /// <param name="parameter">Not used, only for GUI binding</param> private void LoadData(object parameter) { try { // Single CM is updated, only update that one CM using (DataContext context = new DataContext()) { if (parameter is VibesCm cmChanged) { VibesCm newCm = context.HostCms.Where(c => c.Id == cmChanged.Id).Include(c => c.DeploymentProperties).Include(c => c.VibesHost).FirstOrDefault().DeepCopy(); newCm.CmStatus = CmStates.Updated; if (CmsDisplayExec.Contains(cmChanged)) { CmsDisplayExec.Remove(CmsDisplayExec.Single(c => c.Id == cmChanged.Id)); CmsDisplayExec.Add(newCm); SelectedCmExec = newCm; SelectedHostExec = HostsDisplayExec.SingleOrDefault(h => h.Id == newCm.VibesHost.Id); } if (CmsDisplayOperDb.Contains(cmChanged)) { CmsDisplayOperDb.Remove(CmsDisplayOperDb.Single(c => c.Id == cmChanged.Id)); CmsDisplayOperDb.Add(newCm); SelectedCmOperDb = newCm; SelectedHostOperDb = HostsDisplayOperDb.SingleOrDefault(h => h.Id == newCm.VibesHost.Id); } if (CmsDisplayOperAppOne.Contains(cmChanged)) { CmsDisplayOperAppOne.Remove(CmsDisplayOperAppOne.Single(c => c.Id == cmChanged.Id)); CmsDisplayOperAppOne.Add(newCm); SelectedCmOperAppOne = newCm; SelectedHostOperAppOne = HostsDisplayOperAppOne.SingleOrDefault(h => h.Id == newCm.VibesHost.Id); } if (CmsDisplayOperAppTwo.Contains(cmChanged)) { CmsDisplayOperAppTwo.Remove(CmsDisplayOperAppTwo.Single(c => c.Id == cmChanged.Id)); CmsDisplayOperAppTwo.Add(newCm); SelectedCmOperAppTwo = newCm; SelectedHostOperAppTwo = HostsDisplayOperAppTwo.SingleOrDefault(h => h.Id == newCm.VibesHost.Id); } if (CmsDisplayMs.Contains(cmChanged)) { CmsDisplayMs.Remove(CmsDisplayMs.Single(c => c.Id == cmChanged.Id)); CmsDisplayMs.Add(newCm); SelectedCmMs = newCm; SelectedHostMs = HostsDisplayMs.SingleOrDefault(h => h.Id == newCm.VibesHost.Id); } return; } } // Initial Load using (DataContext context = new DataContext()) { HostsDisplayExec.Clear(); CmsDisplayExec.Clear(); if (context.EnvironmentHosts.Any(h => h.HostType == HostTypes.EXEC)) { foreach (VibesHost host in context.EnvironmentHosts.Where(h => h.HostType == HostTypes.EXEC).OrderBy(h => h.Name)) { VibesHost newHost = host.DeepCopy(); HostsDisplayExec.Add(newHost); } SelectedHostExec = HostsDisplayExec.FirstOrDefault(); } HostsDisplayOperDb.Clear(); CmsDisplayOperDb.Clear(); if (context.EnvironmentHosts.Any(h => h.HostType == HostTypes.OPERDB)) { foreach (VibesHost host in context.EnvironmentHosts.Where(h => h.HostType == HostTypes.OPERDB).OrderBy(h => h.Name)) { VibesHost newHost = host.DeepCopy(); HostsDisplayOperDb.Add(newHost); } SelectedHostOperDb = HostsDisplayOperDb.FirstOrDefault(); } HostsDisplayOperAppOne.Clear(); CmsDisplayOperAppOne.Clear(); if (context.EnvironmentHosts.Any(h => h.HostType == HostTypes.OPERAPP1)) { foreach (VibesHost host in context.EnvironmentHosts.Where(h => h.HostType == HostTypes.OPERAPP1).OrderBy(h => h.Name)) { VibesHost newHost = host.DeepCopy(); HostsDisplayOperAppOne.Add(newHost); } SelectedHostOperAppOne = HostsDisplayOperAppOne.FirstOrDefault(); } HostsDisplayOperAppTwo.Clear(); CmsDisplayOperAppTwo.Clear(); if (context.EnvironmentHosts.Any(h => h.HostType == HostTypes.OPERAPP2)) { foreach (VibesHost host in context.EnvironmentHosts.Where(h => h.HostType == HostTypes.OPERAPP2).OrderBy(h => h.Name)) { VibesHost newHost = host.DeepCopy(); HostsDisplayOperAppTwo.Add(newHost); } SelectedHostOperAppTwo = HostsDisplayOperAppTwo.FirstOrDefault(); } HostsDisplayMs.Clear(); CmsDisplayMs.Clear(); if (context.EnvironmentHosts.Any(h => h.HostType == HostTypes.MS)) { foreach (VibesHost host in context.EnvironmentHosts.Where(h => h.HostType == HostTypes.MS).OrderBy(h => h.Name)) { VibesHost newHost = host.DeepCopy(); HostsDisplayMs.Add(newHost); } SelectedHostMs = HostsDisplayMs.FirstOrDefault(); } } } catch (Exception ex) { LogAndReportException(ex, $"Error loading VIBES host's from DB: {ex.Message}", true); } }