diff --git a/DaSaSo.Domain/Enums/EMainWindowViewType.cs b/DaSaSo.Domain/Enums/EMainWindowViewType.cs index 857593a..53140ca 100644 --- a/DaSaSo.Domain/Enums/EMainWindowViewType.cs +++ b/DaSaSo.Domain/Enums/EMainWindowViewType.cs @@ -7,6 +7,7 @@ ClientEdit, Projects, Buildingsites, - SewerObjects + SewerObjects, + SewerMainMenu } } diff --git a/DaSaSo.Domain/Services/SewerObjectService/ISewerObjectService.cs b/DaSaSo.Domain/Services/SewerObjectService/ISewerObjectService.cs new file mode 100644 index 0000000..13dbcfa --- /dev/null +++ b/DaSaSo.Domain/Services/SewerObjectService/ISewerObjectService.cs @@ -0,0 +1,14 @@ +using DaSaSo.Domain.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.Domain.Services.SewerObjectService +{ + public interface ISewerObjectService + { + Task CreateSewerObject(Buildingsite aktuellBaustelle); + } +} diff --git a/DaSaSo.Domain/Services/SewerObjectService/SewerObjectService.cs b/DaSaSo.Domain/Services/SewerObjectService/SewerObjectService.cs new file mode 100644 index 0000000..e36d434 --- /dev/null +++ b/DaSaSo.Domain/Services/SewerObjectService/SewerObjectService.cs @@ -0,0 +1,30 @@ +using DaSaSo.Domain.Model; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.Domain.Services.SewerObjectService +{ + public class SewerObjectService : ISewerObjectService + { + private readonly IDataService _buildingsiteService; + + public SewerObjectService(IDataService buildingsiteService) + { + _buildingsiteService = buildingsiteService; + } + + public async Task CreateSewerObject(Buildingsite aktuellBaustelle) + { + SewerObject sewerObject = new SewerObject() + { + BuildingSite = aktuellBaustelle + }; + aktuellBaustelle.SewerObjects.Add(sewerObject); + await _buildingsiteService.Update(aktuellBaustelle.Id, aktuellBaustelle); + return sewerObject; + } + } +} diff --git a/DaSaSo.ViewModel/BuildingsiteEditViewModel.cs b/DaSaSo.ViewModel/BuildingsiteEditViewModel.cs new file mode 100644 index 0000000..d1c3480 --- /dev/null +++ b/DaSaSo.ViewModel/BuildingsiteEditViewModel.cs @@ -0,0 +1,81 @@ +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 _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 buildingsiteService, IActualProject actualProject, IRenavigator renavigator) + { + _buildingsiteService = buildingsiteService; + _actualProject = actualProject; + _renavigator = renavigator; + _model = actualProject.AktuellBaustelle; + + SaveBuildingsiteCommand = new RelayCommand(SaveBuildingsite); + } + + private void SaveBuildingsite() + { + _buildingsiteService.Update(Model.Id, Model); + //_renavigator.Renavigate(new BuildingsiteListViewModel(_buildingsiteService,_actualProject,_renavigator)) + } + } +} diff --git a/DaSaSo.ViewModel/BuildingsiteListViewModel.cs b/DaSaSo.ViewModel/BuildingsiteListViewModel.cs index 1874dc5..771b636 100644 --- a/DaSaSo.ViewModel/BuildingsiteListViewModel.cs +++ b/DaSaSo.ViewModel/BuildingsiteListViewModel.cs @@ -39,6 +39,7 @@ namespace DaSaSo.ViewModel public ICommand SelectCommand { get; set; } public ICommand AddCommand { get; set; } + public ICommand EditCommand { get; set; } public BuildingsiteListViewModel(IDataService buildingSiteDataService, IActualProject actualProject, IRenavigator renavigator,IBuildingsiteService buildingsiteService) { @@ -46,6 +47,7 @@ namespace DaSaSo.ViewModel _renavigator = renavigator; _buildingSiteDataService = buildingSiteDataService as BuildingsiteDataService; Buildingsites = new ObservableCollection(); + EditCommand = new EditBuildingsiteCommand(buildingSiteDataService,actualProject,renavigator,buildingsiteService,this); SelectCommand = new SelectBuildingsiteCommand(actualProject, this); AddCommand = new AddBuildingsiteCommand(actualProject, buildingsiteService); LoadBuildingsites(); diff --git a/DaSaSo.ViewModel/Commands/AddSewerObjectCommand.cs b/DaSaSo.ViewModel/Commands/AddSewerObjectCommand.cs new file mode 100644 index 0000000..0b17468 --- /dev/null +++ b/DaSaSo.ViewModel/Commands/AddSewerObjectCommand.cs @@ -0,0 +1,28 @@ +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); + } + } +} diff --git a/DaSaSo.ViewModel/Commands/EditBuildingsiteCommand.cs b/DaSaSo.ViewModel/Commands/EditBuildingsiteCommand.cs new file mode 100644 index 0000000..3c679b4 --- /dev/null +++ b/DaSaSo.ViewModel/Commands/EditBuildingsiteCommand.cs @@ -0,0 +1,36 @@ +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 EditBuildingsiteCommand : AsyncCommandBase + { + private IDataService buildingSiteDataService; + private IActualProject actualProject; + private IRenavigator renavigator; + private IBuildingsiteService buildingsiteService; + private BuildingsiteListViewModel buildingsiteListViewModel; + + public EditBuildingsiteCommand(IDataService buildingSiteDataService, IActualProject actualProject, IRenavigator renavigator, IBuildingsiteService buildingsiteService, BuildingsiteListViewModel buildingsiteListViewModel) + { + this.buildingSiteDataService = buildingSiteDataService; + this.actualProject = actualProject; + this.renavigator = renavigator; + this.buildingsiteService = buildingsiteService; + this.buildingsiteListViewModel = buildingsiteListViewModel; + } + + public override async Task ExecuteAsync(object? parameter) + { + actualProject.SetBuildingSite(buildingsiteListViewModel.SelectedBuildingsite); + renavigator.Renavigate(new BuildingsiteEditViewModel(buildingSiteDataService, actualProject, renavigator)); + } + } +} diff --git a/DaSaSo.ViewModel/Commands/SelectSewerObjectCommand.cs b/DaSaSo.ViewModel/Commands/SelectSewerObjectCommand.cs new file mode 100644 index 0000000..8633737 --- /dev/null +++ b/DaSaSo.ViewModel/Commands/SelectSewerObjectCommand.cs @@ -0,0 +1,29 @@ +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); + } + } +} diff --git a/DaSaSo.ViewModel/Factories/MainWindowViewModelFactory.cs b/DaSaSo.ViewModel/Factories/MainWindowViewModelFactory.cs index 22b8ef2..b32035c 100644 --- a/DaSaSo.ViewModel/Factories/MainWindowViewModelFactory.cs +++ b/DaSaSo.ViewModel/Factories/MainWindowViewModelFactory.cs @@ -11,13 +11,17 @@ namespace DaSaSo.ViewModel.Factories private CreateViewModel _createProjektListViewModel; private CreateViewModel _createBuildingsiteListViewModel; private CreateViewModel _createSewerObjectListViewModel; + private CreateViewModel _createSewerMainMenuListViewModel; public MainWindowViewModelFactory( CreateViewModel createHomeViewModel, CreateViewModel createClientListViewModel, CreateViewModel createClientEditViewModel, CreateViewModel createProjektListViewModel, - CreateViewModel createBuildingsiteListViewModel, CreateViewModel createSewerObjectListViewModel) + CreateViewModel createBuildingsiteListViewModel, + CreateViewModel createSewerObjectListViewModel, + CreateViewModel createSewerMainMenuListViewModel + ) { _createHomeViewModel = createHomeViewModel; _createClientListViewModel = createClientListViewModel; @@ -25,6 +29,7 @@ namespace DaSaSo.ViewModel.Factories _createProjektListViewModel = createProjektListViewModel; _createBuildingsiteListViewModel = createBuildingsiteListViewModel; _createSewerObjectListViewModel = createSewerObjectListViewModel; + _createSewerMainMenuListViewModel = createSewerMainMenuListViewModel; } public BaseViewModel CreateViewModel(EMainWindowViewType viewType) @@ -44,6 +49,8 @@ namespace DaSaSo.ViewModel.Factories return _createBuildingsiteListViewModel(); case EMainWindowViewType.SewerObjects: return _createSewerObjectListViewModel(); + case EMainWindowViewType.SewerMainMenu: + return _createSewerMainMenuListViewModel(); default: throw new ArgumentException("The Viewtype does not have a ViewModel.", "viewType"); diff --git a/DaSaSo.ViewModel/SewerMainMenuListViewModel.cs b/DaSaSo.ViewModel/SewerMainMenuListViewModel.cs new file mode 100644 index 0000000..2983d8e --- /dev/null +++ b/DaSaSo.ViewModel/SewerMainMenuListViewModel.cs @@ -0,0 +1,12 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace DaSaSo.ViewModel +{ + public class SewerMainMenuListViewModel : BaseViewModel + { + } +} diff --git a/DaSaSo.ViewModel/SewerObjectListViewModel.cs b/DaSaSo.ViewModel/SewerObjectListViewModel.cs index 0ff61a6..fc6dae9 100644 --- a/DaSaSo.ViewModel/SewerObjectListViewModel.cs +++ b/DaSaSo.ViewModel/SewerObjectListViewModel.cs @@ -1,8 +1,10 @@ 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; @@ -20,26 +22,23 @@ namespace DaSaSo.ViewModel { private readonly SewerObjectDataService _sewerObjectDataService; private readonly IActualProject _actualProject; + private readonly ISewerObjectService _sewerObjectService; public ObservableCollection SewerObjects { get; } public object Testme { get; set; } - public ICommand Bearbeiten { get; set; } + public ICommand EditCommand { get; set; } + public ICommand AddCommand { get; set; } - public SewerObjectListViewModel(IDataService sewerObjectDataService, IActualProject actualProject) + public SewerObjectListViewModel(IDataService sewerObjectDataService, IActualProject actualProject, ISewerObjectService sewerObjectService) { SewerObjects = new ObservableCollection(); this._sewerObjectDataService = (sewerObjectDataService as SewerObjectDataService); + _sewerObjectService = sewerObjectService; this._actualProject = actualProject; LoadSewerObjects(); - Bearbeiten = new RelayCommand(function); - } + EditCommand = new SelectSewerObjectCommand(actualProject, this); + AddCommand = new AddSewerObjectCommand(actualProject, sewerObjectService); - private void function() - { - SewerObject? SelectedSewer = GetSelectedSewer(); - if (SelectedSewer == null) return; - - Debugger.Break(); } public SewerObject? GetSelectedSewer() @@ -63,6 +62,7 @@ namespace DaSaSo.ViewModel private async void LoadSewerObjects() { + //BUG: Streetname can be null, programm Terminate IEnumerable? sewerobjects = await _sewerObjectDataService.GetAllByBuildingsite(_actualProject.AktuellBaustelle); List _sewers = sewerobjects.ToList(); diff --git a/DaSaSo.ViewModel/State/ActualState/ActualProject.cs b/DaSaSo.ViewModel/State/ActualState/ActualProject.cs index 112d008..a18f669 100644 --- a/DaSaSo.ViewModel/State/ActualState/ActualProject.cs +++ b/DaSaSo.ViewModel/State/ActualState/ActualProject.cs @@ -34,6 +34,10 @@ namespace DaSaSo.ViewModel.State.ActualState { BuildingSiteChanged?.Invoke(this, new EventArgs()); } + protected void OnSewerObjectChanged() + { + SewerObjectChanged?.Invoke(this, new EventArgs()); + } #endregion public void SetClient(Client client) { @@ -57,9 +61,10 @@ namespace DaSaSo.ViewModel.State.ActualState public void SetSewerObject(SewerObject sewerObject) { AktuellSewerObject = sewerObject; - + OnSewerObjectChanged(); } + public void ResetProject() { SetProject(null); diff --git a/DaSaSo.ViewModel/Window/MainWindowViewModel.cs b/DaSaSo.ViewModel/Window/MainWindowViewModel.cs index 8ec9ce6..5b21939 100644 --- a/DaSaSo.ViewModel/Window/MainWindowViewModel.cs +++ b/DaSaSo.ViewModel/Window/MainWindowViewModel.cs @@ -83,11 +83,17 @@ namespace DaSaSo.ViewModel _actualProject.ClientChanged += _actualProject_ClientChanged; _actualProject.ProjectChanged += _actualProject_ProjectChanged; _actualProject.BuildingSiteChanged += _actualProject_BuildingSiteChanged; + _actualProject.SewerObjectChanged += _actualProject_SewerObjectChanged; + } + + private void _actualProject_SewerObjectChanged(object? sender, EventArgs e) + { + throw new NotImplementedException(); } private void _navigator_StateChanged() { - OnPropertyChanged(nameof(CurrentViewModel)); + UpdateCurrentViewModelCommand.Execute(EMainWindowViewType.SewerMainMenu); } private void _actualProject_BuildingSiteChanged(object? sender, EventArgs e) diff --git a/DaSaSo.Wpf/App.xaml.cs b/DaSaSo.Wpf/App.xaml.cs index 2aa59df..dbb7965 100644 --- a/DaSaSo.Wpf/App.xaml.cs +++ b/DaSaSo.Wpf/App.xaml.cs @@ -2,6 +2,7 @@ using DaSaSo.Domain.Services; using DaSaSo.Domain.Services.BuildingsiteServices; using DaSaSo.Domain.Services.ProjectServices; +using DaSaSo.Domain.Services.SewerObjectService; using DaSaSo.EntityFramework; using DaSaSo.EntityFramework.Services; using DaSaSo.ViewModel; @@ -50,6 +51,7 @@ namespace DaSaSo.Wpf services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); @@ -103,7 +105,8 @@ namespace DaSaSo.Wpf { return () => new SewerObjectListViewModel( services.GetRequiredService>(), - services.GetRequiredService() + services.GetRequiredService(), + services.GetRequiredService() ); }); diff --git a/DaSaSo.Wpf/DaSaSo.Wpf.csproj.user b/DaSaSo.Wpf/DaSaSo.Wpf.csproj.user index 7b8ce85..115079e 100644 --- a/DaSaSo.Wpf/DaSaSo.Wpf.csproj.user +++ b/DaSaSo.Wpf/DaSaSo.Wpf.csproj.user @@ -13,6 +13,9 @@ Code + + Code + Code @@ -51,6 +54,9 @@ Designer + + Designer + Designer diff --git a/DaSaSo.Wpf/View/Buildingsites/BuildingSiteEditView.xaml b/DaSaSo.Wpf/View/Buildingsites/BuildingSiteEditView.xaml new file mode 100644 index 0000000..8015c81 --- /dev/null +++ b/DaSaSo.Wpf/View/Buildingsites/BuildingSiteEditView.xaml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + +