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,45 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
namespace StammGenerator.Commands
{
internal 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

@@ -0,0 +1,30 @@
using SewerStammGen.Shared.Domain;
using StammGenerator.Interface;
using StammGenerator.ViewModel;
using System.Threading.Tasks;
namespace StammGenerator.Commands
{
internal class HaltungAddCommand : AsyncCommandBase
{
private readonly IActualState actualState;
private readonly IRenavigator renavigator;
public HaltungAddCommand(IActualState actualState, IRenavigator renavigator)
{
this.actualState = actualState;
this.renavigator = renavigator;
}
public override async Task ExecuteAsync(object? parameter)
{
Kanal haltung = new Kanal()
{
Id = -1,
Projekt = new Projekt() { Id = actualState.ProjektID },
};
actualState.SetHaltung(haltung);
renavigator.Renavigate();
}
}
}

View File

@@ -0,0 +1,30 @@
using StammGenerator.Commands;
using StammGenerator.Interface;
using StammGenerator.ViewModel;
using System.Threading.Tasks;
namespace StammGenerator.Commands
{
internal class HaltungEditCommand : AsyncCommandBase
{
private IActualState actualState;
private IRenavigator renavigator;
private HaltungListViewModel haltungListViewModel;
public HaltungEditCommand(IActualState actualState, IRenavigator renavigator, HaltungListViewModel haltungListViewModel)
{
this.actualState = actualState;
this.renavigator = renavigator;
this.haltungListViewModel = haltungListViewModel;
}
public override async Task ExecuteAsync(object? parameter)
{
actualState.SetHaltung(haltungListViewModel.SelectedHaltung);
renavigator.Renavigate();
}
}
}

View File

@@ -0,0 +1,38 @@
using SewerStammGen.Shared.Contracts;
using SewerStammGen.Shared.Domain;
using StammGenerator.Commands;
using StammGenerator.Interface;
using StammGenerator.ViewModel;
using System.Threading.Tasks;
namespace StammGenerator.Commands
{
internal class HaltungEditSaveCommand : AsyncCommandBase
{
private readonly IHaltungDataService _haltungDataService;
private readonly IRenavigator _renavigator;
private readonly Kanal _model;
public HaltungEditSaveCommand(IHaltungDataService haltungDataService,IRenavigator renavigator,HaltungEditViewModel haltungEditViewModel)
{
this._haltungDataService = haltungDataService;
this._renavigator = renavigator;
this._model = haltungEditViewModel.Model;
}
public override async Task ExecuteAsync(object? parameter)
{
if(_model.Id == -1) // Neu anlegen
{
await _haltungDataService.Create(_model);
}
else
{
await _haltungDataService.Update(_model);
}
_renavigator.Renavigate();
}
}
}

View File

@@ -0,0 +1,27 @@
using SewerStammGen.Shared.Domain;
using Shared.Contracts;
using StammGenerator.Commands;
using StammGenerator.ViewModel;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace StammGenerator.Commands
{
internal class ProjectExportCommand : AsyncCommandBase
{
private readonly IActualState _actualState;
private readonly IExport _export;
public ProjectExportCommand(IActualState actualState)
{
_actualState = actualState;
}
public override async Task ExecuteAsync(object? parameter)
{
await _export.Export(new List<Kanal>(), new List<Schacht>());
}
}
}

View File

@@ -0,0 +1,42 @@
using SewerStammGen.Shared.Contracts;
using SewerStammGen.Shared.Domain;
using StammGenerator.Commands;
using StammGenerator.Interface;
using StammGenerator.ViewModel;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace StammGenerator.Commands
{
internal class ProjektAddCommand : AsyncCommandBase
{
private readonly IActualState _actualState;
private readonly IProjektDataService _generic;
private readonly IRenavigator _renavigator;
public ProjektAddCommand(IProjektDataService generic, IActualState actualState, IRenavigator renavigator)
{
_renavigator = renavigator;
_generic = generic;
_actualState = actualState;
}
public override async Task ExecuteAsync(object? parameter)
{
Projekt newProjekt = new Projekt()
{
Erstelldatum = "",
Strasse = "",
Ort = "",
Projektname = "",
Auftraggeber = new Auftraggeber(),
Schaechte = new List<Schacht>(),
Kanaele = new List<Kanal>()
};
newProjekt = await _generic.Create(newProjekt);
_actualState.SetProjekt(newProjekt);
_renavigator.Renavigate();
}
}
}

View File

@@ -0,0 +1,34 @@
using SewerStammGen.Shared.Domain;
using Shared.Contracts;
using StammGenerator.Commands;
using StammGenerator.Interface;
using StammGenerator.ViewModel;
using System.Threading.Tasks;
namespace StammGenerator.Commands
{
internal class ProjektEditCommand : AsyncCommandBase
{
private IDataService<Projekt> _dataService;
private IActualState _actualState;
private IRenavigator _renavigator;
private ProjektListViewModel _projektListViewModel;
public ProjektEditCommand(IDataService<Projekt> dataService, IActualState actualState, IRenavigator renavigator, ProjektListViewModel projektListViewModel)
{
_dataService = dataService;
_actualState = actualState;
_renavigator = renavigator;
_projektListViewModel = projektListViewModel;
}
public override async Task ExecuteAsync(object? parameter)
{
_actualState.SetProjekt(_projektListViewModel.SelectedProjekt);
_renavigator.Renavigate();
}
}
}

View File

@@ -0,0 +1,24 @@
using StammGenerator.Commands;
using StammGenerator.ViewModel;
using System.Threading.Tasks;
namespace StammGenerator.Commands
{
internal class ProjektSelectCommand : AsyncCommandBase
{
private readonly IActualState _actualState;
private readonly ProjektListViewModel _projektListViewModel;
public ProjektSelectCommand(IActualState actualState, ProjektListViewModel projektListViewModel)
{
_actualState = actualState;
_projektListViewModel = projektListViewModel;
}
public override async Task ExecuteAsync(object? parameter)
{
if (_projektListViewModel.SelectedProjekt == null) return;
_actualState.SetProjekt(_projektListViewModel.SelectedProjekt);
}
}
}

View File

@@ -0,0 +1,31 @@
using SewerStammGen.Shared.Domain;
using StammGenerator.Commands;
using StammGenerator.Interface;
using StammGenerator.ViewModel;
using System.Threading.Tasks;
namespace StammGenerator.Commands
{
class SchachtAddCommand : AsyncCommandBase
{
private readonly IActualState actualState;
private readonly IRenavigator renavigator;
public SchachtAddCommand(IActualState actualState, IRenavigator renavigator)
{
this.actualState = actualState;
this.renavigator = renavigator;
}
public override async Task ExecuteAsync(object? parameter)
{
Schacht newSchacht = new Schacht()
{
Projekt = new Projekt() { Id = actualState.ProjektID },
};
actualState.SetSchacht(newSchacht);
renavigator.Renavigate();
}
}
}

View File

@@ -0,0 +1,30 @@
using SewerStammGen.Shared.Contracts;
using StammGenerator.Commands;
using StammGenerator.Interface;
using StammGenerator.ViewModel;
using System;
using System.Threading.Tasks;
namespace StammGenerator.Commands
{
class SchachtDeleteCommand : AsyncCommandBase
{
private ISchachtDataService schachtService;
private IActualState actualState;
private IRenavigator renavigator;
private ManholeListViewModel manholeListViewModel;
public SchachtDeleteCommand(ISchachtDataService schachtService, IActualState actualState, IRenavigator renavigator, ManholeListViewModel manholeListViewModel)
{
this.schachtService = schachtService;
this.actualState = actualState;
this.renavigator = renavigator;
this.manholeListViewModel = manholeListViewModel;
}
public override Task ExecuteAsync(object? parameter)
{
throw new NotImplementedException();
}
}
}

View File

@@ -0,0 +1,28 @@
using StammGenerator.Commands;
using StammGenerator.Interface;
using StammGenerator.ViewModel;
using System.Threading.Tasks;
namespace StammGenerator.Commands
{
class SchachtEditCommand : AsyncCommandBase
{
private IActualState actualState;
private IRenavigator renavigator;
private ManholeListViewModel manholeListViewModel;
public SchachtEditCommand(IActualState actualState, IRenavigator renavigator, ManholeListViewModel manholeListViewModel)
{
this.actualState = actualState;
this.renavigator = renavigator;
this.manholeListViewModel = manholeListViewModel;
}
public override async Task ExecuteAsync(object? parameter)
{
actualState.SetSchacht(manholeListViewModel.SelectedSchacht);
renavigator.Renavigate();
}
}
}

View File

@@ -0,0 +1,28 @@
using StammGenerator.Commands;
using StammGenerator.Enum;
using StammGenerator.Interface;
using System.Threading.Tasks;
namespace StammGenerator.Commands
{
internal 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);
}
}
}
}