viewmodel ins wpf gepackt, build failed

This commit is contained in:
HuskyTeufel
2022-03-30 14:59:12 +02:00
parent f34f4517ca
commit 1bf0c3b615
87 changed files with 157 additions and 213 deletions

View File

@@ -1,9 +0,0 @@
namespace DaSaSo.ViewModel
{
public delegate TViewModel CreateViewModel<TViewModel>() where TViewModel : BaseViewModel;
public class BaseViewModel : ObservableObject
{
public virtual void Dispose() { }
}
}

View File

@@ -1,81 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.BuildingsiteServices;
using DaSaSo.ViewModel.Interface;
using Microsoft.Toolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel
{
public class BuildingsiteEditViewModel : BaseViewModel
{
private readonly IDataService<Buildingsite> _buildingsiteService;
private readonly IActualProject _actualProject;
private readonly IRenavigator _renavigator;
private readonly Buildingsite _model;
public Buildingsite Model
{
get => _model;
}
public string BuildingNumber
{
get => _model.BuildingSiteNumber;
set
{
if(_model.BuildingSiteNumber != value)
{
_model.BuildingSiteNumber = value;
OnPropertyChanged();
}
}
}
public string Country
{
get => _model.Country;
set
{
if(_model.Country != value)
{
_model.Country = value;
OnPropertyChanged();
}
}
}
public string Contactperson
{
get => _model.ContactPerson;
set
{
if (_model.ContactPerson != value)
{
_model.ContactPerson = value;
OnPropertyChanged();
}
}
}
public IRelayCommand SaveBuildingsiteCommand { get; set; }
public BuildingsiteEditViewModel(IDataService<Buildingsite> buildingsiteService, IActualProject actualProject, IRenavigator renavigator)
{
_buildingsiteService = buildingsiteService;
_actualProject = actualProject;
_renavigator = renavigator;
_model = actualProject.AktuellBaustelle;
SaveBuildingsiteCommand = new RelayCommand(SaveBuildingsiteAsync);
}
private async void SaveBuildingsiteAsync()
{
await _buildingsiteService.Update(Model.Id, Model);
_renavigator.Renavigate();
}
}
}

View File

@@ -1,71 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.BuildingsiteServices;
using DaSaSo.EntityFramework.Services;
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Interface;
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 DaSaSo.ViewModel
{
public class BuildingsiteListViewModel: BaseViewModel
{
public ObservableCollection<Buildingsite> Buildingsites { get; }
private readonly IActualProject _actualProject;
private readonly IRenavigator _renavigator;
private readonly BuildingsiteDataService _buildingSiteDataService;
private Buildingsite? _selectedBuildingsite;
public Buildingsite? SelectedBuildingsite
{
get => _selectedBuildingsite;
set
{
if(_selectedBuildingsite != value)
{
_selectedBuildingsite = value;
OnPropertyChanged();
OnPropertyChanged(nameof(CanSelectBuildingsite));
}
}
}
public ICommand SelectCommand { get; set; }
public ICommand AddCommand { get; set; }
public ICommand EditCommand { get; set; }
public bool CanSelectBuildingsite => SelectedBuildingsite != null;
public BuildingsiteListViewModel(IDataService<Buildingsite> buildingSiteDataService, IActualProject actualProject, IRenavigator renavigator,IBuildingsiteService buildingsiteService)
{
_actualProject = actualProject;
_renavigator = renavigator;
_buildingSiteDataService = (BuildingsiteDataService)buildingSiteDataService;
Buildingsites = new ObservableCollection<Buildingsite>();
EditCommand = new EditBuildingsiteCommand(buildingSiteDataService,actualProject,renavigator,buildingsiteService,this);
SelectCommand = new SelectBuildingsiteCommand(actualProject, this);
AddCommand = new AddBuildingsiteCommand(buildingSiteDataService, actualProject, buildingsiteService,renavigator);
LoadBuildingsites();
}
private async void LoadBuildingsites()
{
var buildingsites = await _buildingSiteDataService.GetAllByProjekt(_actualProject.AktuellProjekt);
InitCollection(Buildingsites, buildingsites);
}
private void InitCollection(ObservableCollection<Buildingsite> target, IEnumerable<Buildingsite> source)
{
target.Clear();
foreach (var i in source)
target.Add(i);
}
}
}

View File

@@ -1,41 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.ViewModel.Interface;
using Microsoft.Toolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel
{
public class ClientEditViewModel : BaseViewModel
{
private Client _model;
private readonly IDataService<Client> _dataService;
private readonly IActualProject _actualProject;
private readonly IRenavigator renavigator;
public Client Model { get => _model; set => _model = value; }
public IRelayCommand SaveClientCommand { get; set; }
public ClientEditViewModel(IDataService<Client> dataService, IActualProject actualProject, IRenavigator renavigator)
{
this._dataService = dataService;
SaveClientCommand = new RelayCommand(SaveClient);
_actualProject = actualProject;
this.renavigator = renavigator;
this._model = _actualProject.AktuellClient;
}
private async void SaveClient()
{
await _dataService.Update(Model.Id, Model);
renavigator.Renavigate();
}
}
}

View File

@@ -1,89 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Enums;
using DaSaSo.ViewModel.Interface;
using Microsoft.Toolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel
{
public class ClientListViewModel : BaseViewModel
{
public ObservableCollection<Client> Clients { get; }
private Client? _selectedClient;
private readonly IDataService<Client> _dataService;
bool _isLoading = true;
public ICommand EditCommand { get; set; }
public ICommand AddNewClientCommand { get; set; }
public Client SelectedClient
{
get => _selectedClient;
set
{
if(_selectedClient != value)
{
_selectedClient = value;
OnPropertyChanged();
OnPropertyChanged(nameof(CanSelectClient));
}
}
}
public bool IsLoading
{
get => _isLoading;
set
{
if(_isLoading != value)
{
_isLoading = value;
OnPropertyChanged();
}
}
}
public bool CanSelectClient => _selectedClient != null;
public ClientListViewModel(IDataService<Client> dataService, IActualProject actualProject, IRenavigator editRenavigator)
{
Clients = new ObservableCollection<Client>();
_dataService = dataService;
LoadClient();
EditCommand = new EditClientCommand(_dataService,actualProject, editRenavigator, this);
AddNewClientCommand = new AddClientCommand(_dataService, actualProject, editRenavigator, this);
}
public async void LoadClient()
{
IsLoading = true;
var clients = await _dataService.GetAll();
//
InitCollection(Clients, clients);
IsLoading = false;
}
private static void InitCollection(ObservableCollection<Client> target, IEnumerable<Client> source)
{
target.Clear();
foreach (var i in source)
target.Add(i);
}
}
}

View File

@@ -1,34 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.BuildingsiteServices;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
public class AddBuildingsiteCommand: AsyncCommandBase
{
private IActualProject _actualProject;
private IBuildingsiteService _buildingsiteService;
private readonly IRenavigator _renavigator;
private readonly IDataService<Buildingsite> _dataservice;
public AddBuildingsiteCommand(IDataService<Buildingsite> dataService, IActualProject actualProject, IBuildingsiteService buildingsiteService, IRenavigator renavigator)
{
_actualProject = actualProject;
_buildingsiteService = buildingsiteService;
_dataservice = dataService;
_renavigator = renavigator;
}
public override async Task ExecuteAsync(object? parameter)
{
Buildingsite buildingsite = await _buildingsiteService.CreateBuildingsite(_actualProject.AktuellProjekt);
_actualProject.SetBuildingSite(buildingsite);
_renavigator.Renavigate();
}
}
}

View File

@@ -1,36 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
public class AddClientCommand : AsyncCommandBase
{
private readonly IDataService<Client> dataservice;
private readonly IActualProject actualProject;
private readonly IRenavigator renavigator;
private readonly ClientListViewModel clientListViewModel;
public AddClientCommand(IDataService<Client> dataservice, IActualProject actualProject, IRenavigator renavigator, ClientListViewModel clientListViewModel)
{
this.dataservice = dataservice;
this.actualProject = actualProject;
this.renavigator = renavigator;
this.clientListViewModel = clientListViewModel;
}
public override async Task ExecuteAsync(object? parameter)
{
Client newClient = await dataservice.Create(new Client());
actualProject.SetClient(newClient,false);
//actualProject.SetClient(clientListViewModel.SelectedClient);
renavigator.Renavigate();
}
}
}

View File

@@ -1,40 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
class AddDamageCommand : AsyncCommandBase
{
private readonly IActualProject actualProject;
private readonly IRenavigator addedNavigator;
public AddDamageCommand(IActualProject actualProject, IRenavigator addedNavigator)
{
this.actualProject = actualProject;
this.addedNavigator = addedNavigator;
}
public override async Task ExecuteAsync(object? parameter)
{
SewerDamage newSewerDamage = new SewerDamage();
//newSewerDamage.SewerObject = actualProject.AktuellSewerObject; // Führt zur Exception, dass EF versucht doppelte einträge vorzunehmen
actualProject.AktuellSewerObject.SewerDamages.Add(newSewerDamage);
SewerDamage? lastInsertedDamage = actualProject.AktuellSewerObject.SewerDamages.Last();
lastInsertedDamage.SewerObject = actualProject.AktuellSewerObject;
actualProject.SetSewerDamage(lastInsertedDamage);
//addedNavigator.Renavigate(); // Bug führt zur generellen umnavigation...
}
}
}

