Files
SewerGenerator/StammGenerator/ViewModel/Projekt/ProjektListViewModel.cs
2023-04-24 23:23:35 +02:00

81 lines
2.8 KiB
C#

using SewerStammGen.DAL.Services.PostgresqlData;
using SewerStammGen.Shared.Contracts;
using SewerStammGen.Shared.Domain;
using StammGenerator.Commands;
using StammGenerator.Interface;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows.Input;
namespace StammGenerator.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 ICommand SchachtImportCommand { get; set; }
public ICommand DatenExportCommand { get; set; }
public Projekt? SelectedProjekt
{
get => _selectedProjekt;
set
{
if(_selectedProjekt != value)
{
_selectedProjekt = value;
OnPropertyChanged();
OnPropertyChanged(nameof(CanSelectProjekt));
}
}
}
public ProjektListViewModel(IProjektDataService generic, IHaltungDataService haltungDataService, ISchachtDataService schachtDataService, IActualState actualState, IRenavigator renavigator, IRenavigator navigatetoImport)
{
_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();
SchachtImportCommand = new RelayCommand((x) =>
{
navigatetoImport.Renavigate();
});
DatenExportCommand = new ProjectExportCommand(this, haltungDataService, schachtDataService);
}
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);
}
}
}
}