Haltungübersicht angefangen

This commit is contained in:
2023-04-03 11:17:29 +02:00
parent d4b38ff7ae
commit 7999b7ffd0
33 changed files with 697 additions and 429 deletions

View File

@@ -13,22 +13,25 @@ namespace SewerStammGen.WPF.ViewModel.Factories
private CreateViewModel<HomeViewModel> _createHomeViewModel;
private CreateViewModel<ManholeEditViewModel> _createManholeEditViewModel;
private CreateViewModel<ManholeListViewModel> _createManholeListViewModel;
private CreateViewModel<SewerConnectorViewModel> _createSewerConnectorViewModel;
private CreateViewModel<HaltungListViewModel> _createHaltungListViewModel;
//private CreateViewModel<SewerConnectorViewModel> _createSewerConnectorViewModel;
private CreateViewModel<ProjektListViewModel> _createProjektListViewModel;
public MainWindowViewModelFactory(
CreateViewModel<HomeViewModel> createHomeViewModel,
CreateViewModel<ManholeEditViewModel> createManholeEditViewModel,
CreateViewModel<ManholeListViewModel> createManholeListViewModel,
CreateViewModel<SewerConnectorViewModel> createSewerConnectorViewModel,
CreateViewModel<HaltungListViewModel> createHaltungListViewModel,
CreateViewModel<ProjektListViewModel> createProjektListViewModel
)
{
_createHomeViewModel = createHomeViewModel;
_createManholeEditViewModel = createManholeEditViewModel;
_createSewerConnectorViewModel = createSewerConnectorViewModel;
//_createSewerConnectorViewModel = createSewerConnectorViewModel;
_createProjektListViewModel = createProjektListViewModel;
_createManholeListViewModel = createManholeListViewModel;
_createHaltungListViewModel = createHaltungListViewModel;
}
public BaseViewModel CreateViewModel(EMainWindowViewType viewType)
@@ -40,7 +43,8 @@ namespace SewerStammGen.WPF.ViewModel.Factories
case EMainWindowViewType.SchachtList: return _createManholeListViewModel();
case EMainWindowViewType.SchachtEdit: return _createManholeEditViewModel();
case EMainWindowViewType.SewerConnectionEdit: return _createSewerConnectorViewModel();
case EMainWindowViewType.HaltungList: return _createHaltungListViewModel();
//case EMainWindowViewType.SewerConnectionEdit: return _createSewerConnectorViewModel();
case EMainWindowViewType.ProjectList: return _createProjektListViewModel();

View File

@@ -0,0 +1,96 @@
using SewerStammGen.Shared.Contracts;
using SewerStammGen.WPF.ViewModel.State;
using Shared.Contracts;
using Shared.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Controls;
using System.Windows.Input;
namespace SewerStammGen.WPF.ViewModel
{
internal class HaltungEditViewModel : BaseViewModel
{
private readonly IActualState _actualState;
private readonly IHaltungDataService _kanalDataService;
private Kanal _model;
public string Haltungsbezeichnung
{
get => _model.Objektbezeichnung;
set
{
if(_model.Objektbezeichnung != value)
{
_model.Objektbezeichnung = value;
OnPropertyChanged();
}
}
}
public string Material
{
get => _model.Material;
set
{
if( _model.Material != value)
{
_model.Material = value;
OnPropertyChanged();
}
}
}
public string Durchmesser
{
get => _model.DN.ToString();
set
{
if(_model.DN.ToString() != value)
{
_model.DN = int.Parse(value);
OnPropertyChanged();
}
}
}
public string Haltungslaenge
{
get => _model.Haltungslaenge.ToString();
set
{
if(_model.Haltungslaenge.ToString() != value)
{
_model.Haltungslaenge = decimal.Parse(value);
OnPropertyChanged();
}
}
}
public ICommand Speichern { get; set; }
public HaltungEditViewModel(IHaltungDataService kanalDataService, IActualState actualState)
{
_actualState = actualState;
_kanalDataService = kanalDataService;
_model = new Kanal();
Speichern = new RelayCommand((x) => SaveKanal());
LoadModel();
}
private void SaveKanal()
{
_kanalDataService.Update(_model.Id, _model);
}
private async void LoadModel()
{
_model = await _kanalDataService.Get(_actualState.HaltungID);
OnPropertyChanged(nameof(Haltungslaenge));
OnPropertyChanged(nameof(Haltungsbezeichnung));
OnPropertyChanged(nameof(Material));
OnPropertyChanged(nameof(Haltungslaenge));
}
}
}

