From 40a08826316faeb37340f46d4697dfc8a6b3140f Mon Sep 17 00:00:00 2001 From: Damian Wessels Date: Sun, 2 Jul 2023 12:15:06 +0200 Subject: [PATCH] =?UTF-8?q?auftraggeber=20k=C3=B6nnen=20editiert=20werden.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Beim Speichern des Projekt werden Auftraggber mit gespeichert --- .../PostgresqlData/AuftraggeberDataService.cs | 18 +++- SewerStammGen.Shared/Domain/Auftraggeber.cs | 2 + .../AddViewModelsHostBuilderExtensions.cs | 1 + StammGenerator/StammGenerator.csproj.user | 6 ++ .../Auftraggeber/AuftraggeberEditViewModel.cs | 99 +++++++++++++++++++ .../ViewModel/Projekt/ProjektEditViewModel.cs | 50 ++++++++-- .../Views/Auftraggeber/AuftraggeberShow.xaml | 37 +++++++ .../Auftraggeber/AuftraggeberShow.xaml.cs | 27 +++++ .../Views/Projekt/ProjektEditView.xaml | 60 ++++++----- 9 files changed, 266 insertions(+), 34 deletions(-) create mode 100644 StammGenerator/ViewModel/Auftraggeber/AuftraggeberEditViewModel.cs create mode 100644 StammGenerator/Views/Auftraggeber/AuftraggeberShow.xaml create mode 100644 StammGenerator/Views/Auftraggeber/AuftraggeberShow.xaml.cs diff --git a/SewerStammGen.DAL/Services/PostgresqlData/AuftraggeberDataService.cs b/SewerStammGen.DAL/Services/PostgresqlData/AuftraggeberDataService.cs index 5d4823c..2a288b3 100644 --- a/SewerStammGen.DAL/Services/PostgresqlData/AuftraggeberDataService.cs +++ b/SewerStammGen.DAL/Services/PostgresqlData/AuftraggeberDataService.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; @@ -75,9 +76,22 @@ namespace SewerStammGen.DAL.Services.PostgresqlData return result; } - public Task Update(Auftraggeber entity) + public async Task Update(Auftraggeber entity) { - throw new NotImplementedException(); + string command = "UPDATE " + tableName + " SET name=@1, strasse=@2, ort=@3, postleitzahl=@4, ansprechpartner=@5,telefonnummer=@6 WHERE auftraggeber_id=@7"; + using (var cmd = new NpgsqlCommand(command, conn)) + { + cmd.Parameters.AddWithValue("1", entity.Name); + cmd.Parameters.AddWithValue("2", entity.Strasse); + cmd.Parameters.AddWithValue("3", entity.Ort); + cmd.Parameters.AddWithValue("4", entity.Postleitzahl); + cmd.Parameters.AddWithValue("5", entity.Ansprechpartner); + cmd.Parameters.AddWithValue("6", entity.Telefonnummer); + cmd.Parameters.AddWithValue("7", entity.Id); + int res = await cmd.ExecuteNonQueryAsync(); + Trace.WriteLine(res); + } + return entity; } } } diff --git a/SewerStammGen.Shared/Domain/Auftraggeber.cs b/SewerStammGen.Shared/Domain/Auftraggeber.cs index f8ce7be..cca5b47 100644 --- a/SewerStammGen.Shared/Domain/Auftraggeber.cs +++ b/SewerStammGen.Shared/Domain/Auftraggeber.cs @@ -14,5 +14,7 @@ namespace SewerStammGen.Shared.Domain public string Postleitzahl { get; set; } = String.Empty; public string Ansprechpartner { get; set; } = String.Empty; public string Telefonnummer { get; set; } = String.Empty; + + public bool DataChanged { get; set; } = false; } } diff --git a/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs b/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs index cb3b6f8..e2b2736 100644 --- a/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs +++ b/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs @@ -86,6 +86,7 @@ namespace StammGenerator.HostBuilders { return () => new ProjektEditViewModel( services.GetRequiredService(), + services.GetRequiredService(), services.GetRequiredService(), services.GetRequiredService>() diff --git a/StammGenerator/StammGenerator.csproj.user b/StammGenerator/StammGenerator.csproj.user index 38b2a60..3a6dc89 100644 --- a/StammGenerator/StammGenerator.csproj.user +++ b/StammGenerator/StammGenerator.csproj.user @@ -7,6 +7,9 @@ + + Code + Code @@ -42,6 +45,9 @@ Designer + + Designer + Designer diff --git a/StammGenerator/ViewModel/Auftraggeber/AuftraggeberEditViewModel.cs b/StammGenerator/ViewModel/Auftraggeber/AuftraggeberEditViewModel.cs new file mode 100644 index 0000000..4efd800 --- /dev/null +++ b/StammGenerator/ViewModel/Auftraggeber/AuftraggeberEditViewModel.cs @@ -0,0 +1,99 @@ +using SewerStammGen.Shared.Domain; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Text; +using System.Threading.Tasks; + +namespace StammGenerator.ViewModel +{ + class AuftraggeberEditViewModel : BaseViewModel + { + Auftraggeber _model; + public string Name + { + get => _model.Name; + set + { + if(_model.Name != value) + { + _model.Name = value; + OnPropertyChanged(); + } + } + } + public string Strasse + { + get => _model.Strasse; + set + { + if(_model.Strasse != value) + { + _model.Strasse = value; + OnPropertyChanged(); + } + } + } + public string Ort + { + get => _model.Ort; + set + { + if(_model.Ort != value) + { + _model.Ort = value; + OnPropertyChanged(); + } + } + } + public string Postleitzahl + { + get => _model.Postleitzahl; + set + { + if(_model.Postleitzahl != value) + { + _model.Postleitzahl = value; + OnPropertyChanged(); + } + } + } + public string Telefonnummer + { + get => _model.Telefonnummer; + set + { + if(_model.Telefonnummer != value) + { + _model.Telefonnummer = value; + OnPropertyChanged(); + } + } + } + public string Ansprechpartner + { + get => _model.Ansprechpartner; + set + { + if(_model.Ansprechpartner != value) + { + _model.Ansprechpartner = value; + OnPropertyChanged(); + } + } + } + + protected override void OnPropertyChanged([CallerMemberName] string? propertyName = null) + { + _model.DataChanged = true; + base.OnPropertyChanged(propertyName); + } + + public AuftraggeberEditViewModel(Auftraggeber model) + { + _model = model; + } + } + +} diff --git a/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs b/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs index 2d7f103..7c5d74f 100644 --- a/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs +++ b/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs @@ -1,8 +1,12 @@ using SewerStammGen.Shared.Contracts; using SewerStammGen.Shared.Domain; using Shared.Contracts; -using StammGenerator.Commands; + using StammGenerator.Interface; +using StammGenerator.Views; +using System; +using System.Collections.Generic; +using System.Windows; using System.Windows.Input; namespace StammGenerator.ViewModel @@ -11,12 +15,26 @@ namespace StammGenerator.ViewModel { private Projekt _model; private int ProjektID; - private readonly IDataService _dataService; + private readonly IDataService _projectDataService; + private readonly IDataService _auftraggeberDataService; + private Auftraggeber auftraggeber = new Auftraggeber(); private readonly IRenavigator _renavigator; public ProjektSettingsViewModel ProjektSettingsViewModel { get; set; } public ICommand Speichern { get; set; } + public ICommand AuftraggeberChange { get; set; } + + public Auftraggeber Auftraggeber + { + get => _model.Auftraggeber; + set + { + if(_model.Auftraggeber == value) return; + _model.Auftraggeber = value; + OnPropertyChanged(); + } + } public string ProjektName @@ -68,15 +86,17 @@ namespace StammGenerator.ViewModel } } - public ProjektEditViewModel(IProjektDataService dataService, IActualState actualState, IRenavigator renavigator) + public ProjektEditViewModel(IProjektDataService projektDataService,IAuftraggeberDataService auftraggeberDataService, IActualState actualState, IRenavigator renavigator) { - _dataService = dataService; + _projectDataService = projektDataService; + _auftraggeberDataService = auftraggeberDataService; _renavigator = renavigator; ProjektID = actualState.ProjektID; _model = new Projekt(); Speichern = new RelayCommand((x) => this.SaveProject()); + AuftraggeberChange = new RelayCommand((x) => this.ChangeAuftraggeber()); this.ProjektSettingsViewModel = new ProjektSettingsViewModel(); @@ -86,10 +106,24 @@ namespace StammGenerator.ViewModel } + private void ChangeAuftraggeber() + { + var win = new AuftraggeberShow(); + win.DataContext = new AuftraggeberEditViewModel(_model.Auftraggeber); + win.Closed += AuftraggeberWin_Closed; + win.ShowDialog(); + + } + + private void AuftraggeberWin_Closed(object? sender, EventArgs e) + { + OnPropertyChanged(nameof(Auftraggeber)); + } + private async void LoadProjekt() { - _model = await _dataService.Get(ProjektID); + _model = await _projectDataService.Get(ProjektID); if(_model == null) { _model = new Projekt() @@ -104,11 +138,15 @@ namespace StammGenerator.ViewModel OnPropertyChanged(nameof(Strasse)); OnPropertyChanged(nameof(Ort)); OnPropertyChanged(nameof(ProjektSettingsViewModel)); + OnPropertyChanged(nameof(Auftraggeber)); + } private void SaveProject() { - _dataService.Update(_model); + if (_model.Auftraggeber.DataChanged) + _auftraggeberDataService.Update(_model.Auftraggeber); + _projectDataService.Update(_model); _renavigator.Renavigate(); } diff --git a/StammGenerator/Views/Auftraggeber/AuftraggeberShow.xaml b/StammGenerator/Views/Auftraggeber/AuftraggeberShow.xaml new file mode 100644 index 0000000..a3adc93 --- /dev/null +++ b/StammGenerator/Views/Auftraggeber/AuftraggeberShow.xaml @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + diff --git a/StammGenerator/Views/Auftraggeber/AuftraggeberShow.xaml.cs b/StammGenerator/Views/Auftraggeber/AuftraggeberShow.xaml.cs new file mode 100644 index 0000000..051ea9a --- /dev/null +++ b/StammGenerator/Views/Auftraggeber/AuftraggeberShow.xaml.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Shapes; + +namespace StammGenerator.Views +{ + /// + /// Interaktionslogik für AuftraggeberShow.xaml + /// + public partial class AuftraggeberShow : Window + { + public AuftraggeberShow() + { + InitializeComponent(); + } + } +} diff --git a/StammGenerator/Views/Projekt/ProjektEditView.xaml b/StammGenerator/Views/Projekt/ProjektEditView.xaml index bdab17b..2dc7685 100644 --- a/StammGenerator/Views/Projekt/ProjektEditView.xaml +++ b/StammGenerator/Views/Projekt/ProjektEditView.xaml @@ -14,35 +14,43 @@ - - + - - - - - - - - + + + + + + + + + + + + + + + -