From c4fd240f59c6eb220372dbd6eca854add4142508 Mon Sep 17 00:00:00 2001 From: Damian Wessels Date: Tue, 11 Apr 2023 19:09:28 +0200 Subject: [PATCH] Ohne Syncfusion --- .../Services/Common/NonQueryDataService.cs | 1 + .../Services/SchachtDataService.cs | 9 +++ .../Commands/HaltungEditSaveCommand.cs | 38 ++++++++++ .../AddDBContextHostBuilderExtensions.cs | 6 +- .../AddViewModelsHostBuilderExtensions.cs | 4 +- .../ViewModel/Haltung/HaltungEditViewModel.cs | 74 ++++++++----------- .../Views/Haltung/HaltungEditView.xaml | 65 +--------------- Shared/Contracts/ISchachtDataService.cs | 1 + Shared/Contracts/ISchachtService.cs | 1 + Shared/Services/SchachtService.cs | 15 +++- 10 files changed, 107 insertions(+), 107 deletions(-) create mode 100644 SewerStammGen/Commands/HaltungEditSaveCommand.cs diff --git a/SewerStammGen.EntityFramework/Services/Common/NonQueryDataService.cs b/SewerStammGen.EntityFramework/Services/Common/NonQueryDataService.cs index 857a3b4..d8ccf6b 100644 --- a/SewerStammGen.EntityFramework/Services/Common/NonQueryDataService.cs +++ b/SewerStammGen.EntityFramework/Services/Common/NonQueryDataService.cs @@ -46,6 +46,7 @@ namespace SewerStammGen.EntityFramework.Services.Common { using SewerStammGenDbContext context = _contextFactory.CreateDbContext(); entity.Id = id; + context.Set().Update(entity); await context.SaveChangesAsync(); return entity; diff --git a/SewerStammGen.EntityFramework/Services/SchachtDataService.cs b/SewerStammGen.EntityFramework/Services/SchachtDataService.cs index 43cbc1a..3388f73 100644 --- a/SewerStammGen.EntityFramework/Services/SchachtDataService.cs +++ b/SewerStammGen.EntityFramework/Services/SchachtDataService.cs @@ -55,6 +55,15 @@ namespace SewerStammGen.EntityFramework.Services throw new NotImplementedException(); } + public async Task GetSchachtByNameAndProjekt(string name, int projektID) + { + using(SewerStammGenDbContext context = _contextFactory.CreateDbContext()) + { + Schacht entity = await context.Set().Where(x => x.Projekt.Id.Equals(projektID) && x.Objektbezeichnung.Equals(name)).FirstOrDefaultAsync(); + return entity; + } + } + public async Task Update(int id, Schacht entity) { return await _nonQueryDataService.Update(id, entity); diff --git a/SewerStammGen/Commands/HaltungEditSaveCommand.cs b/SewerStammGen/Commands/HaltungEditSaveCommand.cs new file mode 100644 index 0000000..3a9eff1 --- /dev/null +++ b/SewerStammGen/Commands/HaltungEditSaveCommand.cs @@ -0,0 +1,38 @@ +using SewerStammGen.Shared.Contracts; +using SewerStammGen.WPF.ViewModel; +using Shared.Contracts; +using Shared.Domain; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SewerStammGen.WPF.Commands +{ + internal class HaltungEditSaveCommand : AsyncCommandBase + { + private HaltungEditViewModel haltungEditViewModel; + private IDataService kanalDataService; + private ISchachtService schachtService; + + public HaltungEditSaveCommand(HaltungEditViewModel haltungEditViewModel, IDataService kanalDataService, ISchachtService schachtService) + { + this.haltungEditViewModel = haltungEditViewModel; + this.kanalDataService = kanalDataService; + this.schachtService = schachtService; + } + + public override async Task ExecuteAsync(object? parameter) + { + if(haltungEditViewModel._oberePunkt != haltungEditViewModel.Model.StartSchacht.Objektbezeichnung) + { + Schacht s = await schachtService.FindSchachtByNameAndProjektID(haltungEditViewModel._oberePunkt, haltungEditViewModel.Model.Projekt.Id); + haltungEditViewModel.Model.StartSchacht = s; + } + haltungEditViewModel.Model = await kanalDataService.Update(haltungEditViewModel.Model.Id, haltungEditViewModel.Model); + Trace.WriteLine("Daten gespeichert"); + } + } +} diff --git a/SewerStammGen/HostBuilders/AddDBContextHostBuilderExtensions.cs b/SewerStammGen/HostBuilders/AddDBContextHostBuilderExtensions.cs index 542ae59..525b864 100644 --- a/SewerStammGen/HostBuilders/AddDBContextHostBuilderExtensions.cs +++ b/SewerStammGen/HostBuilders/AddDBContextHostBuilderExtensions.cs @@ -27,7 +27,11 @@ namespace SewerStammGen.HostBuilders if (databaseToUse.Equals("default")) { connectionString = context.Configuration.GetConnectionString("default"); - configureDbContext = o => o.UseNpgsql(connectionString); + configureDbContext = o => + { + o.EnableSensitiveDataLogging(); + o.UseNpgsql(connectionString); + }; } else if (databaseToUse.Equals("sqlite")) { diff --git a/SewerStammGen/HostBuilders/AddViewModelsHostBuilderExtensions.cs b/SewerStammGen/HostBuilders/AddViewModelsHostBuilderExtensions.cs index e25a4e9..ade9e29 100644 --- a/SewerStammGen/HostBuilders/AddViewModelsHostBuilderExtensions.cs +++ b/SewerStammGen/HostBuilders/AddViewModelsHostBuilderExtensions.cs @@ -72,11 +72,11 @@ namespace SewerStammGen.HostBuilders ); }); - services.AddSingleton>(services => + services.AddTransient>(services => { return () => new HaltungEditViewModel( services.GetRequiredService(), - services.GetRequiredService(), + services.GetRequiredService(), services.GetRequiredService() ); }); diff --git a/SewerStammGen/ViewModel/Haltung/HaltungEditViewModel.cs b/SewerStammGen/ViewModel/Haltung/HaltungEditViewModel.cs index 21d63de..3185a83 100644 --- a/SewerStammGen/ViewModel/Haltung/HaltungEditViewModel.cs +++ b/SewerStammGen/ViewModel/Haltung/HaltungEditViewModel.cs @@ -1,4 +1,5 @@ using SewerStammGen.Shared.Contracts; +using SewerStammGen.WPF.Commands; using SewerStammGen.WPF.ViewModel.State; using Shared.Contracts; using Shared.Domain; @@ -17,41 +18,48 @@ namespace SewerStammGen.WPF.ViewModel { private readonly IActualState _actualState; private readonly IHaltungDataService _kanalDataService; + private readonly ISchachtService _schachtService; private Kanal _model; - private ObservableCollection _verfuegbareSchaechte; - - public ObservableCollection VerfuegbareSchaechte + public Kanal Model { - get => _verfuegbareSchaechte; - } - - - public Schacht ObereSchacht - { - get => _model.StartSchacht; + get => _model; set { - if(_model.StartSchacht != value) + _model = value; + } + } + + public string _oberePunkt { get; set; } + public string _unterePunkt { get; set; } + + public string ObereSchacht + { + get => _oberePunkt; + + set + { + if (_oberePunkt != value) { - _model.StartSchacht = value; + _oberePunkt = value; OnPropertyChanged(); } } } - - public Schacht UntereSchacht + public string UntereSchacht { - get => _model.EndSchacht; + get => _unterePunkt; set { - if(_model.EndSchacht != value) + if (_unterePunkt != value) { - _model.EndSchacht = value; + _unterePunkt = value; OnPropertyChanged(); } + } } + public string Haltungsbezeichnung { @@ -104,44 +112,26 @@ namespace SewerStammGen.WPF.ViewModel public ICommand Speichern { get; set; } - public HaltungEditViewModel(IHaltungDataService kanalDataService, - ISchachtDataService schachtDataService, + public HaltungEditViewModel(IHaltungDataService kanalDataService, + ISchachtService schachtService, IActualState actualState) { _actualState = actualState; _kanalDataService = kanalDataService; - _verfuegbareSchaechte = new ObservableCollection(); + _schachtService = schachtService; _model = new Kanal(); - Speichern = new RelayCommand((x) => SaveKanal()); + Speichern = new HaltungEditSaveCommand(this, kanalDataService, schachtService); LoadModel(); - LoadSchaechte(schachtDataService); + } - private async void LoadSchaechte(ISchachtDataService schachtDataService) - { - var s = await schachtDataService.GetAll(_actualState.ProjektID); - InitCollection(_verfuegbareSchaechte, s); - - } - - private void InitCollection(ObservableCollection dst, IEnumerable src) - { - dst.Clear(); - foreach (var srcItem in src) { - dst.Add(srcItem); - } - OnPropertyChanged(nameof(VerfuegbareSchaechte)); - } - - private void SaveKanal() - { - _kanalDataService.Update(_model.Id, _model); - } private async void LoadModel() { _model = await _kanalDataService.Get(_actualState.HaltungID); + UntereSchacht = _model.EndSchacht.Objektbezeichnung; + ObereSchacht = _model.StartSchacht.Objektbezeichnung; OnPropertyChanged(nameof(ObereSchacht)); OnPropertyChanged(nameof(UntereSchacht)); OnPropertyChanged(nameof(Haltungslaenge)); diff --git a/SewerStammGen/Views/Haltung/HaltungEditView.xaml b/SewerStammGen/Views/Haltung/HaltungEditView.xaml index 810a635..8df6fba 100644 --- a/SewerStammGen/Views/Haltung/HaltungEditView.xaml +++ b/SewerStammGen/Views/Haltung/HaltungEditView.xaml @@ -3,24 +3,10 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:behaviors="http://schemas.microsoft.com/xaml/behaviors" - xmlns:syncfusion="http://schemas.syncfusion.com/wpf" xmlns:local="clr-namespace:SewerStammGen.WPF.Views" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> - - - - - - - - - - - - - + @@ -43,51 +29,8 @@ @@ -119,7 +62,7 @@