View File

@@ -1,28 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
internal class AddImpregnationCommand : AsyncCommandBase
{
private IDataService<Impregnation> impregnationService;
private IRenavigator editRenavigator;
public AddImpregnationCommand(IDataService<Impregnation> impregnationService, IRenavigator editRenavigator)
{
this.impregnationService = impregnationService;
this.editRenavigator = editRenavigator;
}
public override Task ExecuteAsync(object? parameter)
{
throw new NotImplementedException();
}
}
}

View File

@@ -1,38 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.ProjectServices;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
public class AddProjectCommand : AsyncCommandBase
{
private readonly IActualProject _actualProject;
private readonly IProjectService _projectService;
private readonly IRenavigator _renavigator;
private readonly IDataService<Project> _genericDataService;
public AddProjectCommand(IDataService<Project> genericDataService, IActualProject actualProject, IProjectService projectService, IRenavigator renavigator)
{
_actualProject = actualProject;
_projectService = projectService;
_renavigator = renavigator;
_genericDataService = genericDataService;
}
public override async Task ExecuteAsync(object? parameter)
{
Project pro = await _projectService.CreateProject();
_actualProject.SetProject(pro);
_renavigator.Renavigate();
}
}
}

View File

@@ -1,29 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services.SewerObjectService;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
public class AddSewerObjectCommand : AsyncCommandBase
{
private IActualProject _actualProject;
private ISewerObjectService _sewerObjectService;
public AddSewerObjectCommand(IActualProject actualProject, ISewerObjectService sewerObjectService)
{
_actualProject = actualProject;
_sewerObjectService = sewerObjectService;
}
public override async Task ExecuteAsync(object? parameter)
{
SewerObject sewerobject = await _sewerObjectService.CreateSewerObject(_actualProject.AktuellBaustelle);
_actualProject.SetSewerObject(sewerobject);
}
}
}

View File

@@ -1,45 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel.Commands
{
public abstract class AsyncCommandBase : ICommand
{
bool _isExecuting = false;
public event EventHandler? CanExecuteChanged;
public bool IsExecuting
{
get => _isExecuting;
set
{
_isExecuting = value;
CanExecuteChanged?.Invoke(this, new EventArgs());
}
}
protected void OnCanExecuteChanged()
{
CanExecuteChanged?.Invoke(this, new EventArgs());
}
public virtual bool CanExecute(object? parameter)
{
return !IsExecuting;
}
public async void Execute(object? parameter)
{
IsExecuting = true;
await ExecuteAsync(parameter);
IsExecuting = false;
}
public abstract Task ExecuteAsync(object? parameter);
}
}

View File

@@ -1,48 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.BuildingsiteServices;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
public class EditBuildingsiteCommand : AsyncCommandBase
{
private IDataService<Buildingsite> buildingSiteDataService;
private IActualProject actualProject;
private IRenavigator renavigator;
private IBuildingsiteService buildingsiteService;
private BuildingsiteListViewModel _buildingsiteListViewModel;
public override bool CanExecute(object? parameter)
{
return _buildingsiteListViewModel.CanSelectBuildingsite;
}
public EditBuildingsiteCommand(IDataService<Buildingsite> buildingSiteDataService, IActualProject actualProject, IRenavigator renavigator, IBuildingsiteService buildingsiteService, BuildingsiteListViewModel buildingsiteListViewModel)
{
this.buildingSiteDataService = buildingSiteDataService;
this.actualProject = actualProject;
this.renavigator = renavigator;
this.buildingsiteService = buildingsiteService;
_buildingsiteListViewModel = buildingsiteListViewModel;
_buildingsiteListViewModel.PropertyChanged += BuildingsiteListViewModel_PropertyChanged;
}
private void BuildingsiteListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(_buildingsiteListViewModel.CanSelectBuildingsite))
OnCanExecuteChanged();
}
public override async Task ExecuteAsync(object? parameter)
{
actualProject.SetBuildingSite(_buildingsiteListViewModel.SelectedBuildingsite);
renavigator.Renavigate();
}
}
}

View File

@@ -1,51 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel.Commands
{
public class EditClientCommand : AsyncCommandBase
{
private readonly IDataService<Client> dataservice;
private readonly IActualProject actualProject;
private readonly IRenavigator renavigator;
private readonly ClientListViewModel _clientListViewModel;
public override bool CanExecute(object? parameter)
{
return _clientListViewModel.CanSelectClient;
}
public EditClientCommand(IDataService<Client> dataservice, IActualProject actualProject,IRenavigator renavigator, ClientListViewModel clientListViewModel)
{
this.dataservice = dataservice;
this.actualProject = actualProject;
this.renavigator = renavigator;
this._clientListViewModel = clientListViewModel;
_clientListViewModel.PropertyChanged += _clientListViewModel_PropertyChanged;
}
private void _clientListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{
if(e.PropertyName == nameof(_clientListViewModel.CanSelectClient))
{
OnCanExecuteChanged();
}
}
public override async Task ExecuteAsync(object? parameter)
{
actualProject.SetClient(_clientListViewModel.SelectedClient);
renavigator.Renavigate();
}
}
}

View File

@@ -1,49 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
internal class EditImpregnationCommand : AsyncCommandBase
{
private IDataService<Impregnation> _impregnationService;
private ImpregnierungListViewModel _impregnierungListViewModel;
private IRenavigator _editRenavigator;
private IActualProject _actualProject;
public override bool CanExecute(object? parameter)
{
return _impregnierungListViewModel.SelectedImpregnation != null;
}
public EditImpregnationCommand(
IDataService<Impregnation> impregnationService,
ImpregnierungListViewModel impregnierungListViewModel,
IActualProject actualProject,
IRenavigator editRenavigator)
{
_impregnationService = impregnationService;
_impregnierungListViewModel = impregnierungListViewModel;
_actualProject = actualProject;
_editRenavigator = editRenavigator;
_impregnierungListViewModel.PropertyChanged += _impregnierungListViewModel_PropertyChanged;
}
private void _impregnierungListViewModel_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(_impregnierungListViewModel.CanSelectImpregnation))
OnCanExecuteChanged();
}
public override async Task ExecuteAsync(object? parameter)
{
_actualProject.SetImpregnation(_impregnierungListViewModel.SelectedImpregnation);
_editRenavigator.Renavigate();
}
}
}

View File

@@ -1,48 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.ProjectServices;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
class EditProjectCommand : AsyncCommandBase
{
private IDataService<Project> _dataService;
private IActualProject _actualProject;
private IRenavigator _renavigator;
private readonly IProjectService _projectService;
private ProjectListViewModel _projectListViewModel;
public override bool CanExecute(object? parameter)
{
return _projectListViewModel.SelectedProject != null;
}
public EditProjectCommand(IDataService<Project> dataService, IActualProject actualProject, IRenavigator renavigator, IProjectService projectService, ProjectListViewModel projectListViewModel)
{
this._dataService = dataService;
this._actualProject = actualProject;
this._renavigator = renavigator;
this._projectService = projectService;
this._projectListViewModel = projectListViewModel;
_projectListViewModel.PropertyChanged += _projectListViewModel_PropertyChanged;
}
private void _projectListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(_projectListViewModel.CanSelectProject))
OnCanExecuteChanged();
}
public override async Task ExecuteAsync(object? parameter)
{
_actualProject.SetProject(_projectListViewModel.SelectedProject);
_renavigator.Renavigate();
}
}
}

View File

@@ -1,28 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
internal class SaveImpregnationCommand : AsyncCommandBase
{
private IDataService<Impregnation> _impregnationService;
private ImpregnierungEditViewModel _impregnationEditViewModel;
public SaveImpregnationCommand(ImpregnierungEditViewModel impregnierungEditViewModel, IDataService<Impregnation> dataService)
{
_impregnationService = dataService;
_impregnationEditViewModel = impregnierungEditViewModel;
}
public override async Task ExecuteAsync(object? parameter)
{
_impregnationEditViewModel.Model = await _impregnationService.Update(_impregnationEditViewModel.Model.Id, _impregnationEditViewModel.Model);
Trace.WriteLine("Daten gespeichert");
}
}
}

View File

@@ -1,51 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.SewerObjectService;
using DaSaSo.Domain.Services.SewerPointServices;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
public class SaveSewerCommand : AsyncCommandBase
{
private IDataService<SewerObject> _dataService;
private IActualProject _actualProject;
private readonly ISewerObjectService _sewerObjectService;
private readonly IRenavigator _renavigator;
private readonly ISewerMainNavigator _navigator;
public SaveSewerCommand(
IDataService<SewerObject> dataService,
IActualProject actualProject,
ISewerObjectService sewerObjectService,
IRenavigator renavigator,
ISewerMainNavigator navigator)
{
_dataService = dataService;
_actualProject = actualProject;
_sewerObjectService = sewerObjectService;
_renavigator = renavigator;
_navigator = navigator;
}
public override async Task ExecuteAsync(object? parameter)
{
Trace.WriteLine(_actualProject.AktuellSewerObject.IsChanged);
_navigator.CurrentViewModel = null;
_renavigator.Renavigate();
}
}
}

