Files
DaSaSo/DaSaSo.Wpf/ViewModel/Commands/SelectClientCommand.cs
2022-03-30 14:59:12 +02:00

54 lines
1.7 KiB
C#

using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Wpf.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.Wpf.ViewModel.Commands
{
public class SelectClientCommand : AsyncCommandBase
{
private readonly IActualProject _actualProject;
private readonly ClientListViewModel _clientListViewModel;
private readonly IDataService<Client> _dataservice;
public override bool CanExecute(object? parameter)
{
return _clientListViewModel.CanSelectClient;
}
public SelectClientCommand(
IDataService<Client> 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);
}
}
}