View File

@@ -0,0 +1,56 @@
using SewerStammGen.Shared.Contracts;
using SewerStammGen.WPF.Commands;
using SewerStammGen.WPF.Interface.Navigator;
using SewerStammGen.WPF.ViewModel.State;
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 HaltungListViewModel : BaseViewModel
{
private readonly ObservableCollection<Kanal> _haltungen;
private readonly IActualState _actualState;
private readonly IHaltungDataService _haltungDataService;
public Kanal? SelectedHaltung { get; set; }
public ObservableCollection<Kanal> Haltungen { get => _haltungen; }
public ICommand EditCommand { get; set; }
public ICommand AddCommand { get; set; }
public HaltungListViewModel(IHaltungDataService haltungDataService, IActualState actualState, IRenavigator renavigator )
{
_haltungen = new ObservableCollection<Kanal>();
_actualState = actualState;
_haltungDataService = haltungDataService;
EditCommand = new HaltungEditCommand(haltungDataService, actualState, renavigator, this);
AddCommand = new HaltungAddCommand();
LoadHaltungen();
}
private async void LoadHaltungen()
{
var haltungen = await _haltungDataService.GetAll(_actualState.ProjektID);
InitCollection(_haltungen, haltungen);
}
private void InitCollection(ObservableCollection<Kanal> dest, IEnumerable<Kanal> source)
{
dest.Clear();
foreach (var sourceItem in source)
{
dest.Add(sourceItem);
}
}
}
}

View File

@@ -1,12 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SewerStammGen.WPF.ViewModel
{
public class ManholeEditViewModel : BaseViewModel
{
}
}

View File

@@ -0,0 +1,126 @@
using SewerStammGen.WPF.ViewModel.State;
using Shared.Contracts;
using Shared.Domain;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace SewerStammGen.WPF.ViewModel
{
public class ManholeEditViewModel : BaseViewModel
{
private readonly IActualState _actualState;
private readonly IDataService<Schacht> _schachtDataService;
private Schacht _model;
public ICommand Speichern { get; set; }
public string Objektbezeichnung
{
get
{
return _model.Objektbezeichnung;
}
set
{
if(_model.Objektbezeichnung != value)
{
_model.Objektbezeichnung = value;
OnPropertyChanged();
}
}
}
public decimal RechtsWert
{
get => _model.RechtsWert;
set
{
if(_model.RechtsWert != value)
{
_model.RechtsWert = value;
OnPropertyChanged();
}
}
}
public decimal HochWert
{
get => _model.HochWert; set
{
if (_model.HochWert != value)
{
_model.HochWert = value;
OnPropertyChanged();
}
}
}
public decimal DeckelHoehe
{
get => _model.DeckelHoehe;
set
{
if (_model.DeckelHoehe != value)
{
_model.DeckelHoehe = value;
OnPropertyChanged();
}
}
}
public decimal SohlHoehe
{
get => _model.SohlHoehe;
set
{
if (_model.SohlHoehe != value)
{
_model.SohlHoehe = value;
OnPropertyChanged();
}
}
}
public EEntwaeserung Entwaeserung
{
get => _model.Entwaesserung;
set
{
if (_model.Entwaesserung != value)
{
_model.Entwaesserung = value;
OnPropertyChanged();
}
}
}
public ManholeEditViewModel(IDataService<Schacht> schachtDataService,IActualState actualState)
{
_actualState = actualState;
_schachtDataService = schachtDataService;
_model = new Schacht();
Speichern = new RelayCommand((x) => SaveSchacht());
LoadModel();
}
private void SaveSchacht()
{
_schachtDataService.Update(_model.Id, _model);
}
private async void LoadModel()
{
_model = await _schachtDataService.Get(_actualState.SchachtID);
OnPropertyChanged(nameof(Entwaeserung));
OnPropertyChanged(nameof(Objektbezeichnung));
OnPropertyChanged(nameof(HochWert));
OnPropertyChanged(nameof(RechtsWert));
OnPropertyChanged(nameof(DeckelHoehe));
OnPropertyChanged(nameof(SohlHoehe));
}
}
}