View File

@@ -1,51 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.SewerPointServices;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
class SaveSewerStammdatenCommand : AsyncCommandBase
{
private readonly SewerStammdatenViewModel _stammdatenViewModel;
private IDataService<SewerObject> _dataService;
private readonly ISewerpointService _sewerPointService;
public SaveSewerStammdatenCommand(SewerStammdatenViewModel stammdatenViewModel, IDataService<SewerObject> dataService, ISewerpointService sewerpointService)
{
_stammdatenViewModel = stammdatenViewModel;
_dataService = dataService;
_sewerPointService = sewerpointService;
}
public override async Task ExecuteAsync(object? parameter)
{
if (_stammdatenViewModel._oberepunkt != null)
{
if ((_stammdatenViewModel.Model.PunktOben == null) || (_stammdatenViewModel._oberepunkt != _stammdatenViewModel.Model.PunktOben.Objektnummer))
{
SewerPoint punktOben = await _sewerPointService.CreateOrFindSewerpoint(_stammdatenViewModel._oberepunkt);
_stammdatenViewModel.Model.PunktOben = punktOben;
}
}
if (_stammdatenViewModel._unterepunkt != null)
{
if ((_stammdatenViewModel.Model.PunktUnten == null) || (_stammdatenViewModel._unterepunkt != _stammdatenViewModel.Model.PunktUnten.Objektnummer))
{
SewerPoint punktUnten = await _sewerPointService.CreateOrFindSewerpoint(_stammdatenViewModel._unterepunkt);
_stammdatenViewModel.Model.PunktUnten = punktUnten;
}
}
_stammdatenViewModel.Model = await _dataService.Update(_stammdatenViewModel.Model.Id, _stammdatenViewModel.Model);
Trace.WriteLine("Daten gespeichert");
}
}
}

View File

@@ -1,39 +0,0 @@
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
public class SelectBuildingsiteCommand : AsyncCommandBase
{
private IActualProject _actualProject;
private BuildingsiteListViewModel _buildingsiteListViewModel;
public override bool CanExecute(object? parameter)
{
return _buildingsiteListViewModel.CanSelectBuildingsite;
}
public SelectBuildingsiteCommand(IActualProject actualProject, BuildingsiteListViewModel buildingsiteListViewModel)
{
this._actualProject = actualProject;
this._buildingsiteListViewModel = buildingsiteListViewModel;
_buildingsiteListViewModel.PropertyChanged += _buildingsiteListViewModel_PropertyChanged;
}
private void _buildingsiteListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(_buildingsiteListViewModel.CanSelectBuildingsite))
OnCanExecuteChanged();
}
public override async Task ExecuteAsync(object? parameter)
{
var s = _buildingsiteListViewModel.SelectedBuildingsite;
_actualProject.SetBuildingSite(s);
}
}
}

View File

@@ -1,53 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel.Commands
{
public class SelectClientCommand : AsyncCommandBase
{
private readonly IActualProject _actualProject;
private readonly ClientListViewModel _clientListViewModel;
private readonly IDataService<Client> _dataservice;
public override bool CanExecute(object? parameter)
{
return _clientListViewModel.CanSelectClient;
}
public SelectClientCommand(
IDataService<Client> dataService,
IActualProject actualProject,
ClientListViewModel clientListViewModel)
{
_actualProject = actualProject;
_clientListViewModel = clientListViewModel;
_clientListViewModel.PropertyChanged += ClientListViewModel_PropertyChanged;
_dataservice = dataService;
}
private void ClientListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{
if(e.PropertyName == nameof(_clientListViewModel.CanSelectClient))
{
OnCanExecuteChanged();
}
}
public override async Task ExecuteAsync(object? parameter)
{
Client? _selectedClient = _clientListViewModel.SelectedClient;
if (_selectedClient == null) return;
_selectedClient = await _dataservice.Get(_selectedClient.Id);
_actualProject.SetClient(_selectedClient);
}
}
}

View File

@@ -1,24 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
class SelectDamageCommand : AsyncCommandBase
{
private readonly SewerMainListViewModel _sewerMainListViewModel;
public SelectDamageCommand(SewerMainListViewModel sewerMainListViewModel)
{
_sewerMainListViewModel = sewerMainListViewModel;
}
public override Task ExecuteAsync(object? parameter)
{
var d = _sewerMainListViewModel;
throw new NotImplementedException();
}
}
}

View File

@@ -1,39 +0,0 @@
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
public class SelectProjectCommand : AsyncCommandBase
{
private readonly IActualProject _actualProject;
private readonly ProjectListViewModel _projectListViewModel;
public override bool CanExecute(object? parameter)
{
return _projectListViewModel.SelectedProject != null;
}
public SelectProjectCommand(IActualProject actualProject, ProjectListViewModel projectListViewModel)
{
_actualProject = actualProject;
_projectListViewModel = projectListViewModel;
_projectListViewModel.PropertyChanged += _projectListViewModel_PropertyChanged;
}
private void _projectListViewModel_PropertyChanged(object? sender, PropertyChangedEventArgs e)
{
if (e.PropertyName == nameof(_projectListViewModel.CanSelectProject))
OnCanExecuteChanged();
}
public override async Task ExecuteAsync(object? parameter)
{
var s = _projectListViewModel.SelectedProject;
_actualProject.SetProject(s);
}
}
}

View File

@@ -1,29 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
public class SelectSewerObjectCommand : AsyncCommandBase
{
private readonly IActualProject _actualProject;
private readonly SewerObjectListViewModel _sewerObjectListViewModel;
public SelectSewerObjectCommand(IActualProject actualProject, SewerObjectListViewModel sewerObjectListViewModel)
{
_actualProject = actualProject;
_sewerObjectListViewModel = sewerObjectListViewModel;
}
public override async Task ExecuteAsync(object? parameter)
{
SewerObject? selectedSewer = _sewerObjectListViewModel.GetSelectedSewer();
if (selectedSewer == null) return;
_actualProject.SetSewerObject(selectedSewer);
}
}
}

View File

@@ -1,32 +0,0 @@
using DaSaSo.Domain.Enums;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Commands
{
class UpdateCurrentSewerViewModelCommand : AsyncCommandBase
{
private INavigator _navigator;
private readonly IViewModelSewerMainFactory _viewModelFactory;
public UpdateCurrentSewerViewModelCommand(INavigator navigator, IViewModelSewerMainFactory viewModelFactory)
{
_navigator = navigator;
_viewModelFactory = viewModelFactory;
}
public override async Task ExecuteAsync(object? parameter)
{
if (parameter is ESewerWindowViewType)
{
ESewerWindowViewType viewType = (ESewerWindowViewType)parameter;
_navigator.CurrentViewModel = _viewModelFactory.CreateViewModel(viewType);
//throw new NotImplementedException(parameter.GetType().ToString());
}
}
}
}

View File

@@ -1,32 +0,0 @@
using DaSaSo.Domain.Enums;
using DaSaSo.ViewModel.Enums;
using DaSaSo.ViewModel.Interface;
using System;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel.Commands
{
class UpdateCurrentViewModelCommand : AsyncCommandBase
{
private INavigator _navigator;
private readonly IViewModelAbstractFactory _viewModelFactory;
public UpdateCurrentViewModelCommand(INavigator navigator, IViewModelAbstractFactory viewModelFactory)
{
_navigator = navigator;
_viewModelFactory = viewModelFactory;
}
public override async Task ExecuteAsync(object? parameter)
{
if(parameter is EMainWindowViewType)
{
EMainWindowViewType viewType = (EMainWindowViewType)parameter;
_navigator.CurrentViewModel = _viewModelFactory.CreateViewModel(viewType);
}
}
}
}

View File

@@ -1,50 +0,0 @@
using DaSaSo.Domain.Model;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Controls
{
public class SewerDamageControllViewModel : BaseViewModel
{
public bool Riss { get; set; }
public bool Bruch { get; set; }
public bool Scherbe { get; set; }
public bool Wurzel { get; set; }
public bool Inkrustation { get; set; }
public bool Ablagerungen { get; set; }
public bool EinrageneStutzen { get; set; }
public bool Infiltration { get; set; }
public SewerDamageControllViewModel(EDamageType damageType)
{
Riss = damageType.HasFlag(EDamageType.Riss);
Bruch = damageType.HasFlag(EDamageType.Bruch);
Scherbe = damageType.HasFlag(EDamageType.Scherbe);
Wurzel = damageType.HasFlag(EDamageType.Wurzel);
Inkrustation = damageType.HasFlag(EDamageType.Inkrustation);
Ablagerungen = damageType.HasFlag(EDamageType.Ablagerung);
EinrageneStutzen = damageType.HasFlag(EDamageType.EinrageneStutzen);
Infiltration = damageType.HasFlag(EDamageType.Infiltration);
}
public EDamageType CalculateDamageFlags()
{
EDamageType result = EDamageType.NONE;
if (Riss) result |= EDamageType.Riss;
if (Bruch) result |= EDamageType.Bruch;
if (Scherbe) result |= EDamageType.Scherbe;
if (Wurzel) result |= EDamageType.Wurzel;
if (Inkrustation) result |= EDamageType.Inkrustation;
if (Ablagerungen) result |= EDamageType.Ablagerung;
if (EinrageneStutzen) result |= EDamageType.EinrageneStutzen;
if (Infiltration) result |= EDamageType.Infiltration;
return result;
}
}
}

