private void SaveApplicationDialogModel(ApplicationDialogModel applicationDialog) { if (applicationDialog == null) { throw new ArgumentNullException(nameof(applicationDialog)); } if (applicationDialog.SelectedProvider == null) { throw new ArgumentException("The selected provider is null", nameof(applicationDialog)); } Application applicationFolder; if (applicationDialog.EntityId == default) { applicationDialog.EntityId = GetNewApplicationId(); applicationFolder = new Application { Id = applicationDialog.EntityId }; _configurationService.Configuration.Applications.Add(applicationFolder); } else { applicationFolder = _configurationService.Configuration.Applications.FirstOrDefault(af => af.Id == applicationDialog.EntityId); if (applicationFolder == null) { throw new Exception(Strings.EntityNotFound); } } applicationFolder.Name = applicationDialog.Name; applicationFolder.EnableSilentInstallation = applicationDialog.EnableSilentInstallation; applicationFolder.DisableReboot = applicationDialog.DisableReboot; applicationFolder.EnableInstallationLogging = applicationDialog.EnableInstallationLogging; applicationFolder.AutomaticallyDeleteInstallationLogs = applicationDialog.AutomaticallyDeleteInstallationLogs; applicationFolder.KeepNewestInstallationLogs = applicationDialog.KeepNewestInstallationLogs; applicationFolder.Configuration = applicationDialog.SelectedProvider.CreateConfiguration(); applicationFolder.FilterDuplicateInstallers = applicationDialog.FilterDuplicateInstallers; if (applicationDialog.Parent is MainWindowDialogModel mainWindowDialogModel) { var applicationViewModel = CreateApplicationViewModel(applicationFolder, mainWindowDialogModel); mainWindowDialogModel.Applications.Add(applicationViewModel); } applicationDialog.IsDirty = false; }
private ApplicationDialogModel CreateApplicationDialogModel(IViewModel?parent = null) { ApplicationDialogModel dialogModel; if (parent is ApplicationViewModel applicationViewModel) { dialogModel = new ApplicationDialogModel { Parent = applicationViewModel, Title = Strings.Edit, EntityId = applicationViewModel.EntityId, Name = applicationViewModel.Name, EnableSilentInstallation = applicationViewModel.EnableSilentInstallation, DisableReboot = applicationViewModel.DisableReboot, EnableInstallationLogging = applicationViewModel.EnableInstallationLogging, AutomaticallyDeleteInstallationLogs = applicationViewModel.AutomaticallyDeleteInstallationLogs, KeepNewestInstallationLogs = applicationViewModel.KeepNewestInstallationLogs, FilterDuplicateInstallers = applicationViewModel.FilterDuplicateInstallers }; foreach (var provider in CreateAvailableProviderViewModels(dialogModel)) { dialogModel.AvailableProviders.Add(provider); } var application = _configurationService.Configuration.Applications.FirstOrDefault(af => af.Id == applicationViewModel.EntityId); if (application == null) { throw new InvalidOperationException(Strings.EntityNotFound); } var matchingProvider = dialogModel.AvailableProviders.FirstOrDefault(p => p.ProviderType.ToString() == application.Configuration.ProviderType); if (matchingProvider == null) { throw new InvalidOperationException("The installer file provider is not supported."); } matchingProvider.LoadConfiguration(application.Configuration); dialogModel.SelectedProvider = matchingProvider; } else { var defaultValues = new Application(); dialogModel = new ApplicationDialogModel { Parent = parent, Title = Strings.Add, Name = String.Empty, EnableSilentInstallation = defaultValues.EnableSilentInstallation, DisableReboot = defaultValues.DisableReboot, EnableInstallationLogging = defaultValues.EnableInstallationLogging, AutomaticallyDeleteInstallationLogs = defaultValues.AutomaticallyDeleteInstallationLogs, KeepNewestInstallationLogs = defaultValues.KeepNewestInstallationLogs, FilterDuplicateInstallers = defaultValues.FilterDuplicateInstallers }; foreach (var provider in CreateAvailableProviderViewModels(dialogModel)) { dialogModel.AvailableProviders.Add(provider); } dialogModel.SelectedProvider = dialogModel.AvailableProviders.FirstOrDefault(); } dialogModel.OpenLogFolderCommand = new OpenLogFolderCommand(_uriService, _ioService, _logFolderPath); dialogModel.IsDirty = false; return(dialogModel); }
public void SelectedProvider_property() { var dialogModel = new ApplicationDialogModel(); dialogModel.TestProperty(() => dialogModel.SelectedProvider, new DiskInstallerFileBundleProviderViewModel()); }
public void EntityId_property() { var dialogModel = new ApplicationDialogModel(); dialogModel.TestProperty(() => dialogModel.EntityId, Guid.NewGuid()); }
public void FilterDuplicateInstallers_property() { var dialogModel = new ApplicationDialogModel(); dialogModel.TestProperty(() => dialogModel.FilterDuplicateInstallers, true); }
public void AvailableProviders_not_null() { var dialogModel = new ApplicationDialogModel(); Assert.NotNull(dialogModel.AvailableProviders); }
public void AutomaticallyDeleteInstallationLogs_property() { var dialogModel = new ApplicationDialogModel(); dialogModel.TestProperty(() => dialogModel.AutomaticallyDeleteInstallationLogs, true); }
public void KeepNewestInstallationLogs_property() { var dialogModel = new ApplicationDialogModel(); dialogModel.TestProperty(() => dialogModel.KeepNewestInstallationLogs, 5); }
public void EnableInstallationLogging_property() { var dialogModel = new ApplicationDialogModel(); dialogModel.TestProperty(() => dialogModel.EnableInstallationLogging, true); }
public void DisableReboot_property() { var dialogModel = new ApplicationDialogModel(); dialogModel.TestProperty(() => dialogModel.DisableReboot, true); }
public void EnableSilentInstallation_property() { var dialogModel = new ApplicationDialogModel(); dialogModel.TestProperty(() => dialogModel.EnableSilentInstallation, true); }
public void Name_property() { var dialogModel = new ApplicationDialogModel(); dialogModel.TestProperty(() => dialogModel.Name, "test"); }
public void OpenLogFolderCommand_property() { var dialogModel = new ApplicationDialogModel(); dialogModel.TestProperty(() => dialogModel.OpenLogFolderCommand, new TestCommand(), PropertyTestSettings.IsDirtyIgnored | PropertyTestSettings.IsReadOnlyIgnored); }