/// <summary> /// Called when [uninstall wing]. /// </summary> /// <param name="dynamicTarget">The dynamic target.</param> private async void OnUninstallWing(Target dynamicTarget) { if (dynamicTarget == null) { return; } var uninstallConfirmation = MessageBox.Show(@"Are you sure you want to uninstall '" + dynamicTarget.DisplayName + "'?" + Environment.NewLine + "The Website(s) using this Wing will be deleted." , @"Uninstall Confirmation", MessageBoxButton.YesNo); if (uninstallConfirmation == MessageBoxResult.No) { return; } UninstallInProgress = true; StatusLog.Clear(); ProgressPopupVisibility = true; await Task.Delay(500); UnistallWingName = dynamicTarget.DisplayName; var cancellationToken = new CancellationTokenSource(); var uninstallResult = await DynamicTargetService.Uninstall(dynamicTarget, cancellationToken.Token, result => { if (result.Status == OpenSourceUnInstallFlags.StatusUpdate) { StatusLog.Add(result.Message); } if (result.Status == OpenSourceUnInstallFlags.Success) { StatusLog.Add(string.Format("Uninstallation of wing \"{0}\" completed successfully.", dynamicTarget.Name)); if (WingItems.Contains(dynamicTarget)) { WingItems.Remove(dynamicTarget); } } }, exceptionResult => { var statusMessage = string.Format("Uninstallation of wing \"{0}\" was unsuccessful. Please try again. If for any reason the" + "the error still remains after trying to uninstall again. Please contact Monahrq technical assistance.", dynamicTarget.Name); StatusLog.Add(statusMessage); Logger.Write(exceptionResult.Exception); }); UninstallInProgress = false; }
/// <summary> /// Called when [install flutter]. /// </summary> private async void OnInstallFlutter() { FlutterInstalled = false; var uiContext = SynchronizationContext.Current; StatusLog.Clear(); ApplicableReports.Clear(); if (string.IsNullOrEmpty(SelectedFlutterFile)) { return; } OSFlutterInstallResult installResult = null; var cTokenSource = new CancellationTokenSource(); var taskResult = await DynamicTargetService.InstallFlutterFiles(SelectedFlutterFile, cTokenSource.Token, result => { installResult = result; if (result.Status == OSFlutterInstallFlags.StatusUpdate || result.Status == OSFlutterInstallFlags.UploadFileComplete) { uiContext.Send(x => StatusLog.Add(result.Message), null); } if (result.Status == OSFlutterInstallFlags.Success) { uiContext.Send(x => StatusLog.Add(result.Message), null); } }, exceptionResult => { if (exceptionResult.Status == OSFlutterInstallFlags.Error) { uiContext.Send(x => StatusLog.Add(exceptionResult.Message), null); Logger.Warning(installResult.ToString()); installResult = exceptionResult; } }); if (installResult.Status == OSFlutterInstallFlags.Success && installResult.Flutter != null) { if (FlutterItems.All(f => !f.Name.EqualsIgnoreCase(installResult.Flutter.Name))) { FlutterItems.Add(installResult.Flutter); } } FlutterInstalled = true; }
/// <summary> /// Called when [uninstall flutter]. /// </summary> /// <param name="flutter">The flutter.</param> private async void OnUninstallFlutter(Flutter flutter) { var uiContext = SynchronizationContext.Current; var uninstallConfirmation = MessageBox.Show(@"Are you sure you want to uninstall '" + flutter.Name + "'?" , @"Uninstall Confirmation", MessageBoxButton.YesNo); if (uninstallConfirmation == MessageBoxResult.No) { return; } UninstallInProgress = true; StatusLog.Clear(); ProgressPopupVisibility = true; var cancellationToken = new CancellationTokenSource(); var uninstallResult = await DynamicTargetService.Uninstall(flutter, cancellationToken.Token, result => { if (result.Status == OpenSourceUnInstallFlags.StatusUpdate) { StatusLog.Add(result.Message); } if (result.Status == OpenSourceUnInstallFlags.Success) { StatusLog.Add(string.Format("Uninstallation of flutter \"{0}\" completed successfully.", flutter.Name)); } }, errorCallback => { var statusMessage = string.Format("Uninstallation of flutter \"{0}\" was unsuccessful. Please try again. If for any reason the" + "the error still remains after trying to uninstall again. Please contact Monahrq technical assistance.", flutter.Name); uiContext.Send(x => StatusLog.Add(statusMessage), null); Logger.Write(errorCallback.Exception); //if (FlutterItems.Contains(flutter)) // FlutterItems.Remove(flutter); }); if (FlutterItems.Contains(flutter)) { FlutterItems.Remove(flutter); } UninstallInProgress = false; }
/// <summary> /// Called when [install wing]. /// </summary> private async void OnInstallWing() { WingInstalled = false; StatusLog.Clear(); if (string.IsNullOrEmpty(SelectedWingFile)) { return; } await Task.Run(() => StatusLog.Add("Copying files to Wing directory. Please, stand by. It may take a few seconds.")); await Task.Delay(100); var targetsToInstall = await Task.Run(() => DynamicTargetService.CopyTargetFilesToDirectory(SelectedWingFile).ToList()); using (var session = Provider.SessionFactory.OpenSession()) { var wing = session.Query <Wing>().FirstOrDefault(w => w.WingGUID == new Guid(DynamicTargetWingConstants.WING_MODULE_GUID)); if (wing == null) { throw new NotSupportedException("Dynamic wings module is not installed. XML Wings cannot be installed."); } foreach (var dynamicTarget in targetsToInstall) { StatusLog.Add(string.Format("Starting installation of wing \"{0}\".", dynamicTarget.Name)); #region "Asynchronous Aproach" var result = await DynamicTargetService.InstallDynamicTargetAsync(dynamicTarget, wing, session, DynamicTargetService.Context.Value, InstallWingProgress); if (!result) { StatusLog.Add($"An error occurred while trying to install wing \"{dynamicTarget.Name}\". Please try again and if the error persists, please contact technical assistance for help."); } #endregion #region synchronous install //var result = DynamicTargetService.InstallDynamicTarget(dynamicTarget, wing, session); //switch (result.Status) //{ // case OpenSourceInstallFlags.AlreadyExists: // uiContext.Send(x => StatusLog.Add(string.Format("Wing \"{0}\" has already been installed.", dynamicTarget.Name)), null); // continue; // case OpenSourceInstallFlags.Error: // // TODO: Add message for user. // uiContext.Send(x => StatusLog.Add(string.Format("An error occurred while trying to install wing \"{0}\". Please try again and if the error persists, please contact technical assistance for help.", dynamicTarget.Name)), null); // Logger.Write(result); // break; // case OpenSourceInstallFlags.Success: // uiContext.Send(x => StatusLog.Add( // string.Format( // "Start installation of associated measures, reports, wing dataset target tables for wing \"{0}\".", // dynamicTarget.Name)), null); // target = result.Target; // if (target != null) // { // // Thread.Sleep(500); // uiContext.Send( // x => // StatusLog.Add(string.Format("Start importing measures for wing \"{0}\".", // dynamicTarget.Name)), null); // DynamicTargetService.ImportMeasures(target, dynamicTarget, session); // uiContext.Send( // x => // StatusLog.Add(string.Format("End importing measures for wing \"{0}\".", // dynamicTarget.Name)), null); // // Thread.Sleep(500); // uiContext.Send( // x => // StatusLog.Add(string.Format("Start importing reports for wing \"{0}\".", // dynamicTarget.Name)), null); // DynamicTargetService.ImportReports(dynamicTarget, session); // uiContext.Send( // x => // StatusLog.Add(string.Format("End importing reports for wing \"{0}\".", // dynamicTarget.Name)), null); // uiContext.Send( // x => // StatusLog.Add(string.Format("Finalizing installation for wing \"{0}\".", // dynamicTarget.Name)), null); // // Thread.Sleep(1000); // uiContext.Send( // x => // StatusLog.Add( // string.Format("Installation for wing \"{0}\" successfully completed.", // dynamicTarget.Name)), null); // if (target != null && !WingItems.Any(item => item.Name.EqualsIgnoreCase(target.Name))) // WingItems.Add(target); // } // break; //} #endregion } } WingInstalled = true; }