View File

@@ -1,45 +0,0 @@
using DaSaSo.Domain.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Controls
{
public class SewerPreperationControllViewModel : BaseViewModel
{
public bool HD { get; set; }
public bool Mechanisch { get; set; }
public bool Roboter { get; set; }
public bool Faekalienfrei { get; set; }
public bool Genehmigung { get; set; }
public bool WaterBaried { get; set; }
public bool STVO { get; set; }
public SewerPreperationControllViewModel(EPreparationType preparationType)
{
HD = preparationType.HasFlag(EPreparationType.CleanedHD);
Mechanisch = preparationType.HasFlag(EPreparationType.CleanedMechanisch);
Roboter = preparationType.HasFlag(EPreparationType.CleanedRoboter);
Faekalienfrei = preparationType.HasFlag(EPreparationType.FaekalienFrei);
Genehmigung = preparationType.HasFlag(EPreparationType.PermitNeeded);
WaterBaried = preparationType.HasFlag(EPreparationType.WaterBaried);
STVO = preparationType.HasFlag(EPreparationType.STVO);
}
public EPreparationType CalculatePreparationFlags()
{
EPreparationType result = EPreparationType.NONE;
if (HD) result |= EPreparationType.CleanedHD;
if (Mechanisch) result |= EPreparationType.CleanedMechanisch;
if (Roboter) result |= EPreparationType.CleanedRoboter;
if (Faekalienfrei) result |= EPreparationType.FaekalienFrei;
if (Genehmigung) result |= EPreparationType.PermitNeeded;
if (WaterBaried) result |= EPreparationType.WaterBaried;
if (STVO) result |= EPreparationType.STVO;
return result;
}
}
}

View File

@@ -1,92 +0,0 @@
using DaSaSo.Domain.Model;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Controls
{
public class SewerRhebalationControllViewModel : BaseViewModel
{
public string Bediener
{
get => model.Operator;
set
{
if(model.Operator != value)
{
model.Operator = value;
OnPropertyChanged();
}
}
}
public decimal TemperaturAussen
{
get => model.TemperatureOutdoors;
set
{
if(model.TemperatureOutdoors != value)
{
model.TemperatureOutdoors = value;
OnPropertyChanged();
}
}
}
public decimal TemperaturSewer
{
get => model.TemperatureSewer;
set
{
if(model.TemperatureSewer != value)
{
model.TemperatureSewer = value;
OnPropertyChanged();
}
}
}
public string Weather
{
get => model.Weather;
set
{
if(model.Weather != value)
{
model.Weather = value;
OnPropertyChanged();
}
}
}
private DateTime _date;
public DateTime Datum
{
get => _date;
set
{
if(_date != value)
{
_date = value;
model.Date = DateOnly.FromDateTime(_date);
OnPropertyChanged();
}
}
}
public SewerPreperationControllViewModel SewerPreperationControllViewModel { get; set; }
private PipeLiner model;
public SewerRhebalationControllViewModel(PipeLiner model)
{
this.model = model;
SewerPreperationControllViewModel = new SewerPreperationControllViewModel(model.PreparationType);
_date = model.Date.ToDateTime(new TimeOnly(0));
}
public override void Dispose()
{
model.PreparationType = SewerPreperationControllViewModel.CalculatePreparationFlags();
base.Dispose();
}
}
}

View File

@@ -5,19 +5,8 @@
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<None Remove="version.txt" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="version.txt">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Toolkit.Mvvm" Version="7.1.2" />
<PackageReference Include="PresentationFramework" Version="4.6.0" />
<PackageReference Include="System.Drawing.Common" Version="6.0.0" />
</ItemGroup>

View File

@@ -1,20 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Enums
{
enum EMediator
{
SHOWCLIENT,
SELECTEDCLIENT,
EDITCLIENT,
SHOWPROJEKT,
SELECTEDPROJEKT,
EDITPROJEKT
}
}

View File

@@ -1,68 +0,0 @@
using DaSaSo.Domain.Enums;
using DaSaSo.ViewModel.Interface;
using System;
namespace DaSaSo.ViewModel.Factories
{
public class MainWindowViewModelFactory : IViewModelAbstractFactory
{
private CreateViewModel<HomeViewModel> _createHomeViewModel;
private CreateViewModel<ClientListViewModel> _createClientListViewModel;
private CreateViewModel<ClientEditViewModel> _createClientEditViewModel;
private CreateViewModel<ProjectListViewModel> _createProjektListViewModel;
private CreateViewModel<BuildingsiteListViewModel> _createBuildingsiteListViewModel;
private CreateViewModel<SewerObjectListViewModel> _createSewerObjectListViewModel;
private CreateViewModel<SewerMainListViewModel> _createSewerMainMenuListViewModel;
private CreateViewModel<ImpregnierungListViewModel> _createImpregnierungListViewModel;
public MainWindowViewModelFactory(
CreateViewModel<HomeViewModel> createHomeViewModel,
CreateViewModel<ClientListViewModel> createClientListViewModel,
CreateViewModel<ClientEditViewModel> createClientEditViewModel,
CreateViewModel<ProjectListViewModel> createProjektListViewModel,
CreateViewModel<BuildingsiteListViewModel> createBuildingsiteListViewModel,
CreateViewModel<SewerObjectListViewModel> createSewerObjectListViewModel,
CreateViewModel<SewerMainListViewModel> createSewerMainMenuListViewModel,
CreateViewModel<ImpregnierungListViewModel> createImpregnierungListViewModel
)
{
_createHomeViewModel = createHomeViewModel;
_createClientListViewModel = createClientListViewModel;
_createClientEditViewModel = createClientEditViewModel;
_createProjektListViewModel = createProjektListViewModel;
_createBuildingsiteListViewModel = createBuildingsiteListViewModel;
_createSewerObjectListViewModel = createSewerObjectListViewModel;
_createSewerMainMenuListViewModel = createSewerMainMenuListViewModel;
_createImpregnierungListViewModel = createImpregnierungListViewModel;
}
public BaseViewModel CreateViewModel(EMainWindowViewType viewType)
{
switch (viewType)
{
case EMainWindowViewType.Home:
return _createHomeViewModel();
case EMainWindowViewType.Clients:
return _createClientListViewModel();
case EMainWindowViewType.ClientEdit:
return _createClientEditViewModel();
case EMainWindowViewType.Projects:
return _createProjektListViewModel();
case EMainWindowViewType.Buildingsites:
return _createBuildingsiteListViewModel();
case EMainWindowViewType.SewerObjects:
return _createSewerObjectListViewModel();
case EMainWindowViewType.SewerMainMenu:
return _createSewerMainMenuListViewModel();
case EMainWindowViewType.Impregnierung:
return _createImpregnierungListViewModel();
default:
throw new ArgumentException("The Viewtype does not have a ViewModel.", "viewType");
}
}
}
}

View File

@@ -1,48 +0,0 @@
using DaSaSo.Domain.Enums;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Factories
{
public class SewerWindowViewModelFactory : IViewModelSewerMainFactory
{
private CreateViewModel<SewerStammdatenViewModel> _createSewerStammdatenViewModel;
private CreateViewModel<SewerDamageListViewModel> _createSewerDamageListViewModel;
private CreateViewModel<SewerDamageEditViewModel> _createSewerDamageEditViewModel;
private CreateViewModel<SewerPipeLinerViewModel> _createSewerPipeLinerViewModel;
private CreateViewModel<SewerPictureDocumentationViewModel> _createSewerPictureDocumentationViewModel;
public SewerWindowViewModelFactory(
CreateViewModel<SewerStammdatenViewModel> createSewerStammdatenViewModel,
CreateViewModel<SewerDamageListViewModel> createSewerDamageListViewModel,
CreateViewModel<SewerDamageEditViewModel> createSewerDamageEditViewModel,
CreateViewModel<SewerPipeLinerViewModel> createSewerPipeLinerViewModel,
CreateViewModel<SewerPictureDocumentationViewModel> createSewerPictureDocumentationViewModel
)
{
_createSewerStammdatenViewModel = createSewerStammdatenViewModel;
_createSewerDamageListViewModel = createSewerDamageListViewModel;
_createSewerDamageEditViewModel = createSewerDamageEditViewModel;
_createSewerPipeLinerViewModel = createSewerPipeLinerViewModel;
_createSewerPictureDocumentationViewModel = createSewerPictureDocumentationViewModel;
}
public BaseViewModel CreateViewModel(ESewerWindowViewType viewType)
{
switch (viewType)
{
case ESewerWindowViewType.SewerStammdaten: return _createSewerStammdatenViewModel();
case ESewerWindowViewType.SewerDamageList: return _createSewerDamageListViewModel();
case ESewerWindowViewType.SewerDamageEdit: return _createSewerDamageEditViewModel();
case ESewerWindowViewType.SewerPipeLiner: return _createSewerPipeLinerViewModel();
case ESewerWindowViewType.SewerPictureDocumentation: return _createSewerPictureDocumentationViewModel();
default:
throw new ArgumentException("The Viewtype does not have a ViewModel", "viewType");
}
}
}
}

