XML Writer angefangen

This commit is contained in:
2023-04-24 23:23:35 +02:00
parent d511c74509
commit ef2c9bfe6b
9 changed files with 875 additions and 34 deletions

View File

@@ -15,34 +15,35 @@ namespace StammGenerator.Commands
{
internal class ProjectExportCommand : AsyncCommandBase
{
private readonly IActualState _actualState;
private readonly ProjektListViewModel _projektListViewModel;
//private Projekt _selectedProjekt;
private readonly IHaltungDataService _haltungDataService;
private readonly ISchachtDataService _schachtDataService;
private readonly IProjektDataService _projektDataService;
public ProjectExportCommand(IActualState actualState, IHaltungDataService haltungDataService, ISchachtDataService schachtDataService, IProjektDataService projektDataService)
public ProjectExportCommand(ProjektListViewModel projektListViewModel, IHaltungDataService haltungDataService, ISchachtDataService schachtDataService)
{
_actualState = actualState;
_projektListViewModel = projektListViewModel;
_haltungDataService = haltungDataService;
_schachtDataService = schachtDataService;
_projektDataService = projektDataService;
}
public override async Task ExecuteAsync(object? parameter)
{
Projekt prj = await _projektDataService.Get(_actualState.ProjektID);
if (_projektListViewModel.SelectedProjekt == null) return;
Projekt _selectedProjekt = _projektListViewModel.SelectedProjekt;
try
{
IExport export = ExporterFactory.Export(prj.ExportType);
IEnumerable<Kanal> haltungen = await _haltungDataService.GetAllByProjekt(prj);
IEnumerable<Schacht> schaechte = await _schachtDataService.GetAllByProjekt(prj);
IExport export = ExporterFactory.Export(_selectedProjekt.ExportType);
IEnumerable<Kanal> haltungen = await _haltungDataService.GetAllByProjekt(_selectedProjekt);
IEnumerable<Schacht> schaechte = await _schachtDataService.GetAllByProjekt(_selectedProjekt);
await export.Export(_actualState.ProjektID.ToString(), prj.Kodierungssystem, haltungen.ToList(), schaechte.ToList());
await export.Export(_selectedProjekt.Id.ToString(), _selectedProjekt.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);
MessageBoxResult result = MessageBox.Show(string.Format("Schnittstelle Export format: {0} ist nicht Implementiert", _selectedProjekt.ExportType), "Fehlende Implementation", MessageBoxButton.OK, MessageBoxImage.Exclamation);
}
}
}

View File

@@ -86,11 +86,9 @@ namespace StammGenerator.HostBuilders
{
return () => new ProjektEditViewModel(
services.GetRequiredService<IProjektDataService>(),
services.GetRequiredService<IHaltungDataService>(),
services.GetRequiredService<ISchachtDataService>(),
services.GetRequiredService<IActualState>(),
services.GetRequiredService<ViewModelDelegateRenavigator<ProjektListViewModel>>(),
services.GetRequiredService<ViewModelDelegateRenavigator<ManholeImportViewModel>>()
services.GetRequiredService<ViewModelDelegateRenavigator<ProjektListViewModel>>()
);
});
@@ -98,8 +96,11 @@ namespace StammGenerator.HostBuilders
{
return () => new ProjektListViewModel(
services.GetRequiredService<IProjektDataService>(),
services.GetRequiredService<IHaltungDataService>(),
services.GetRequiredService<ISchachtDataService>(),
services.GetRequiredService<IActualState>(),
services.GetRequiredService<ViewModelDelegateRenavigator<ProjektEditViewModel>>(),
services.GetRequiredService<IActualState>()
services.GetRequiredService<ViewModelDelegateRenavigator<ManholeImportViewModel>>()
);
});
#endregion

View File

