77 lines
2.5 KiB
C#
77 lines
2.5 KiB
C#
using SewerStammGen.Shared.Contracts;
|
|
using SewerStammGen.Shared.Domain;
|
|
using SewerStammGen.WPF.Commands;
|
|
using SewerStammGen.WPF.Interface.Navigator;
|
|
using SewerStammGen.WPF.ViewModel;
|
|
using SewerStammGen.WPF.ViewModel.State;
|
|
using Shared.Contracts;
|
|
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 IProjektDataService 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(IProjektDataService 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);
|
|
}
|
|
}
|
|
}
|
|
}
|