View File

@@ -16,35 +16,37 @@ namespace SewerStammGen.WPF.ViewModel
{
public class ManholeListViewModel : BaseViewModel
{
private ISchachtDataService _schachtService;
private ISchachtDataService _schachtDataService;
private readonly ObservableCollection<Schacht> _schaechte;
private readonly IActualState _actualState;
private readonly ISchachtService _schachtServicer;
private readonly ISchachtService _schachtService;
public ObservableCollection<Schacht> Schaechte { get => _schaechte; }
public Schacht? SelectedSchacht { get; set; }
public ICommand AddSchachtCommand { get; set; }
public ICommand EditSchachtCommand { get; set; }
public ICommand DeleteSchachtCommand { get; set; }
public ManholeListViewModel(ISchachtDataService schachtService, IDataService<Projekt> projektService,IRenavigator renavigator ,IActualState actualState, ISchachtService schachtServicer)
public ManholeListViewModel(ISchachtDataService schachtDataService, IDataService<Projekt> projektService,IRenavigator renavigator ,IActualState actualState, ISchachtService schachtService)
{
_schachtService = schachtService;
_schachtDataService = schachtDataService;
_actualState = actualState;
_schaechte = new ObservableCollection<Schacht>();
_schachtServicer = schachtServicer;
_schachtService = schachtService;
AddSchachtCommand = new SchachtAddCommand(schachtService,projektService, actualState,renavigator,schachtServicer);
EditSchachtCommand = new SchachtEditCommand(schachtService, actualState, renavigator,this);
DeleteSchachtCommand = new SchachtDeleteCommand(schachtService, actualState, renavigator, this);
AddSchachtCommand = new SchachtAddCommand(projektService, actualState,renavigator,schachtService);
EditSchachtCommand = new SchachtEditCommand(schachtDataService, actualState, renavigator,this);
DeleteSchachtCommand = new SchachtDeleteCommand(schachtDataService, actualState, renavigator, this);
LoadSchaechte();
}
private async void LoadSchaechte()
{
var schaechte = await _schachtService.GetAll(_actualState.ProjektID);
var schaechte = await _schachtDataService.GetAll(_actualState.ProjektID);
InitCollection(_schaechte, schaechte);
}

View File

@@ -1,12 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace SewerStammGen.WPF.ViewModel
{
public class SewerConnectorViewModel : BaseViewModel
{
}
}

View File

@@ -12,6 +12,9 @@ namespace SewerStammGen.WPF.ViewModel.State
// TODO: set auf private set setzen
public int ProjektID { get; set; }
public int SchachtID { get; private set; }
public int HaltungID { get; private set; }
public void SetProjekt(Projekt projekt, bool notification = true)
{
ProjektID = projekt.Id;
@@ -20,12 +23,39 @@ namespace SewerStammGen.WPF.ViewModel.State
OnProjektChanged();
}
}
public void SetSchacht(Schacht schacht, bool notification = true)
{
SchachtID = schacht.Id;
if(notification)
{
OnSchachtChanged();
}
}
public void SetHaltung(Kanal haltung, bool notification = true)
{
HaltungID = haltung.Id;
if(notification)
{
OnHaltungChanged();
}
}
public event EventHandler? ProjektChanged;
public event EventHandler? SchachtChanged;
public event EventHandler? HaltungChanged;
private void OnProjektChanged()
{
ProjektChanged?.Invoke(this, new EventArgs());
}
private void OnSchachtChanged()
{
SchachtChanged?.Invoke(this, new EventArgs());
}
private void OnHaltungChanged()
{
HaltungChanged?.Invoke(this, new EventArgs());
}
}
}

View File

@@ -12,7 +12,11 @@ namespace SewerStammGen.WPF.ViewModel.State
event EventHandler? ProjektChanged;
// TODO: ProjektID set entfernen!
int ProjektID { get; set; }
int SchachtID { get; }
int HaltungID { get; }
void SetProjekt(Projekt projekt, bool notification = true);
void SetSchacht(Schacht schacht, bool notification = true);
void SetHaltung(Kanal haltung, bool notification = true);
}
}