@@ -17,8 +17,7 @@ namespace StammGenerator.ViewModel
public ProjektSettingsViewModel ProjektSettingsViewModel { get; set; }
public ICommand Speichern { get; set; }
public ICommand SchachtImportCommand { get; set; }
public ICommand DatenExportCommand { get; set; }
public string ProjektName
{
@@ -69,7 +68,7 @@ namespace StammGenerator.ViewModel
}
}
public ProjektEditViewModel(IProjektDataService dataService,IHaltungDataService haltungDataService, ISchachtDataService schachtDataService, IActualState actualState, IRenavigator renavigator, IRenavigator navigatetoImport)
public ProjektEditViewModel(IProjektDataService dataService, IActualState actualState, IRenavigator renavigator)
{
_dataService = dataService;
_renavigator = renavigator;
@@ -83,12 +82,7 @@ namespace StammGenerator.ViewModel
LoadProjekt();
SchachtImportCommand = new RelayCommand((x) =>
{
navigatetoImport.Renavigate();
});
DatenExportCommand = new ProjectExportCommand(actualState, haltungDataService, schachtDataService, dataService);
}

View File

@@ -1,4 +1,5 @@
using SewerStammGen.Shared.Contracts;
using SewerStammGen.DAL.Services.PostgresqlData;
using SewerStammGen.Shared.Contracts;
using SewerStammGen.Shared.Domain;
using StammGenerator.Commands;
using StammGenerator.Interface;
@@ -22,8 +23,9 @@ namespace StammGenerator.ViewModel
public ICommand EditCommand { get; set; }
private Projekt? _selectedProjekt;
public ICommand SchachtImportCommand { get; set; }
public ICommand DatenExportCommand { get; set; }
public Projekt? SelectedProjekt
{
@@ -39,7 +41,7 @@ namespace StammGenerator.ViewModel
}
}
public ProjektListViewModel(IProjektDataService generic, IRenavigator renavigator,IActualState actualState)
public ProjektListViewModel(IProjektDataService generic, IHaltungDataService haltungDataService, ISchachtDataService schachtDataService, IActualState actualState, IRenavigator renavigator, IRenavigator navigatetoImport)
{
_projekte = new ObservableCollection<Projekt>();
if (generic == null) throw new ArgumentNullException(nameof(generic));
@@ -50,6 +52,12 @@ namespace StammGenerator.ViewModel
EditCommand = new ProjektEditCommand(generic, actualState, renavigator, this);
LoadProjekte();
SchachtImportCommand = new RelayCommand((x) =>
{
navigatetoImport.Renavigate();
});
DatenExportCommand = new ProjectExportCommand(this, haltungDataService, schachtDataService);
}
private async void LoadProjekte()

View File

@@ -39,8 +39,6 @@
<StackPanel Grid.ColumnSpan="2" Grid.Row="4">
<Button Content="Speichern" Command="{Binding Speichern}" />
<Button Content="Schächte aus CSV Importieren" Command="{Binding SchachtImportCommand}" />
<Button Content="Projektdaten nach Schnittstelle exportieren" Command="{Binding DatenExportCommand}" />
</StackPanel>

View File

@@ -16,9 +16,11 @@
<DataGridTextColumn Header="Ort" Binding="{Binding Ort}" />
</DataGrid.Columns>
</DataGrid>
<Button Margin="2" FontSize="20" Content="Projekt Auswählen" IsEnabled="{Binding CanSelectProjekt}" Command="{Binding SelectCommand}" />
<Button Margin="2" FontSize="20" Content="Projekt Editieren" IsEnabled="{Binding CanSelectProjekt}" Command="{Binding EditCommand}" />
<Button Margin="2" FontSize="20" Content="Projekt Anlegen" Command="{Binding AddCommand}" />
<Button Margin="2" Content="Projekt Auswählen" IsEnabled="{Binding CanSelectProjekt}" Command="{Binding SelectCommand}" />
<Button Margin="2" Content="Projekt Editieren" IsEnabled="{Binding CanSelectProjekt}" Command="{Binding EditCommand}" />
<Button Margin="2" Content="Projekt Anlegen" Command="{Binding AddCommand}" />
<Button Margin="2" Content="Schächte aus CSV Importieren" IsEnabled="{Binding CanSelectProjekt}" Command="{Binding SchachtImportCommand}" />
<Button Margin="2" Content="Projektdaten nach Schnittstelle exportieren" IsEnabled="{Binding CanSelectProjekt}" Command="{Binding DatenExportCommand}" />
</StackPanel>
</Grid>
</UserControl>