using DaSaSo.Domain.Model; using DaSaSo.Domain.Services; using DaSaSo.Wpf.ViewModel.Interface; using System.Threading.Tasks; namespace DaSaSo.Wpf.ViewModel.Commands { internal class EditImpregnationCommand : AsyncCommandBase { private IDataService _impregnationService; private ImpregnierungListViewModel _impregnierungListViewModel; private IRenavigator _editRenavigator; private IActualProject _actualProject; public override bool CanExecute(object? parameter) { return _impregnierungListViewModel.SelectedImpregnation != null; } public EditImpregnationCommand( IDataService impregnationService, ImpregnierungListViewModel impregnierungListViewModel, IActualProject actualProject, IRenavigator editRenavigator) { _impregnationService = impregnationService; _impregnierungListViewModel = impregnierungListViewModel; _actualProject = actualProject; _editRenavigator = editRenavigator; _impregnierungListViewModel.PropertyChanged += _impregnierungListViewModel_PropertyChanged; } private void _impregnierungListViewModel_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e) { if (e.PropertyName == nameof(_impregnierungListViewModel.CanSelectImpregnation)) OnCanExecuteChanged(); } public override async Task ExecuteAsync(object? parameter) { _actualProject.SetImpregnation(_impregnierungListViewModel.SelectedImpregnation); _editRenavigator.Renavigate(); } } }