Files
SewerGenerator/SewerStammGen/ViewModel/Projekt/ProjektListViewModel.cs
2023-04-11 19:56:36 +02:00

76 lines
2.4 KiB
C#

using SewerStammGen.WPF.Commands;
using SewerStammGen.WPF.Interface.Navigator;
using SewerStammGen.WPF.ViewModel;
using SewerStammGen.WPF.ViewModel.State;
using Shared.Contracts;
using Shared.Domain;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace SewerStammGen.WPF.ViewModel
{
public class ProjektListViewModel : BaseViewModel
{
private IDataService<Projekt> genericDataService;
private readonly ObservableCollection<Projekt> _projekte;
private readonly IActualState _actualState;
public ObservableCollection<Projekt> Projekte { get => _projekte; }
public bool CanSelectProjekt => _selectedProjekt != null;
public ICommand SelectCommand { get; set; }
public ICommand AddCommand { get; set; }
public ICommand EditCommand { get; set; }
private Projekt? _selectedProjekt;
public Projekt? SelectedProjekt
{
get => _selectedProjekt;
set
{
if(_selectedProjekt != value)
{
_selectedProjekt = value;
OnPropertyChanged();
OnPropertyChanged(nameof(CanSelectProjekt));
}
}
}
public ProjektListViewModel(IDataService<Projekt> generic, IRenavigator renavigator,IActualState actualState)
{
_projekte = new ObservableCollection<Projekt>();
if (generic == null) throw new ArgumentNullException(nameof(generic));
this.genericDataService = generic;
_actualState = actualState;
AddCommand = new ProjektAddCommand(generic,actualState, renavigator);
SelectCommand = new ProjektSelectCommand(actualState,this);
EditCommand = new ProjektEditCommand(generic, actualState, renavigator, this);
LoadProjekte();
}
private async void LoadProjekte()
{
var projects = await genericDataService.GetAll();
InitCollection(_projekte, projects);
}
private void InitCollection(ObservableCollection<Projekt> projekte, IEnumerable<Projekt> projects)
{
projekte.Clear();
foreach(var i in projects)
{
projekte.Add(i);
}
}
}
}