using DaSaSo.Domain.Model; using DaSaSo.Domain.Services; using DaSaSo.ViewModel.Interface; using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Input; namespace DaSaSo.ViewModel.Commands { public class SelectClientCommand : AsyncCommandBase { private readonly IActualProject _actualProject; private readonly ClientListViewModel _clientListViewModel; private readonly IDataService _dataservice; public override bool CanExecute(object? parameter) { return _clientListViewModel.CanSelectClient; } public SelectClientCommand( IDataService dataService, IActualProject actualProject, ClientListViewModel clientListViewModel) { _actualProject = actualProject; _clientListViewModel = clientListViewModel; _clientListViewModel.PropertyChanged += ClientListViewModel_PropertyChanged; _dataservice = dataService; } private void ClientListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e) { if(e.PropertyName == nameof(_clientListViewModel.CanSelectClient)) { OnCanExecuteChanged(); } } public override async Task ExecuteAsync(object? parameter) { Client? _selectedClient = _clientListViewModel.SelectedClient; if (_selectedClient == null) return; _selectedClient = await _dataservice.Get(_selectedClient.Id); _actualProject.SetClient(_selectedClient); } } }