Gui neu angelegt

This commit is contained in:
2023-04-20 20:37:39 +02:00
parent 0877d2b308
commit bcbda7622c
83 changed files with 389 additions and 502 deletions

View File

@@ -0,0 +1,102 @@
using SewerStammGen.Shared.Domain;
using Shared.Contracts;
using StammGenerator.Interface;
using System.Windows.Input;
namespace StammGenerator.ViewModel
{
internal class ProjektEditViewModel : BaseViewModel
{
private Projekt _model;
private int ProjektID;
private readonly IDataService<Projekt> _dataService;
private readonly IRenavigator _renavigator;
public ICommand Speichern { get; set; }
public string ProjektName
{
get => _model.Projektname;
set
{
if(_model.Projektname != value)
{
_model.Projektname = value;
OnPropertyChanged();
}
}
}
public string Erstelldatum
{
get => _model.Erstelldatum;
set
{
if (_model.Erstelldatum != value)
{
_model.Erstelldatum = value;
OnPropertyChanged();
}
}
}
public string Strasse
{
get => _model.Strasse;
set
{
if (_model.Strasse != value)
{
_model.Strasse = value;
OnPropertyChanged();
}
}
}
public string Ort
{
get => _model.Ort;
set
{
if (_model.Ort != value)
{
_model.Ort = value;
OnPropertyChanged();
}
}
}
public ProjektEditViewModel(IDataService<Projekt> dataService, IRenavigator renavigator, IActualState actualState)
{
_dataService = dataService;
_renavigator = renavigator;
ProjektID = actualState.ProjektID;
_model = new Projekt();
Speichern = new RelayCommand((x) => this.SaveProject());
LoadProjekt();
}
private async void LoadProjekt()
{
_model = await _dataService.Get(ProjektID);
if(_model == null)
{
_model = new Projekt()
{
Auftraggeber = new Auftraggeber(),
};
}
OnPropertyChanged(nameof(ProjektName));
OnPropertyChanged(nameof(Erstelldatum));
OnPropertyChanged(nameof(Strasse));
OnPropertyChanged(nameof(Ort));
}
private void SaveProject()
{
_dataService.Update(_model);
_renavigator.Renavigate();
}
}
}

View File

@@ -0,0 +1,72 @@
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 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);
}
}
}
}