From 33d0b1da933780cd12b981b09944832c89e514c7 Mon Sep 17 00:00:00 2001 From: Damian Wessels Date: Thu, 13 Apr 2023 15:40:06 +0200 Subject: [PATCH] =?UTF-8?q?Haltung=20Edit=20hinzugef=C3=BCgt?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PostgresqlData/HaltungDataService.cs | 28 +++- .../Commands/HaltungEditSaveCommand.cs | 1 + .../AddViewModelsHostBuilderExtensions.cs | 3 +- .../ViewModel/Haltung/HaltungEditViewModel.cs | 137 +++++++++++++----- .../Views/Haltung/HaltungEditView.xaml | 6 +- .../Views/Haltung/HaltungListView.xaml | 11 +- 6 files changed, 140 insertions(+), 46 deletions(-) diff --git a/SewerStammGen.DAL/Services/PostgresqlData/HaltungDataService.cs b/SewerStammGen.DAL/Services/PostgresqlData/HaltungDataService.cs index bf1153b..8112eee 100644 --- a/SewerStammGen.DAL/Services/PostgresqlData/HaltungDataService.cs +++ b/SewerStammGen.DAL/Services/PostgresqlData/HaltungDataService.cs @@ -3,6 +3,7 @@ using SewerStammGen.Shared.Contracts; using SewerStammGen.Shared.Domain; using System; using System.Collections.Generic; +using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -77,9 +78,32 @@ namespace SewerStammGen.DAL.Services.PostgresqlData return await GetAllByProjekt(projekt.Id); } - public Task Update(Kanal entity) + public async Task Update(Kanal entity) { - throw new NotImplementedException(); + + string command = "UPDATE " + tableName + " SET " + + " \"Objektbezeichnung\"=@1, " + + " \"StartSchachtId\"=@2, " + + " \"EndSchachtId\"=@3, " + + " \"DN\"=@4, " + + " \"Material\"=@5, " + + " \"Haltungslaenge\"=@6, " + + " \"Entwaesserung\"=@7 " + + " WHERE \"Id\" = @8"; + using(var cmd = new NpgsqlCommand(command,conn)) + { + cmd.Parameters.AddWithValue("1", entity.Objektbezeichnung); + cmd.Parameters.AddWithValue("2", entity.StartSchacht.Id); + cmd.Parameters.AddWithValue("3", entity.EndSchacht.Id); + cmd.Parameters.AddWithValue("4", entity.DN); + cmd.Parameters.AddWithValue("5", entity.Material); + cmd.Parameters.AddWithValue("6", entity.Haltungslaenge); + cmd.Parameters.AddWithValue("7", (int)entity.Entwaesserung); + cmd.Parameters.AddWithValue("8", entity.Id); + + await cmd.ExecuteNonQueryAsync(); + } + return entity; } } } diff --git a/SewerStammGen.WPF/Commands/HaltungEditSaveCommand.cs b/SewerStammGen.WPF/Commands/HaltungEditSaveCommand.cs index 5b0d54e..08ed9f2 100644 --- a/SewerStammGen.WPF/Commands/HaltungEditSaveCommand.cs +++ b/SewerStammGen.WPF/Commands/HaltungEditSaveCommand.cs @@ -27,6 +27,7 @@ namespace SewerStammGen.WPF.Commands public override async Task ExecuteAsync(object? parameter) { + Debugger.Break(); _haltungEditViewModel.Model = await _haltungDataService.Update(_haltungEditViewModel.Model); _renavigator.Renavigate(); diff --git a/SewerStammGen.WPF/HostBuilders/AddViewModelsHostBuilderExtensions.cs b/SewerStammGen.WPF/HostBuilders/AddViewModelsHostBuilderExtensions.cs index 0375aa6..5d8211b 100644 --- a/SewerStammGen.WPF/HostBuilders/AddViewModelsHostBuilderExtensions.cs +++ b/SewerStammGen.WPF/HostBuilders/AddViewModelsHostBuilderExtensions.cs @@ -77,7 +77,8 @@ namespace SewerStammGen.HostBuilders return () => new HaltungEditViewModel( services.GetRequiredService(), services.GetRequiredService(), - services.GetRequiredService>() + services.GetRequiredService>(), + services.GetRequiredService() ); }); #endregion diff --git a/SewerStammGen.WPF/ViewModel/Haltung/HaltungEditViewModel.cs b/SewerStammGen.WPF/ViewModel/Haltung/HaltungEditViewModel.cs index 7f6bca5..ab3dd86 100644 --- a/SewerStammGen.WPF/ViewModel/Haltung/HaltungEditViewModel.cs +++ b/SewerStammGen.WPF/ViewModel/Haltung/HaltungEditViewModel.cs @@ -11,6 +11,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Controls; +using System.Windows.Data; using System.Windows.Input; namespace SewerStammGen.WPF.ViewModel @@ -19,7 +20,49 @@ namespace SewerStammGen.WPF.ViewModel { private readonly IActualState _actualState; private readonly IHaltungDataService _haltungDataService; - + private readonly ISchachtDataService _schachtDataService; + private List avaibleSchaechte; + + public List AvSchaechte + { + get + { + return avaibleSchaechte; + } + } + + int _selectedObenIndex; + int _selectedUntenIndex; + + public int SelectedObenIndex + { + get => _selectedObenIndex; + set + { + if (_selectedObenIndex != value) + { + _selectedObenIndex = value; + _model.StartSchacht = avaibleSchaechte[value]; + RecalculateLength(); + OnPropertyChanged(); + } + } + } + public int SelectedUntenIndex + { + get => _selectedUntenIndex; + set + { + if (_selectedUntenIndex != value) + { + _selectedUntenIndex = value; + _model.EndSchacht = avaibleSchaechte[value]; + RecalculateLength(); + OnPropertyChanged(); + } + } + } + private Kanal _model; public Kanal Model @@ -30,44 +73,26 @@ namespace SewerStammGen.WPF.ViewModel _model = value; } } - - public string _oberePunkt { get; set; } - public string _unterePunkt { get; set; } - public string ObereSchacht + private void RecalculateLength() { - get => _oberePunkt; - - set - { - if (_oberePunkt != value) - { - _oberePunkt = value; - OnPropertyChanged(); - } - } - } - public string UntereSchacht - { - get => _unterePunkt; - set - { - if (_unterePunkt != value) - { - _unterePunkt = value; - OnPropertyChanged(); - } - } - } - + double x1 = (double)Model.StartSchacht.RechtsWert; + double x2 = (double)Model.EndSchacht.RechtsWert; + double y1 = (double)Model.StartSchacht.HochWert; + double y2 = (double)Model.EndSchacht.HochWert; + + double length = Math.Sqrt(((x1 - x2) * (x1 - x2)) + ((y1 - y2) * (y1 - y2))); + Haltungslaenge = length.ToString(); + OnPropertyChanged(nameof(Haltungslaenge)); + } public string Haltungsbezeichnung { get => _model.Objektbezeichnung; set { - if(_model.Objektbezeichnung != value) + if (_model.Objektbezeichnung != value) { _model.Objektbezeichnung = value; OnPropertyChanged(); @@ -79,7 +104,7 @@ namespace SewerStammGen.WPF.ViewModel get => _model.Material; set { - if( _model.Material != value) + if (_model.Material != value) { _model.Material = value; OnPropertyChanged(); @@ -91,7 +116,7 @@ namespace SewerStammGen.WPF.ViewModel get => _model.DN.ToString(); set { - if(_model.DN.ToString() != value) + if (_model.DN.ToString() != value) { _model.DN = int.Parse(value); OnPropertyChanged(); @@ -103,7 +128,7 @@ namespace SewerStammGen.WPF.ViewModel get => _model.Haltungslaenge.ToString(); set { - if(_model.Haltungslaenge.ToString() != value) + if (_model.Haltungslaenge.ToString() != value) { _model.Haltungslaenge = decimal.Parse(value); OnPropertyChanged(); @@ -116,18 +141,52 @@ namespace SewerStammGen.WPF.ViewModel public HaltungEditViewModel( IHaltungDataService haltungDataService, IActualState actualState, - IRenavigator renavigator) + IRenavigator renavigator, + ISchachtDataService schachtDataService) { _actualState = actualState; _haltungDataService = haltungDataService; + _schachtDataService = schachtDataService; + + _model = _actualState.SelectedHaltung; - _oberePunkt = _model.StartSchacht.Objektbezeichnung; - _unterePunkt = _model.EndSchacht.Objektbezeichnung; - Speichern = new HaltungEditSaveCommand(_haltungDataService,renavigator,this); - - + Speichern = new HaltungEditSaveCommand(_haltungDataService, renavigator, this); + + ladeVerfuegbareSchaechte(); + + + + } + + private async void ladeVerfuegbareSchaechte() + { + var s = await _schachtDataService.GetAllByProjekt(_actualState.ProjektID); + avaibleSchaechte = s.ToList(); + int counter = 0; + foreach (var d in avaibleSchaechte) + { + if (d.Id == Model.StartSchacht.Id) + { + SelectedObenIndex = counter; + break; + } + counter++; + } + counter = 0; + foreach (var d in avaibleSchaechte) + { + if (d.Id == Model.EndSchacht.Id) + { + SelectedUntenIndex = counter; + break; + } + counter++; + } + OnPropertyChanged(nameof(AvSchaechte)); + OnPropertyChanged(nameof(SelectedObenIndex)); + OnPropertyChanged(nameof(SelectedUntenIndex)); } } } diff --git a/SewerStammGen.WPF/Views/Haltung/HaltungEditView.xaml b/SewerStammGen.WPF/Views/Haltung/HaltungEditView.xaml index 8df6fba..ba2f732 100644 --- a/SewerStammGen.WPF/Views/Haltung/HaltungEditView.xaml +++ b/SewerStammGen.WPF/Views/Haltung/HaltungEditView.xaml @@ -29,8 +29,10 @@