Backend/e-suite.WorkBench/eSuite.WorkBench/Commands/SaveUserSettingsCommand.cs
2026-01-20 21:50:10 +00:00

68 lines
2.7 KiB
C#

using eSuite.WorkBench.Helpers;
using eSuite.WorkBench.WpfHelper;
using System;
using System.Threading.Tasks;
using System.Windows.Controls;
namespace eSuite.WorkBench.Commands
{
public class SaveUserSettingsCommand : AsyncCommandBase
{
private readonly MainWindowViewModel _mainWindowViewModel;
public SaveUserSettingsCommand(MainWindowViewModel mainWindowViewModel, Action<Exception> onException, EventHandler<FeedbackEventArgs> addFeedbackMessage) : base(onException)
{
FeedbackMessage += addFeedbackMessage;
_mainWindowViewModel = mainWindowViewModel;
}
protected override Task ExecuteAsync(object parameter)
{
PasswordBox passwordBox = parameter as PasswordBox;
if (passwordBox == null)
{
throw new NullReferenceException();
}
using(var secureStringDecoder = new SecureStringDecoder(passwordBox.SecurePassword))
{
_mainWindowViewModel.SettingsPassword = secureStringDecoder.DecodeString();
}
Properties.Settings.Default.SqlServerAdminLogin = _mainWindowViewModel.SettingsLogin;
if (!string.IsNullOrWhiteSpace(_mainWindowViewModel.SettingsPassword))
Properties.Settings.Default.SqlServerAdminPassword = _mainWindowViewModel.SettingsPassword;
Properties.Settings.Default.DeveloperMode = _mainWindowViewModel.DeveloperMode;
Properties.Settings.Default.DevopsPersonalAccessKey = _mainWindowViewModel.DevopsPersonalAccessKey;
Properties.Settings.Default.Save();
DoFeedbackMessage("Settings Saved");
return Task.CompletedTask;
}
public override bool CanExecute(object parameter)
{
if (!base.CanExecute(parameter))
return false;
string newPassword;
PasswordBox passwordBox = parameter as PasswordBox;
using (var secureStringDecoder = new SecureStringDecoder(passwordBox.SecurePassword))
{
newPassword = secureStringDecoder.DecodeString();
}
if (_mainWindowViewModel.SettingsLogin != Properties.Settings.Default.SqlServerAdminLogin)
return true;
if (!string.IsNullOrEmpty(newPassword) && newPassword != Properties.Settings.Default.SqlServerAdminPassword)
return true;
if (_mainWindowViewModel.DeveloperMode != Properties.Settings.Default.DeveloperMode)
return true;
if (Properties.Settings.Default.DevopsPersonalAccessKey != _mainWindowViewModel.DevopsPersonalAccessKey)
return true;
return false;
}
}
}