From 33f9da37982a2cb1b3a0e8f00fe115323f035466 Mon Sep 17 00:00:00 2001 From: Damian Wessels Date: Mon, 3 Jul 2023 19:15:57 +0200 Subject: [PATCH] AuftraggeberListview intial --- .../PostgresqlData/HaltungDataService.cs | 19 ++----- .../PostgresqlData/ProjektDataService.cs | 10 ++-- .../Commands/AuftraggeberAddCommand.cs | 17 ++++++ .../Commands/AuftraggeberEditCommand.cs | 17 ++++++ StammGenerator/Enum/EMainWindowViewType.cs | 1 + .../AddViewModelsHostBuilderExtensions.cs | 9 ++++ StammGenerator/MainWindow.xaml | 4 ++ StammGenerator/StammGenerator.csproj.user | 6 +++ ...del.cs => AuftraggeberEditFrmViewModel.cs} | 4 +- .../Auftraggeber/AuftraggeberListViewModel.cs | 52 +++++++++++++++++++ .../Factories/MainWindowViewModelFactory.cs | 7 ++- .../ViewModel/Projekt/ProjektEditViewModel.cs | 4 +- .../Auftraggeber/AuftraggeberListView.xaml | 26 ++++++++++ .../Auftraggeber/AuftraggeberListView.xaml.cs | 28 ++++++++++ .../Views/MainWindowNavigationBar.xaml | 1 + .../Views/Schacht/SchachtImportView.xaml | 6 +-- 16 files changed, 184 insertions(+), 27 deletions(-) create mode 100644 StammGenerator/Commands/AuftraggeberAddCommand.cs create mode 100644 StammGenerator/Commands/AuftraggeberEditCommand.cs rename StammGenerator/ViewModel/Auftraggeber/{AuftraggeberEditViewModel.cs => AuftraggeberEditFrmViewModel.cs} (95%) create mode 100644 StammGenerator/ViewModel/Auftraggeber/AuftraggeberListViewModel.cs create mode 100644 StammGenerator/Views/Auftraggeber/AuftraggeberListView.xaml create mode 100644 StammGenerator/Views/Auftraggeber/AuftraggeberListView.xaml.cs diff --git a/SewerStammGen.DAL/Services/PostgresqlData/HaltungDataService.cs b/SewerStammGen.DAL/Services/PostgresqlData/HaltungDataService.cs index c1438c3..981e191 100644 --- a/SewerStammGen.DAL/Services/PostgresqlData/HaltungDataService.cs +++ b/SewerStammGen.DAL/Services/PostgresqlData/HaltungDataService.cs @@ -19,10 +19,8 @@ namespace SewerStammGen.DAL.Services.PostgresqlData public async Task Create(Kanal entity) { - string command = "INSERT INTO " + tableName + " (" + - "objektbezeichnung,ref_startschacht_id,ref_endschacht_id," + - "dn,material,haltungslaenge, entwaesserung,ref_projekt_id) VALUES " + - "(@1,@2,@3,@4,@5,@6,@7,@8) RETURNING haltung_id"; + string command = $"INSERT INTO {tableName} (objektbezeichnung,ref_startschacht_id,ref_endschacht_id,dn,material,haltungslaenge, entwaesserung,ref_projekt_id)" + + $"VALUES (@1,@2,@3,@4,@5,@6,@7,@8) RETURNING haltung_id"; using (var cmd = new NpgsqlCommand(command, conn)) { cmd.Parameters.AddWithValue("1", entity.Objektbezeichnung); @@ -56,7 +54,7 @@ namespace SewerStammGen.DAL.Services.PostgresqlData ISchachtDataService schachtDataService = new SchachtDataService(connString); IEnumerable schaechte = await schachtDataService.GetAllByProjekt(projektID); - string command = "SELECT * FROM " + tableName + " WHERE ref_projekt_id = @1"; + string command = $"SELECT * FROM {tableName} WHERE ref_projekt_id = @1"; using (var cmd = new NpgsqlCommand(command, conn)) { cmd.Parameters.AddWithValue("1", projektID); @@ -103,15 +101,8 @@ namespace SewerStammGen.DAL.Services.PostgresqlData public async Task Update(Kanal entity) { - string command = "UPDATE " + tableName + " SET " + - " objektbezeichnung=@1, " + - " ref_startschacht_id=@2, " + - " ref_endschacht_id=@3, " + - " dn=@4, " + - " material=@5, " + - " haltungslaenge=@6, " + - " entwaesserung=@7 " + - " WHERE haltung_id = @8"; + string command = $"UPDATE {tableName} SET objektbezeichnung=@1, " + + $"ref_startschacht_id=@2, ref_endschacht_id=@3, dn=@4, material=@5, haltungslaenge=@6, entwaesserung=@7 WHERE haltung_id = @8"; using(var cmd = new NpgsqlCommand(command,conn)) { cmd.Parameters.AddWithValue("1", entity.Objektbezeichnung); diff --git a/SewerStammGen.DAL/Services/PostgresqlData/ProjektDataService.cs b/SewerStammGen.DAL/Services/PostgresqlData/ProjektDataService.cs index f85e80e..7f0faed 100644 --- a/SewerStammGen.DAL/Services/PostgresqlData/ProjektDataService.cs +++ b/SewerStammGen.DAL/Services/PostgresqlData/ProjektDataService.cs @@ -21,8 +21,8 @@ namespace SewerStammGen.DAL.Services.PostgresqlData public async Task Create(Projekt entity) { - string command = "INSERT INTO "+tableName+" (projektname, erstelldatum, strasse, ort, exporttype, kodierungssystem,ref_auftraggeber_id) " + - "VALUES(@1,@2,@3,@4,@5,@6,@7) RETURNING projekt_id"; + string command = $"INSERT INTO {tableName} (projektname, erstelldatum, strasse, ort, exporttype, kodierungssystem,ref_auftraggeber_id) " + + $"VALUES(@1,@2,@3,@4,@5,@6,@7) RETURNING projekt_id"; if (entity.Auftraggeber.Id == 0) { @@ -61,7 +61,7 @@ namespace SewerStammGen.DAL.Services.PostgresqlData { Projekt result = new Projekt(); IAuftraggeberDataService auftraggeberDataService = new AuftraggeberDataService(connString); - using (var cmd = new NpgsqlCommand($"SELECT * FROM "+tableName+" WHERE projekt_id = @1", conn)) + using (var cmd = new NpgsqlCommand($"SELECT * FROM {tableName} WHERE projekt_id = @1", conn)) { cmd.Parameters.AddWithValue("1", id); using var reader = await cmd.ExecuteReaderAsync(); @@ -93,7 +93,7 @@ namespace SewerStammGen.DAL.Services.PostgresqlData IEnumerable auftraggebers = await auftraggeberDataService.GetAll(); List result = new List(); - using (var cmd = new NpgsqlCommand($"SELECT * FROM " + tableName, conn)) + using (var cmd = new NpgsqlCommand($"SELECT * FROM {tableName}", conn)) using (var reader = await cmd.ExecuteReaderAsync()) { while (reader.Read()) @@ -108,7 +108,7 @@ namespace SewerStammGen.DAL.Services.PostgresqlData public async Task Update(Projekt entity) { - string command = "UPDATE "+tableName+ " SET projektname=@1, erstelldatum=@2, strasse=@3, ort=@4, exporttype=@5, kodierungssystem=@6,ref_auftraggeber_id=@7 WHERE projekt_id = @8"; + string command = $"UPDATE {tableName} SET projektname=@1, erstelldatum=@2, strasse=@3, ort=@4, exporttype=@5, kodierungssystem=@6,ref_auftraggeber_id=@7 WHERE projekt_id = @8"; using (var cmd = new NpgsqlCommand(command, conn)) { cmd.Parameters.AddWithValue("1", entity.Projektname); diff --git a/StammGenerator/Commands/AuftraggeberAddCommand.cs b/StammGenerator/Commands/AuftraggeberAddCommand.cs new file mode 100644 index 0000000..486e9c9 --- /dev/null +++ b/StammGenerator/Commands/AuftraggeberAddCommand.cs @@ -0,0 +1,17 @@ +using StammGenerator.Interface; +using StammGenerator.ViewModel; +using System.Threading.Tasks; + +namespace StammGenerator.Commands +{ + internal class AuftraggeberAddCommand: AsyncCommandBase + { + private readonly IActualState actualState; + private readonly IRenavigator renavigator; + + public override Task ExecuteAsync(object? parameter) + { + throw new System.NotImplementedException(); + } + } +} diff --git a/StammGenerator/Commands/AuftraggeberEditCommand.cs b/StammGenerator/Commands/AuftraggeberEditCommand.cs new file mode 100644 index 0000000..0bfa0a6 --- /dev/null +++ b/StammGenerator/Commands/AuftraggeberEditCommand.cs @@ -0,0 +1,17 @@ +using StammGenerator.Interface; +using StammGenerator.ViewModel; +using System.Threading.Tasks; + +namespace StammGenerator.Commands +{ + internal class AuftraggeberEditCommand : AsyncCommandBase + { + private readonly IActualState actualState; + private readonly IRenavigator renavigator; + + public override Task ExecuteAsync(object? parameter) + { + throw new System.NotImplementedException(); + } + } +} diff --git a/StammGenerator/Enum/EMainWindowViewType.cs b/StammGenerator/Enum/EMainWindowViewType.cs index 21d44ff..82fb5ed 100644 --- a/StammGenerator/Enum/EMainWindowViewType.cs +++ b/StammGenerator/Enum/EMainWindowViewType.cs @@ -10,6 +10,7 @@ namespace StammGenerator.Enum { Home, ProjectList, + AuftraggeberList, SchachtList, SchachtEdit, HaltungList, diff --git a/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs b/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs index e2b2736..ec2c165 100644 --- a/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs +++ b/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs @@ -60,6 +60,15 @@ namespace StammGenerator.HostBuilders }); #endregion + #region Auftraggeber + services.AddSingleton>(services => + { + return () => new AuftraggeberListViewModel( + services.GetRequiredService() + ); + }); + #endregion + #region Haltungen services.AddSingleton>(services => { diff --git a/StammGenerator/MainWindow.xaml b/StammGenerator/MainWindow.xaml index 960f65e..8882e69 100644 --- a/StammGenerator/MainWindow.xaml +++ b/StammGenerator/MainWindow.xaml @@ -31,6 +31,10 @@ + + + + diff --git a/StammGenerator/StammGenerator.csproj.user b/StammGenerator/StammGenerator.csproj.user index 3a6dc89..9f1ccde 100644 --- a/StammGenerator/StammGenerator.csproj.user +++ b/StammGenerator/StammGenerator.csproj.user @@ -7,6 +7,9 @@ + + Code + Code @@ -45,6 +48,9 @@ Designer + + Designer + Designer diff --git a/StammGenerator/ViewModel/Auftraggeber/AuftraggeberEditViewModel.cs b/StammGenerator/ViewModel/Auftraggeber/AuftraggeberEditFrmViewModel.cs similarity index 95% rename from StammGenerator/ViewModel/Auftraggeber/AuftraggeberEditViewModel.cs rename to StammGenerator/ViewModel/Auftraggeber/AuftraggeberEditFrmViewModel.cs index 4a6a868..4cda17e 100644 --- a/StammGenerator/ViewModel/Auftraggeber/AuftraggeberEditViewModel.cs +++ b/StammGenerator/ViewModel/Auftraggeber/AuftraggeberEditFrmViewModel.cs @@ -11,7 +11,7 @@ using System.Windows.Input; namespace StammGenerator.ViewModel { - class AuftraggeberEditViewModel : BaseViewModel + class AuftraggeberEditFrmViewModel : BaseViewModel { Auftraggeber _model; public string Name @@ -110,7 +110,7 @@ namespace StammGenerator.ViewModel base.OnPropertyChanged(propertyName); } - public AuftraggeberEditViewModel(Auftraggeber model, IAuftraggeberDataService auftraggeberDataService) + public AuftraggeberEditFrmViewModel(Auftraggeber model, IAuftraggeberDataService auftraggeberDataService) { _model = model; _auftraggeberDataService = auftraggeberDataService; diff --git a/StammGenerator/ViewModel/Auftraggeber/AuftraggeberListViewModel.cs b/StammGenerator/ViewModel/Auftraggeber/AuftraggeberListViewModel.cs new file mode 100644 index 0000000..cfa1f41 --- /dev/null +++ b/StammGenerator/ViewModel/Auftraggeber/AuftraggeberListViewModel.cs @@ -0,0 +1,52 @@ +using SewerStammGen.Shared.Contracts; +using SewerStammGen.Shared.Domain; +using StammGenerator.Commands; +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Input; + +namespace StammGenerator.ViewModel +{ + public class AuftraggeberListViewModel : BaseViewModel + { + private readonly ObservableCollection _auftraggeber; + private readonly IAuftraggeberDataService _auftraggeberDataService; + + public Auftraggeber? SelectedAuftraggeber { get; set; } + public ObservableCollection Auftraggeber { get => _auftraggeber; } + public ICommand AddCommand { get; set; } + public ICommand EditCommand { get; set; } + + public AuftraggeberListViewModel(IAuftraggeberDataService auftraggeberDataService) + { + _auftraggeber = new ObservableCollection(); + _auftraggeberDataService = auftraggeberDataService; + + AddCommand = new AuftraggeberAddCommand(); + EditCommand = new AuftraggeberEditCommand(); + + LoadAuftraggeber(); + } + + + + private async void LoadAuftraggeber() + { + var auftraggeber = await _auftraggeberDataService.GetAll(); + InitCollection(_auftraggeber, auftraggeber); + } + + private void InitCollection(ObservableCollection dest, IEnumerable source) + { + dest.Clear(); + foreach(var sourceItem in source) + { + dest.Add(sourceItem); + } + } + } +} diff --git a/StammGenerator/ViewModel/Factories/MainWindowViewModelFactory.cs b/StammGenerator/ViewModel/Factories/MainWindowViewModelFactory.cs index 6657020..1a80abf 100644 --- a/StammGenerator/ViewModel/Factories/MainWindowViewModelFactory.cs +++ b/StammGenerator/ViewModel/Factories/MainWindowViewModelFactory.cs @@ -17,6 +17,7 @@ namespace StammGenerator.ViewModel.Factories private CreateViewModel _createHaltungListViewModel; //private CreateViewModel _createSewerConnectorViewModel; private CreateViewModel _createProjektListViewModel; + private CreateViewModel _createAuftraggeberListViewModel; public MainWindowViewModelFactory( CreateViewModel createHomeViewModel, @@ -24,7 +25,8 @@ namespace StammGenerator.ViewModel.Factories CreateViewModel createManholeListViewModel, CreateViewModel createHaltungListViewModel, - CreateViewModel createProjektListViewModel + CreateViewModel createProjektListViewModel, + CreateViewModel createAuftraggeberListViewModel ) { _createHomeViewModel = createHomeViewModel; @@ -33,6 +35,7 @@ namespace StammGenerator.ViewModel.Factories _createProjektListViewModel = createProjektListViewModel; _createManholeListViewModel = createManholeListViewModel; _createHaltungListViewModel = createHaltungListViewModel; + _createAuftraggeberListViewModel = createAuftraggeberListViewModel; } public BaseViewModel CreateViewModel(EMainWindowViewType viewType) @@ -49,6 +52,8 @@ namespace StammGenerator.ViewModel.Factories case EMainWindowViewType.ProjectList: return _createProjektListViewModel(); + case EMainWindowViewType.AuftraggeberList: return _createAuftraggeberListViewModel(); + default: throw new NotImplementedException(); } diff --git a/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs b/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs index f80924b..363b2ef 100644 --- a/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs +++ b/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs @@ -112,7 +112,7 @@ namespace StammGenerator.ViewModel private void ChangeAuftraggeber() { var win = new AuftraggeberShow(); - win.DataContext = new AuftraggeberEditViewModel(_model.Auftraggeber, _auftraggeberDataService); + win.DataContext = new AuftraggeberEditFrmViewModel(_model.Auftraggeber, _auftraggeberDataService); win.Closed += AuftraggeberWin_Closed; win.ShowDialog(); @@ -122,7 +122,7 @@ namespace StammGenerator.ViewModel { AuftraggeberShow? shw = sender as AuftraggeberShow; if (shw == null) return; - AuftraggeberEditViewModel? mdl = shw.DataContext as AuftraggeberEditViewModel; + AuftraggeberEditFrmViewModel? mdl = shw.DataContext as AuftraggeberEditFrmViewModel; if (mdl == null) return; if (mdl.SelectedAuftraggber == null) return; diff --git a/StammGenerator/Views/Auftraggeber/AuftraggeberListView.xaml b/StammGenerator/Views/Auftraggeber/AuftraggeberListView.xaml new file mode 100644 index 0000000..275688b --- /dev/null +++ b/StammGenerator/Views/Auftraggeber/AuftraggeberListView.xaml @@ -0,0 +1,26 @@ + + + + + + + + + + + + +