Files
SewerGenerator/StammGenerator/Commands/ProjectExportCommand.cs

50 lines
2.0 KiB
C#

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 IHaltungDataService _haltungDataService;
private readonly ISchachtDataService _schachtDataService;
private readonly IProjektDataService _projektDataService;
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)
{
Projekt prj = await _projektDataService.Get(_actualState.ProjektID);
try
{
IExport export = ExporterFactory.Export(prj.ExportType);
IEnumerable<Kanal> haltungen = await _haltungDataService.GetAllByProjekt(prj);
IEnumerable<Schacht> 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);
}
}
}
}