From 76731c3464a452938645424b3ee65aa830c43e36 Mon Sep 17 00:00:00 2001 From: Damian Wessels Date: Mon, 24 Apr 2023 13:27:39 +0200 Subject: [PATCH] Projekteinstellungen erweitert --- SewerStammGen.Shared/Contracts/IExport.cs | 3 +- .../Commands/ProjectExportCommand.cs | 34 +++++++-- .../EqualValueToParameterConverter.cs | 7 +- .../Converters/ValueToEntConverter.cs | 26 ------- .../Converters/ValueToExportConverter.cs | 21 ----- .../AddViewModelsHostBuilderExtensions.cs | 2 + .../ViewModel/Haltung/HaltungListViewModel.cs | 4 +- .../ViewModel/Projekt/ProjektEditViewModel.cs | 4 + .../Projekt/ProjektSettingsViewModel.cs | 76 +++++++++++++++++-- .../Views/Haltung/HaltungEditView.xaml | 8 +- .../Views/Projekt/ProjektSettings.xaml | 54 ++++++------- .../Views/Schacht/SchachtEditView.xaml | 8 +- StammGenerator/Views/styles/my_controls.xaml | 37 ++++++++- .../Exporter/ExporterFactory.cs | 25 ++++++ .../Exporter/Kandis/KANDIS60.cs | 21 +++++ .../Exporter/Kandis/KANDIS_Exporter.cs | 13 ++-- .../Exporter/Kandis/KANDIS_HALTUNG60.cs | 7 +- .../Exporter/Kandis/KANDIS_SCHACHT60.cs | 4 +- .../Exporter/Kandis/KANDIS_SCHACHT60Tests.cs | 2 +- .../Importer/CSVImporterTests.cs | 2 +- 20 files changed, 242 insertions(+), 116 deletions(-) delete mode 100644 StammGenerator/Converters/ValueToEntConverter.cs delete mode 100644 StammGenerator/Converters/ValueToExportConverter.cs create mode 100644 WWTech_KanalSchnittstelle/Exporter/ExporterFactory.cs create mode 100644 WWTech_KanalSchnittstelle/Exporter/Kandis/KANDIS60.cs diff --git a/SewerStammGen.Shared/Contracts/IExport.cs b/SewerStammGen.Shared/Contracts/IExport.cs index 45e55b6..27c0e7d 100644 --- a/SewerStammGen.Shared/Contracts/IExport.cs +++ b/SewerStammGen.Shared/Contracts/IExport.cs @@ -1,4 +1,5 @@ using SewerStammGen.Shared.Domain; +using SewerStammGen.Shared.Enum; using System; using System.Collections.Generic; using System.Linq; @@ -9,6 +10,6 @@ namespace Shared.Contracts { public interface IExport { - Task Export(List haltungen, List schaechte); + Task Export(string projektname,EKodierungssystem kodierungssystem,List haltungen, List schaechte); } } diff --git a/StammGenerator/Commands/ProjectExportCommand.cs b/StammGenerator/Commands/ProjectExportCommand.cs index 13ce34f..83f9381 100644 --- a/StammGenerator/Commands/ProjectExportCommand.cs +++ b/StammGenerator/Commands/ProjectExportCommand.cs @@ -1,27 +1,49 @@ -using SewerStammGen.Shared.Domain; +using SewerStammGen.Shared.Contracts; +using SewerStammGen.Shared.Domain; using Shared.Contracts; using StammGenerator.Commands; using StammGenerator.ViewModel; +using System; using System.Collections.Generic; +using System.Diagnostics; +using System.Linq; using System.Threading.Tasks; +using System.Windows; +using WWTech_KanalSchnittstelle.Exporter; namespace StammGenerator.Commands { internal class ProjectExportCommand : AsyncCommandBase { private readonly IActualState _actualState; - private readonly IExport _export; + private readonly IHaltungDataService _haltungDataService; + private readonly ISchachtDataService _schachtDataService; + private readonly IProjektDataService _projektDataService; - public ProjectExportCommand(IActualState actualState) + public ProjectExportCommand(IActualState actualState, IHaltungDataService haltungDataService, ISchachtDataService schachtDataService, IProjektDataService projektDataService) { _actualState = actualState; - + _haltungDataService = haltungDataService; + _schachtDataService = schachtDataService; + _projektDataService = projektDataService; } public override async Task ExecuteAsync(object? parameter) { - await _export.Export(new List(), new List()); - + Projekt prj = await _projektDataService.Get(_actualState.ProjektID); + + try + { + IExport export = ExporterFactory.Export(prj.ExportType); + IEnumerable haltungen = await _haltungDataService.GetAllByProjekt(prj); + IEnumerable schaechte = await _schachtDataService.GetAllByProjekt(prj); + + await export.Export(_actualState.ProjektID.ToString(), prj.Kodierungssystem, haltungen.ToList(), schaechte.ToList()); + } + catch(NotImplementedException) + { + MessageBoxResult result = MessageBox.Show(string.Format("Schnittstelle Export format: {0} ist nicht Implementiert", prj.ExportType), "Fehlende Implementation", MessageBoxButton.OK, MessageBoxImage.Exclamation); + } } } } diff --git a/StammGenerator/Converters/EqualValueToParameterConverter.cs b/StammGenerator/Converters/EqualValueToParameterConverter.cs index f0a5d08..b20ee92 100644 --- a/StammGenerator/Converters/EqualValueToParameterConverter.cs +++ b/StammGenerator/Converters/EqualValueToParameterConverter.cs @@ -1,4 +1,6 @@ -using System; +using SewerStammGen.Shared.Enum; +using System; +using System.CodeDom; using System.Collections.Generic; using System.Diagnostics; using System.Globalization; @@ -18,6 +20,9 @@ namespace StammGenerator.Converters public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) { + if (targetType == typeof(EEntwaeserung)) return (EEntwaeserung)parameter; + if (targetType == typeof(EExportType)) return (EExportType)parameter; + if (targetType == typeof(EKodierungssystem)) return (EKodierungssystem)parameter; throw new NotImplementedException(); } } diff --git a/StammGenerator/Converters/ValueToEntConverter.cs b/StammGenerator/Converters/ValueToEntConverter.cs deleted file mode 100644 index 80a4041..0000000 --- a/StammGenerator/Converters/ValueToEntConverter.cs +++ /dev/null @@ -1,26 +0,0 @@ -using SewerStammGen.Shared.Domain; -using SewerStammGen.Shared.Enum; -using System; -using System.Collections.Generic; -using System.Globalization; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows.Data; - -namespace StammGenerator.Converters -{ - public class ValueToEntConverter : IValueConverter - { - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) - { - return value.ToString() == parameter.ToString(); - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) - { - - return (EEntwaeserung)parameter; - } - } -} diff --git a/StammGenerator/Converters/ValueToExportConverter.cs b/StammGenerator/Converters/ValueToExportConverter.cs deleted file mode 100644 index 90a7f49..0000000 --- a/StammGenerator/Converters/ValueToExportConverter.cs +++ /dev/null @@ -1,21 +0,0 @@ -using SewerStammGen.Shared.Enum; -using System; -using System.Globalization; -using System.Windows.Data; - -namespace StammGenerator.Converters -{ - public class ValueToExportConverter: IValueConverter - { - public object Convert(object value, Type targetType, object parameter, CultureInfo culture) - { - return value.ToString() == parameter.ToString(); - } - - public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) - { - - return (EExportType)parameter; - } - } -} diff --git a/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs b/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs index bd8a2b0..3eddddf 100644 --- a/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs +++ b/StammGenerator/HostBuilders/AddViewModelsHostBuilderExtensions.cs @@ -66,6 +66,8 @@ namespace StammGenerator.HostBuilders { return () => new HaltungListViewModel( services.GetRequiredService(), + services.GetRequiredService(), + services.GetRequiredService(), services.GetRequiredService(), services.GetRequiredService>() ); diff --git a/StammGenerator/ViewModel/Haltung/HaltungListViewModel.cs b/StammGenerator/ViewModel/Haltung/HaltungListViewModel.cs index 4711fef..4335711 100644 --- a/StammGenerator/ViewModel/Haltung/HaltungListViewModel.cs +++ b/StammGenerator/ViewModel/Haltung/HaltungListViewModel.cs @@ -21,7 +21,7 @@ namespace StammGenerator.ViewModel public ICommand AddCommand { get; set; } public ICommand ExportCommand { get; set; } - public HaltungListViewModel(IHaltungDataService haltungDataService, IActualState actualState, IRenavigator renavigator ) + public HaltungListViewModel(IHaltungDataService haltungDataService, ISchachtDataService schachtDataService, IProjektDataService projektDataService, IActualState actualState, IRenavigator renavigator ) { _haltungen = new ObservableCollection(); _haltungDataService = haltungDataService; @@ -31,7 +31,7 @@ namespace StammGenerator.ViewModel EditCommand = new HaltungEditCommand(actualState, renavigator, this); AddCommand = new HaltungAddCommand(actualState, renavigator); - ExportCommand = new ProjectExportCommand(actualState); + ExportCommand = new ProjectExportCommand(actualState, haltungDataService, schachtDataService,projektDataService); LoadHaltungen(); } diff --git a/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs b/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs index b30312a..ec406ae 100644 --- a/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs +++ b/StammGenerator/ViewModel/Projekt/ProjektEditViewModel.cs @@ -75,6 +75,7 @@ namespace StammGenerator.ViewModel Speichern = new RelayCommand((x) => this.SaveProject()); this.ProjektSettingsViewModel = new ProjektSettingsViewModel(); + LoadProjekt(); } @@ -89,10 +90,13 @@ namespace StammGenerator.ViewModel Auftraggeber = new Auftraggeber(), }; } + + this.ProjektSettingsViewModel.Projekt = _model; OnPropertyChanged(nameof(ProjektName)); OnPropertyChanged(nameof(Erstelldatum)); OnPropertyChanged(nameof(Strasse)); OnPropertyChanged(nameof(Ort)); + OnPropertyChanged(nameof(ProjektSettingsViewModel)); } private void SaveProject() diff --git a/StammGenerator/ViewModel/Projekt/ProjektSettingsViewModel.cs b/StammGenerator/ViewModel/Projekt/ProjektSettingsViewModel.cs index 32af51c..407a197 100644 --- a/StammGenerator/ViewModel/Projekt/ProjektSettingsViewModel.cs +++ b/StammGenerator/ViewModel/Projekt/ProjektSettingsViewModel.cs @@ -1,4 +1,5 @@ -using SewerStammGen.Shared.Enum; +using SewerStammGen.Shared.Domain; +using SewerStammGen.Shared.Enum; using System; using System.Collections.Generic; using System.Linq; @@ -12,31 +13,60 @@ namespace StammGenerator.ViewModel public class ProjektSettingsViewModel : BaseViewModel { - private EExportType _selectedNorm; private Visibility _xmlVisible; private Visibility _kandisVisible; + private ESelectedNorm _selectedNorm; + private EKodierungssystem _selectedKodier; + private Projekt _projekt = new Projekt(); - public EExportType SelectedNorm + + + public ESelectedNorm SelectedNorm { get => _selectedNorm; set { - if(value != _selectedNorm) + if(_selectedNorm != value) { _selectedNorm = value; + OnPropertyChanged(); + } + } + } + public EExportType SelectedExport + { + get => _projekt.ExportType; + set + { + if(value != _projekt.ExportType) + { + _projekt.ExportType = value; - if (_selectedNorm == EExportType.KANDIS) + if (_projekt.ExportType == EExportType.KANDIS) { KandisVisible = Visibility.Visible; XmlVisible = Visibility.Collapsed; } - else if(_selectedNorm == EExportType.XML) + else if(_projekt.ExportType == EExportType.XML) { XmlVisible = Visibility.Visible; KandisVisible = Visibility.Collapsed; } OnPropertyChanged(); + + } + } + } + public EKodierungssystem SelectedKodier + { + get => _selectedKodier; + set + { + if(_selectedKodier != value) + { + _selectedKodier = value; + OnPropertyChanged(); } } } @@ -67,11 +97,41 @@ namespace StammGenerator.ViewModel } } + + public Projekt Projekt + { + get => _projekt; + set + { + if(value != _projekt) + { + _projekt = value; + //SelectedExport = _projekt.ExportType; + if(_projekt.ExportType == EExportType.KANDIS) + { + _kandisVisible = Visibility.Visible; + _xmlVisible = Visibility.Collapsed; + } + else if(_projekt.ExportType == EExportType.XML) + { + _xmlVisible = Visibility.Visible; + _kandisVisible = Visibility.Collapsed; + } + OnPropertyChanged(); + OnPropertyChanged(nameof(SelectedNorm)); + OnPropertyChanged(nameof(SelectedExport)); + OnPropertyChanged(nameof(KandisVisible)); + OnPropertyChanged(nameof(XmlVisible)); + } + } + } + public ProjektSettingsViewModel() { - SelectedNorm = EExportType.XML; - + //SelectedExport = EExportType.XML; + //this.Projekt = new Projekt(); } + } } diff --git a/StammGenerator/Views/Haltung/HaltungEditView.xaml b/StammGenerator/Views/Haltung/HaltungEditView.xaml index 604d037..62a9d10 100644 --- a/StammGenerator/Views/Haltung/HaltungEditView.xaml +++ b/StammGenerator/Views/Haltung/HaltungEditView.xaml @@ -9,7 +9,7 @@ mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> - + @@ -59,9 +59,9 @@ - - - + + + diff --git a/StammGenerator/Views/Projekt/ProjektSettings.xaml b/StammGenerator/Views/Projekt/ProjektSettings.xaml index ceda095..c2a8afb 100644 --- a/StammGenerator/Views/Projekt/ProjektSettings.xaml +++ b/StammGenerator/Views/Projekt/ProjektSettings.xaml @@ -10,10 +10,10 @@ mc:Ignorable="d" d:DesignHeight="1357.579" d:DesignWidth="820.842"> - + - + @@ -23,45 +23,39 @@ - - + + - - + + - - - - - - DIN - EN 13508 - 2: 2003 / Ohne nationale Festlegung - DIN - EN 13508 - 2: 2003 / Nationale Festlegung DWA M 149-2 - DIN - EN 13508 - 2: 2003 / andere nationale Festlegung (Bemerkung erforderlich) - ISYBAU 2001 - ISYBAU 1996 - anderes Kodiersystem (Bemerkung erfolrderlich) - DIN - EN 13508 - 2: 2003 / Nationale Festlegung Arbeitshilfen Abwasser - DIN - EN 13508 - 2: 2011 / Ohne nationale Festlegung - DIN - EN 13508 - 2: 2011 / Nationale Festlegung DWA M 149 - 2 - DIN - EN 13508 - 2: 2011 / Nationale Festlegung Arbeitshilfen Abwasser - - - - Arbeitshilfen Abwasser (ISYBAU 1996/2001) - Arbeitshilfen Abwasser (ISYBAU 2006) - Sonstige Festlegungen - keine Angaben - Arbeitshilfen Abwasser (ISYBAU 2013) - Arbeitshilfen Abwasser (ISYBAU 2017) + + DIN - EN 13508 - 2: 2003 / Ohne nationale Festlegung + DIN - EN 13508 - 2: 2003 / Nationale Festlegung DWA M 149-2 + DIN - EN 13508 - 2: 2003 / andere nationale Festlegung (Bemerkung erforderlich) + ISYBAU 2001 + ISYBAU 1996 + anderes Kodiersystem (Bemerkung erfolrderlich) + DIN - EN 13508 - 2: 2003 / Nationale Festlegung Arbeitshilfen Abwasser + DIN - EN 13508 - 2: 2011 / Ohne nationale Festlegung + DIN - EN 13508 - 2: 2011 / Nationale Festlegung DWA M 149 - 2 + DIN - EN 13508 - 2: 2011 / Nationale Festlegung Arbeitshilfen Abwasser +