View File

@@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel
{
public class HomeViewModel : BaseViewModel
{
public string Welcome { get => "Herzlich willkommen"; }
}
}

View File

@@ -1,67 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel
{
public class ImpregnierungEditViewModel : BaseViewModel
{
private Impregnation _model;
public ICommand SaveImpregnation { get; set; }
public Impregnation Model { get => _model; set => _model = value; }
public int DN
{
get => _model.DN;
set
{
_model.DN = value;
}
}
public string LinerCharge
{
get => _model.LinerNumber;
set
{
_model.LinerNumber = value;
}
}
public decimal Wandstärke
{
get => _model.WallThickness;
set
{
_model.WallThickness = value;
}
}
public decimal LinerLänge
{
get => _model.Linerlength;
set
{
_model.Linerlength = value;
}
}
public string Imprägniernummer
{
get => _model.Number;
set
{
_model.Number = value;
}
}
public ImpregnierungEditViewModel(IActualProject actualProject, IDataService<Impregnation> dataservice)
{
_model = actualProject.AktuellImpregnation;
SaveImpregnation = new SaveImpregnationCommand(this,dataservice);
}
}
}

View File

@@ -1,87 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Interface;
using Microsoft.Toolkit.Mvvm.Input;
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 DaSaSo.ViewModel
{
public class ImpregnierungListViewModel : BaseViewModel
{
public ObservableCollection<Impregnation> Impregnations { get; }
private readonly IDataService<Impregnation> _impregnationService;
private Impregnation? _selectedImpregnation = null;
public Impregnation? SelectedImpregnation
{
get => _selectedImpregnation;
set
{
if(_selectedImpregnation != value)
{
_selectedImpregnation = value;
OnPropertyChanged();
OnPropertyChanged(nameof(CanSelectImpregnation));
}
}
}
public bool CanSelectImpregnation => SelectedImpregnation != null;
public ICommand EditImpregnationCommand { get; set; }
public ICommand AddImpregnationCommand { get; set; }
bool _isLoading;
public bool IsLoading {
get => _isLoading;
set
{
if(_isLoading != value)
{
_isLoading = value;
OnPropertyChanged();
}
}
}
public ImpregnierungListViewModel(IDataService<Impregnation> impregnationService,IActualProject actualProject, IRenavigator editRenavigator)
{
IsLoading = true;
Impregnations = new ObservableCollection<Impregnation>();
_impregnationService = impregnationService;
AddImpregnationCommand = new RelayCommand(() =>
{
Impregnation newImpregnation = new Impregnation()
{
Number = "Neu bitte Editieren!"
};
SelectedImpregnation = newImpregnation;
Impregnations.Add(newImpregnation);
OnPropertyChanged("Impregnations");
});
//AddImpregnationCommand = //new AddImpregnationCommand(_impregnationService, editRenavigator);
EditImpregnationCommand = new EditImpregnationCommand(_impregnationService, this,actualProject, editRenavigator);
LoadImpregnations();
}
private async void LoadImpregnations()
{
var impregList = await _impregnationService.GetAll();
InitCollection(Impregnations, impregList);
IsLoading = false;
}
private void InitCollection(ObservableCollection<Impregnation> target, IEnumerable<Impregnation> source)
{
target.Clear();
foreach (var i in source)
target.Add(i);
}
}
}

View File

@@ -1,33 +0,0 @@
using DaSaSo.Domain.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Interface
{
public interface IActualProject
{
event EventHandler? ClientChanged;
event EventHandler? ProjectChanged;
event EventHandler? BuildingSiteChanged;
event EventHandler? SewerObjectChanged;
event EventHandler? SewerDamageChanged;
Client AktuellClient { get; }
Project AktuellProjekt { get; }
Buildingsite AktuellBaustelle { get; }
SewerObject AktuellSewerObject { get; }
SewerDamage AktuellSewerDamage { get; }
Impregnation AktuellImpregnation { get; }
void SetClient(Client client, bool notification = true);
void SetProject(Project project, bool notification = true);
void SetBuildingSite(Buildingsite buildingsite);
void SetSewerObject(SewerObject sewerObject, bool notification = true);
void SetSewerDamage(SewerDamage sewerDamage, bool notification = true);
void SetImpregnation(Impregnation impregnation, bool notification = true);
void ResetProject();
void ResetBuildingSite();
}
}

View File

@@ -1,12 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Interface
{
public interface IMainWindowNavigator : INavigator
{
}
}

View File

@@ -1,15 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel.Interface
{
public interface INavigator
{
BaseViewModel CurrentViewModel { get; set; }
event Action StateChanged;
}
}

View File

@@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Interface
{
public interface IRenavigator
{
void Renavigate();
}
}

View File

@@ -1,12 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Interface
{
public interface ISewerMainNavigator : INavigator
{
}
}

View File

@@ -1,9 +0,0 @@
using DaSaSo.Domain.Enums;
namespace DaSaSo.ViewModel.Interface
{
public interface IViewModelAbstractFactory
{
BaseViewModel CreateViewModel(EMainWindowViewType viewType);
}
}

View File

@@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Interface
{
public interface IViewModelFactory<T> where T: BaseViewModel
{
T CreateViewModel();
}
}

View File

@@ -1,14 +0,0 @@
using DaSaSo.Domain.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Interface
{
public interface IViewModelSewerMainFactory
{
BaseViewModel CreateViewModel(ESewerWindowViewType viewType);
}
}

View File

@@ -1,13 +0,0 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.Interface
{
public interface IWindowService
{
void ShowWindow<T>(object DataContext);
}
}

View File

@@ -1,48 +0,0 @@
using DaSaSo.ViewModel.Enums;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel
{
class Mediator
{
private static IDictionary<EMediator, List<Action<object>>> pl_dict = new Dictionary<EMediator, List<Action<object>>>();
public static void Subscribe(EMediator token, Action<object> callback)
{
if (!pl_dict.ContainsKey(token))
{
var list = new List<Action<object>>();
list.Add(callback);
pl_dict.Add(token, list);
}
else
{
bool found = false;
foreach (var item in pl_dict[token])
{
if (item.Method.ToString() == callback.Method.ToString())
found = true;
}
if (!found)
pl_dict[token].Add(callback);
}
}
public static void Unsubscribe(EMediator token, Action<object> callback)
{
if (pl_dict.ContainsKey(token))
pl_dict[token].Remove(callback);
}
public static void Notify(EMediator token, object? args = null)
{
if (pl_dict.ContainsKey(token))
{
foreach (var callback in pl_dict[token])
callback(args);
}
}
}
}

View File

