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 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); } } } }