@@ -1,19 +0,0 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel
{
public class ObservableObject : INotifyPropertyChanged
{
public event PropertyChangedEventHandler? PropertyChanged;
protected virtual void OnPropertyChanged([CallerMemberName] string? propertyName = null)
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}

View File

@@ -1,68 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.ProjectServices;
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Interface;
using Microsoft.Toolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel
{
public class ProjectEditViewModel : BaseViewModel
{
private Project _model;
private readonly IDataService<Project> _dataservice;
private readonly IActualProject _actualProject;
private readonly IRenavigator _renavigator;
private readonly IProjectService _projectService;
public IRelayCommand SaveProjectCommand { get; set; }
public string ProjektName
{
get => _model.Name;
set
{
if (_model.Name != value)
{
_model.Name = value;
OnPropertyChanged();
}
}
}
public string ProjektNummer
{
get => _model.Projektnummer;
set
{
if(_model.Projektnummer != value)
{
_model.Projektnummer = value;
OnPropertyChanged();
}
}
}
public ProjectEditViewModel(IDataService<Project> dataservice, IActualProject actualProject,IRenavigator renavigator, IProjectService projectService)
{
_dataservice = dataservice;
_actualProject = actualProject;
_renavigator = renavigator;
_projectService = projectService;
_model = actualProject.AktuellProjekt;
SaveProjectCommand = new RelayCommand(SaveProject);
//SaveProjectCommand = new EditProjectCommand(_dataservice, _actualProject, _renavigator, this);
}
private void SaveProject()
{
_dataservice.Update(_model.Id, _model);
_renavigator.Renavigate();
}
}
}

View File

@@ -1,72 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.ProjectServices;
using DaSaSo.EntityFramework.Services;
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel
{
public class ProjectListViewModel : BaseViewModel
{
private ProjectDataService genericDataService;
private IActualProject actualProject;
private IRenavigator renavigator;
public ObservableCollection<Project> Projekte { get; }
private Project? _selectedProject;
public Project SelectedProject
{
get => _selectedProject;
set
{
if(_selectedProject != value)
{
_selectedProject = value;
OnPropertyChanged();
OnPropertyChanged(nameof(CanSelectProject));
}
}
}
public ICommand SelectCommand { get; set; }
public ICommand AddCommand { get; set; }
public ICommand EditCommand { get; set; }
public bool CanSelectProject => SelectedProject != null;
public ProjectListViewModel(IDataService<Project> genericDataService, IActualProject actualProject, IRenavigator renavigator, IProjectService projectService)
{
Projekte = new ObservableCollection<Project>();
if (genericDataService == null) throw new ArgumentNullException("genericDataService");
this.genericDataService = (genericDataService as ProjectDataService);
this.actualProject = actualProject;
this.renavigator = renavigator;
SelectCommand = new SelectProjectCommand(actualProject, this);
AddCommand = new AddProjectCommand(genericDataService,actualProject, projectService,renavigator);
EditCommand = new EditProjectCommand(genericDataService, actualProject, renavigator,projectService, this);
LoadProjecte();
}
public async void LoadProjecte()
{
var projects = await genericDataService.GetAll();
InitCollection(Projekte, projects);
}
private void InitCollection(ObservableCollection<Project> target, IEnumerable<Project> source)
{
target.Clear();
foreach (var i in source)
target.Add(i);
}
}
}

View File

@@ -1,90 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.ViewModel.Controls;
using DaSaSo.ViewModel.Interface;
using Microsoft.Toolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel
{
public class SewerDamageEditViewModel : BaseViewModel
{
private SewerDamage? _damage;
public SewerDamageControllViewModel damageControllViewModel { get; set; }
//public SewerPreperationControllViewModel preperationControllViewModel { get; set; }
public IRelayCommand Berechne { get; set; }
private string? _entfernung;
public string Entfernung
{
get => _entfernung;
set
{
_entfernung = value;
_damage.SewerObject.IsChanged = true;
OnPropertyChanged();
}
}
public SewerDamage? Damage
{
get => _damage;
set
{
_damage = value;
OnPropertyChanged();
}
}
public SewerDamageEditViewModel(IActualProject actualProject)
{
if (actualProject.AktuellSewerDamage == null) throw new NullReferenceException(nameof(actualProject.AktuellSewerDamage));
Damage = actualProject.AktuellSewerDamage;
damageControllViewModel = new SewerDamageControllViewModel(Damage.DamageType);
//preperationControllViewModel = new SewerPreperationControllViewModel(Damage.PreparationType);
Entfernung = Damage.Distance.ToString();
/*Berechne = new RelayCommand(() =>
{
//Debugger.Break();
Damage.DamageType = damageControllViewModel.CalculateDamageFlags();
Damage.PreparationType = preperationControllViewModel.CalculatePreparationFlags();
});
*/
}
~SewerDamageEditViewModel()
{
//Debugger.Break();
}
public override void Dispose()
{
// Alle Werte Speichern, form wurde geändert (Noch nicht in DB!)
EDamageType newDamage = damageControllViewModel.CalculateDamageFlags();
//EPreparationType newPrepartion = preperationControllViewModel.CalculatePreparationFlags();
if(Damage.DamageType != newDamage)
{
Damage.DamageType = newDamage;
Damage.SewerObject.IsChanged = true;
}
/* if(Damage.PreparationType != newPrepartion)
{
Damage.PreparationType = newPrepartion;
Damage.SewerObject.IsChanged = true;
}
*/
damageControllViewModel.Dispose();
//preperationControllViewModel.Dispose();
base.Dispose();
}
}
}

View File

@@ -1,44 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel
{
public class SewerDamageListViewModel : BaseViewModel
{
private readonly IActualProject _actualProject;
private readonly IDataService<SewerObject> _dataService;
private SewerDamage? _selectedDamage;
public ICommand AddNewDamage { get; set; }
public SewerDamage SelectedDamage
{
get => _selectedDamage;
set
{
_selectedDamage = value;
_actualProject.SetSewerDamage(_selectedDamage);
OnPropertyChanged();
}
}
SewerObject _model;
public List<SewerDamage> Damages { get => _model.SewerDamages.ToList(); }
public SewerDamageListViewModel(IActualProject actualProject, IDataService<SewerObject> dataService, IRenavigator addedNavigator)
{
_actualProject = actualProject;
_dataService = dataService;
_model = _actualProject.AktuellSewerObject;
AddNewDamage = new AddDamageCommand(actualProject,addedNavigator);
}
}
}

View File

@@ -1,106 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.SewerObjectService;
using DaSaSo.Domain.Services.SewerPointServices;
using DaSaSo.EntityFramework.Services;
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Interface;
using Microsoft.Toolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel
{
public class SewerMainListViewModel : BaseViewModel
{
private ISewerMainNavigator Navigator { get; set; }
private readonly SewerObjectDataService _dataservice;
private readonly ISewerObjectService _sewerObjectService;
private readonly IRenavigator _renavigator;
private IActualProject ActualProject { get; set; }
public ICommand UpdateCurrentSewerViewModelCommand { get; }
public ICommand CloseCommand { get; set; }
// public ICommand SchadenCommand { get; set; }
public ICommand Schlauchliner { get; set; }
public BaseViewModel CurrentSewerViewModel => Navigator.CurrentViewModel;
public bool CanSelectDamage => Schaden != null;
public bool IsLoading
{
get => _isLoading;
set
{
if (_isLoading != value)
{
_isLoading = value;
OnPropertyChanged();
}
}
}
private SewerDamage _schaden;
public SewerDamage Schaden
{
get => _schaden;
set
{
_schaden = value;
OnPropertyChanged();
OnPropertyChanged(nameof(CanSelectDamage));
}
}
public string Strasse { get => ActualProject.AktuellSewerObject.StreetName; }
public string AktualObject { get => ActualProject.AktuellSewerObject.ObjektName; }
bool _isLoading = true;
public bool CanSaveSewer => !string.IsNullOrEmpty(ActualProject.AktuellSewerObject.StreetName);
public SewerMainListViewModel(
IDataService<SewerObject> dataService,
ISewerMainNavigator navigator,
IActualProject actualProject,
IViewModelSewerMainFactory viewModelFactory,
IRenavigator renavigator,
ISewerObjectService sewerObjectService,
ISewerpointService sewerpointService
)
{
Navigator = navigator;
ActualProject = actualProject;
_dataservice = (SewerObjectDataService)dataService;
_renavigator = renavigator;
_sewerObjectService = sewerObjectService;
CloseCommand = new SaveSewerCommand(_dataservice,ActualProject,_sewerObjectService,_renavigator,Navigator); //RelayCommand(SaveSewer);
LoadModel();
UpdateCurrentSewerViewModelCommand = new UpdateCurrentSewerViewModelCommand(Navigator, viewModelFactory);
Navigator.StateChanged += () => OnPropertyChanged(nameof(CurrentSewerViewModel));
ActualProject.SewerDamageChanged += ActualProject_SewerDamageChanged;
//SchadenCommand = UpdateCurrentSewerViewModelCommand.Execute(); // new SelectDamageCommand(this);
}
private void ActualProject_SewerDamageChanged(object? sender, EventArgs e)
{
Schaden = ActualProject.AktuellSewerDamage;
OnPropertyChanged(nameof(Schaden));
}
private async void LoadModel()
{
IsLoading = true;
SewerObject sewer = await _dataservice.Get(ActualProject.AktuellSewerObject.Id);
ActualProject.SetSewerObject(sewer,false);
IsLoading = false;
}
public override void Dispose()
{
Navigator.StateChanged -= () => OnPropertyChanged(nameof(CurrentSewerViewModel));
base.Dispose();
}
}
}

View File

@@ -1,92 +0,0 @@
using DaSaSo.Domain.DesignModel;
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.SewerObjectService;
using DaSaSo.EntityFramework.Services;
using DaSaSo.InMemoryProvider;
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Interface;
using Microsoft.Toolkit.Mvvm.Input;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel
{
public class SewerObjectListViewModel : BaseViewModel
{
private readonly SewerObjectDataService _sewerObjectDataService;
private readonly IActualProject _actualProject;
private readonly ISewerObjectService _sewerObjectService;
public ObservableCollection<SewerObjectsToStreet> SewerObjects { get; }
public object Testme { get; set; }
public ICommand EditCommand { get; set; }
public ICommand AddCommand { get; set; }
public SewerObjectListViewModel(IDataService<SewerObject> sewerObjectDataService, IActualProject actualProject, ISewerObjectService sewerObjectService)
{
SewerObjects = new ObservableCollection<SewerObjectsToStreet>();
this._sewerObjectDataService = (sewerObjectDataService as SewerObjectDataService);
_sewerObjectService = sewerObjectService;
this._actualProject = actualProject;
LoadSewerObjects();
EditCommand = new SelectSewerObjectCommand(actualProject, this);
AddCommand = new AddSewerObjectCommand(actualProject, sewerObjectService);
}
public SewerObject? GetSelectedSewer()
{
SewerObject? result = null;
foreach(SewerObjectsToStreet? streetcollection in SewerObjects)
{
foreach(SewerObject? sewer in streetcollection.SewerObjects)
{
if (sewer.IsSelected)
{
result = sewer;
break;
}
}
if (result != null)
break;
}
return result;
}
private async void LoadSewerObjects()
{
//BUG: Streetname can be null, programm Terminate
IEnumerable<SewerObject>? sewerobjects = await _sewerObjectDataService.GetAllByBuildingsite(_actualProject.AktuellBaustelle);
List<SewerObject> _sewers = sewerobjects.ToList();
// Get all Streetnames
IEnumerable<string>? streetnames = sewerobjects.Select(x => x.StreetName).Distinct();
List<SewerObjectsToStreet> result = new List<SewerObjectsToStreet>();
foreach(string streetname in streetnames)
{
SewerObjectsToStreet res = new SewerObjectsToStreet();
res.Streetname = streetname;
// Get all Objects that called in street
res.SewerObjects = _sewers.FindAll(x => x.StreetName.Equals(streetname));
result.Add(res);
}
InitCollection(SewerObjects, result);
}
private void InitCollection(ObservableCollection<SewerObjectsToStreet> target, List<SewerObjectsToStreet> source)
{
target.Clear();
foreach (var i in source)
target.Add(i);
}
}
}

View File

@@ -1,33 +0,0 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel
{
public static class BitmapConversion
{
//BitmapSource
}
public class SewerPictureDocumentationViewModel : BaseViewModel
{
public ObservableCollection<TabItem> Tabs { get; set; }
public SewerPictureDocumentationViewModel()
{
Tabs = new ObservableCollection<TabItem>();
Tabs.Add(new TabItem { Header = "One", Content = "One's content" });
Tabs.Add(new TabItem { Header = "Two", Content = "Two content" });
}
}
public sealed class TabItem
{
public string Header { get; set; }
public string Content { get; set; }
}
}

View File

@@ -1,124 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.ViewModel.Controls;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel
{
public class SewerPipeLinerViewModel : BaseViewModel
{
private SewerRhebalationControllViewModel _sewerRhebalationControllViewModel;
private PipeLiner _model;
public PipeLiner Model
{
get => _model;
set => _model = value;
}
public string Operator
{
get => Model.Operator;
set
{
if(Model.Operator != value)
{
Model.Operator = value;
OnPropertyChanged();
}
}
}
public bool ClosedEnd
{
get => Model.ClosedEnd;
set
{
if(Model.ClosedEnd != value)
{
Model.ClosedEnd = value;
OnPropertyChanged();
}
}
}
public bool Preliner
{
get => Model.Preliner;
set
{
if(Model.Preliner != value)
{
Model.Preliner = value;
OnPropertyChanged();
}
}
}
public decimal EinbauTemperatur
{
get => Model.TemperaturAssembly;
set
{
if(Model.TemperaturAssembly != value)
{
Model.TemperaturAssembly = value;
OnPropertyChanged();
}
}
}
public decimal LagerungTemperatur
{
get => Model.TemperaturStorage;
set
{
if (Model.TemperaturStorage != value)
{
Model.TemperaturStorage = value;
OnPropertyChanged();
}
}
}
public decimal EinbauDruck
{
get => Model.InversionPressure;
set
{
if(Model.InversionPressure != value)
{
Model.InversionPressure = value;
OnPropertyChanged();
}
}
}
public SewerRhebalationControllViewModel SewerRhebalationControllViewModel
{
get => _sewerRhebalationControllViewModel;
set => _sewerRhebalationControllViewModel = value;
}
public SewerPipeLinerViewModel(IActualProject actualProject)
{
if(actualProject.AktuellSewerObject.PipeLiner == null)
{
actualProject.AktuellSewerObject.PipeLiner = new PipeLiner();
}
Model = actualProject.AktuellSewerObject.PipeLiner;
SewerRhebalationControllViewModel = new SewerRhebalationControllViewModel(Model);
}
public override void Dispose()
{
// Todo Calculate SewerPreperation
//EPreparationType preparationFlags = SewerPreperationControllViewModel.CalculatePreparationFlags();
//Model.PreparationType = preparationFlags;
//SewerPreperationControllViewModel.Dispose();
//Debugger.Break();
SewerRhebalationControllViewModel.Dispose();
base.Dispose();
}
}
}

View File

@@ -1,195 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.Domain.Services.SewerPointServices;
using DaSaSo.EntityFramework.Services;
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel
{
public class SewerStammdatenViewModel : BaseViewModel
{
private readonly IActualProject _actualProject;
private readonly ISewerpointService _sewerpointService;
private SewerObject _model;
public ICommand SaveCommand { get; set; }
public string _oberepunkt { get; set; }
public string _unterepunkt { get; set; }
public string Haltungsname
{
get => Model.ObjektName;
set
{
if(Model.ObjektName != value)
{
Model.ObjektName = value;
OnPropertyChanged();
}
}
}
public string Hausnummer
{
get => Model.Hausnummer;
set
{
if(Model.Hausnummer != value)
{
Model.Hausnummer = value;
OnPropertyChanged();
}
}
}
public string Sanierungsid
{
get => Model.SanNummer;
set
{
if(Model.SanNummer != value)
{
Model.SanNummer = value;
OnPropertyChanged();
}
}
}
public string Oberepunkt
{
get
{
if (_model.PunktOben != null)
return _model.PunktOben.Objektnummer;
return _oberepunkt;
}
set
{
if(_oberepunkt != value)
{
_oberepunkt = value;
}
}
}
public string Unterepunkt
{
get
{
if (_model.PunktUnten != null)
return _model.PunktUnten.Objektnummer;
return _unterepunkt;
}
set
{
if(_unterepunkt != value)
{
_unterepunkt = value;
}
}
}
public int Durchmesser
{
get => Model.DN;
set
{
if(Model.DN != value)
{
Model.DN = value;
OnPropertyChanged();
}
}
}
public string Material
{
get => Model.Material;
set
{
if(Model.Material != value)
{
Model.Material = value;
OnPropertyChanged();
}
}
}
public decimal Leitungslength {
get => Model.SewerLength;
set
{
if(Model.SewerLength != value)
{
Model.SewerLength = value;
OnPropertyChanged();
}
}
}
public string Strasse
{
get => Model.StreetName;
set
{
if (Model.StreetName != value)
{
Model.StreetName = value;
OnPropertyChanged();
}
}
}
public string Ort
{
get
{
return Model.BuildingSite == null ? "" : Model.BuildingSite.Country;
}
set
{
if(Model.BuildingSite.Country != value)
{
Model.BuildingSite.Country = value;
OnPropertyChanged();
}
}
}
public SewerObject Model
{
get => _model;
set
{
_model = value;
OnPropertyChanged(nameof(Haltungsname));
OnPropertyChanged(nameof(Oberepunkt));
OnPropertyChanged(nameof(Unterepunkt));
OnPropertyChanged(nameof(Durchmesser));
OnPropertyChanged(nameof(Material));
OnPropertyChanged(nameof(Leitungslength));
OnPropertyChanged(nameof(Strasse));
OnPropertyChanged(nameof(Ort));
}
}
public SewerStammdatenViewModel(IActualProject actualProject, IDataService<SewerObject> dataService, ISewerpointService sewerpointService)
{
_actualProject = actualProject;
Model = _actualProject.AktuellSewerObject;
SaveCommand = new SaveSewerStammdatenCommand(this, dataService, sewerpointService);
this.PropertyChanged += SewerStammdatenViewModel_PropertyChanged;
}
private void SewerStammdatenViewModel_PropertyChanged(object? sender, System.ComponentModel.PropertyChangedEventArgs e)
{
Model.IsChanged = true;
}
~SewerStammdatenViewModel()
{
}
}
}

View File

@@ -1,102 +0,0 @@
using DaSaSo.Domain.Model;
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.State.ActualState
{
public class ActualProject : IActualProject
{
public Client? AktuellClient { get; private set; }
public Buildingsite? AktuellBaustelle { get; private set; }
public Project? AktuellProjekt { get; private set; }
public SewerObject? AktuellSewerObject { get; private set; }
public SewerDamage? AktuellSewerDamage { get; private set; }
public Impregnation? AktuellImpregnation { get; private set; }
#region events
public event EventHandler? ClientChanged;
public event EventHandler? ProjectChanged;
public event EventHandler? BuildingSiteChanged;
public event EventHandler? SewerObjectChanged;
public event EventHandler? SewerDamageChanged;
protected void OnClientChanged()
{
ClientChanged?.Invoke(this, new EventArgs());
}
protected void OnProjectChanged()
{
ProjectChanged?.Invoke(this, new EventArgs());
}
protected void OnBuildingSiteChanged()
{
BuildingSiteChanged?.Invoke(this, new EventArgs());
}
protected void OnSewerObjectChanged()
{
SewerObjectChanged?.Invoke(this, new EventArgs());
}
protected void OnSewerDamageChanged()
{
SewerDamageChanged?.Invoke(this, new EventArgs());
}
#endregion
public void SetClient(Client client, bool notification = true)
{
//ResetProject();
//ResetBuildingSite();
AktuellClient = client;
if(notification)
OnClientChanged();
}
public void SetProject(Project project, bool notification = true)
{
AktuellProjekt = project;
if(notification)
OnProjectChanged();
}
public void SetBuildingSite(Buildingsite buildingsite)
{
AktuellBaustelle = buildingsite;
OnBuildingSiteChanged();
}
public void SetSewerObject(SewerObject sewerObject,bool notification = true)
{
AktuellSewerObject = sewerObject;
if(notification)
OnSewerObjectChanged();
}
public void SetImpregnation(Impregnation impregnation, bool notification = true)
{
AktuellImpregnation = impregnation;
if (notification)
return; // TODO notification wird aktuell nicht benötigt
}
public void ResetProject()
{
SetProject(null);
ResetBuildingSite();
}
public void ResetBuildingSite()
{
SetBuildingSite(null);
}
public void SetSewerDamage(SewerDamage sewerDamage, bool notification = true)
{
AktuellSewerDamage = sewerDamage;
if (notification)
OnSewerDamageChanged();
}
}
}

View File

@@ -1,26 +0,0 @@
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Interface;
using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Windows.Input;
namespace DaSaSo.ViewModel.State.Navigation
{
public class MainWindowNavigator : ObservableObject, IMainWindowNavigator
{
private BaseViewModel _currentViewModel;
public BaseViewModel CurrentViewModel
{
get => _currentViewModel;
set
{
_currentViewModel?.Dispose();
_currentViewModel = value;
StateChanged?.Invoke();
}
}
public event Action StateChanged;
}
}

View File

@@ -1,25 +0,0 @@
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.State.Navigation
{
public class SewerMainNavigator : ISewerMainNavigator
{
private BaseViewModel _currentViewModel;
public BaseViewModel CurrentViewModel
{
get => _currentViewModel;
set
{
_currentViewModel?.Dispose();
_currentViewModel = value;
StateChanged?.Invoke();
}
}
public event Action StateChanged;
}
}

View File

@@ -1,26 +0,0 @@
using DaSaSo.ViewModel.Interface;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DaSaSo.ViewModel.State.Navigation
{
public class ViewModelDelegateRenavigator<TViewModel> : IRenavigator where TViewModel: BaseViewModel
{
private readonly IMainWindowNavigator _navigator;
private readonly CreateViewModel<TViewModel> _createViewModel;
public ViewModelDelegateRenavigator(IMainWindowNavigator navigator, CreateViewModel<TViewModel> createViewModel)
{
_navigator = navigator;
_createViewModel = createViewModel;
}
public void Renavigate()
{
_navigator.CurrentViewModel = _createViewModel();
}
}
}

View File

@@ -1,211 +0,0 @@
using DaSaSo.Domain.Enums;
using DaSaSo.Domain.Model;
using DaSaSo.Domain.Services;
using DaSaSo.EntityFramework;
using DaSaSo.EntityFramework.Services;
using DaSaSo.ViewModel.Commands;
using DaSaSo.ViewModel.Enums;
using DaSaSo.ViewModel.Interface;
using DaSaSo.ViewModel.State.Navigation;
using Microsoft.Toolkit.Mvvm.Input;
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace DaSaSo.ViewModel
{
public sealed class MainWindowViewModel : BaseViewModel
{
private readonly IViewModelAbstractFactory viewModelFactory;
public MainWindowViewModel(IViewModelAbstractFactory viewModelFactory)
{
this.viewModelFactory = viewModelFactory;
}
private readonly IActualProject _actualProject;
private readonly IDataService<Client> _clientDataService;
private readonly IDataService<Project> _projectDataService;
private readonly IDataService<Buildingsite> _buildingsiteDataService;
private string _clientname = "";
private string _projektname = "";
private string _projektnummer = "";
private string _buildingsitename = "";
private RegistryKey? registry;
const string REGISTRYKEY = "HKEY_CURRENT_USER\\Software\\Cosysda\\DaSaSo";
public bool CanSelectBuildingSite { get => _actualProject.AktuellProjekt != null; }
public bool CanSelectSewerObjects { get => _actualProject.AktuellBaustelle != null; }
public IMainWindowNavigator Navigator { get; set; }
public ICommand UpdateCurrentViewModelCommand { get; }
public BaseViewModel CurrentViewModel => Navigator.CurrentViewModel;
public string ClientName
{
get => _clientname;
set
{
if(_clientname != value)
{
_clientname = value;
OnPropertyChanged();
}
}
}
public string Projektname
{
get => _projektname;
set
{
if (_projektname != value)
{
_projektname = value;
OnPropertyChanged();
}
}
}
public string Projektnummer
{
get => _projektnummer;
set
{
if (_projektnummer != value)
{
_projektnummer = value;
OnPropertyChanged();
}
}
}
public string Buildingsitename
{
get => _buildingsitename;
set
{
if (_buildingsitename != value)
{
_buildingsitename = value;
OnPropertyChanged();
}
}
}
public static string ApplicationTitle
{
get
{
string gitVersion;
#pragma warning disable CS8600 // Converting null literal or possible null value to non-nullable type.
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("DaSaSo.ViewModel.version.txt"))
#pragma warning restore CS8600 // Converting null literal or possible null value to non-nullable type.
#pragma warning disable CS8604 // Possible null reference argument.
using (StreamReader reader = new(stream))
#pragma warning restore CS8604 // Possible null reference argument.
{
gitVersion = reader.ReadToEnd();
}
return string.Format("Cosysda Sanierung Software : {0}",gitVersion);
}
}
public MainWindowViewModel(IMainWindowNavigator navigator,IViewModelAbstractFactory viewModelFactory,
IActualProject actualProject,
IDataService<Client> clientDataService,
IDataService<Project> projectDataService,
IDataService<Buildingsite> buildingsiteDataService
)
{
this.Navigator = navigator;
this.viewModelFactory = viewModelFactory;
_clientDataService = clientDataService;
_projectDataService = projectDataService;
_buildingsiteDataService = buildingsiteDataService;
registry = Registry.CurrentUser.OpenSubKey("Software\\Cosysda\\DaSaSo");
if (registry == null) InitRegistry();
Navigator.StateChanged += Navigator_StateChanged;
UpdateCurrentViewModelCommand = new UpdateCurrentViewModelCommand(navigator, viewModelFactory);
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Home);
_actualProject = actualProject;
_actualProject.ProjectChanged += ActualProject_ProjectChanged;
_actualProject.BuildingSiteChanged += ActualProject_BuildingSiteChanged;
_actualProject.SewerObjectChanged += ActualProject_SewerObjectChanged;
LadeRegistry();
}
private async void LadeRegistry()
{
int projectid = Convert.ToInt32((string)registry.GetValue("lastproject", "-1"));
if (projectid == -1)
return;
Project lastProject = await _projectDataService.Get(projectid);
if(lastProject == null)
{
SaveInRegistry("lastproject","-1");
return;
}
_actualProject.SetProject(lastProject);
string? value = registry.GetValue("lastbuildingsite", "-1") as string;
int buildingsiteid = Convert.ToInt32(value);
if (buildingsiteid == -1)
return;
Buildingsite lastBuildingiste = await _buildingsiteDataService.Get(buildingsiteid);
if(lastBuildingiste == null)
{
SaveInRegistry("lastbuildingsite","-1");
return;
}
_actualProject.SetBuildingSite(lastBuildingiste);
}
private static void SaveInRegistry(string key, string value)
{
Registry.SetValue(REGISTRYKEY, key, value);
}
private void InitRegistry()
{
registry = Registry.CurrentUser.CreateSubKey("Software\\Cosysda\\DaSaSo");
LadeRegistry();
}
private void ActualProject_SewerObjectChanged(object? sender, EventArgs e)
{
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerMainMenu);
}
private void Navigator_StateChanged()
{
OnPropertyChanged(nameof(CurrentViewModel));
}
private void ActualProject_BuildingSiteChanged(object? sender, EventArgs e)
{
SaveInRegistry("lastbuildingsite", _actualProject.AktuellBaustelle.Id.ToString());
Buildingsitename = _actualProject.AktuellBaustelle.BuildingSiteNumber;
OnPropertyChanged(nameof(CanSelectSewerObjects));
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerObjects);
}
private void ActualProject_ProjectChanged(object? sender, EventArgs e)
{
SaveInRegistry("lastproject", _actualProject.AktuellProjekt.Id.ToString());
Projektname = _actualProject.AktuellProjekt.Name;
Projektnummer = _actualProject.AktuellProjekt.Projektnummer;
OnPropertyChanged(nameof(CanSelectBuildingSite));
UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.Buildingsites);
}
}
}