using System.Windows; using Livia.Models.Data; using Livia.Utility.DependencyInjection; using Livia.ViewModels; using Livia.Views.Utility; using Microsoft.Extensions.DependencyInjection; using Ookii.Dialogs.Wpf; namespace Livia.Views.Controls; /// /// Interaction logic for DataBlockTableControl.xaml /// public partial class DataBlockTableControl { private readonly IWarningSystem _warningSystem; public DataBlockTableControl() { _warningSystem = ActivatorUtilities.GetServiceOrCreateInstance(ServiceProviderFactory.ServiceProvider); InitializeComponent(); } private async void LoadDataButtonClick(object sender, RoutedEventArgs e) { ServerJobData? data = ViewUtility.GetDataContextFromSender(sender); if (data == null || DataContext is not DataBlockTableViewModel viewModel) return; await viewModel.LoadData(data).ConfigureAwait(false); } private void CheckReportsButtonClick(object sender, RoutedEventArgs e) { ServerJobData? data = ViewUtility.GetDataContextFromSender(sender); if (data == null || data.Key == null) return; CheckReportDialog checkReportDialog = new(data.Key, false, data.PatientName ?? ""); checkReportDialog.ShowDialog(); } private async void DownloadArchiveButtonClick(object sender, RoutedEventArgs e) { ServerJobData? data = ViewUtility.GetDataContextFromSender(sender); if (data == null || DataContext is not DataBlockTableViewModel viewModel) return; VistaSaveFileDialog dialog = new() { OverwritePrompt = true, CheckFileExists = true, CheckPathExists = true, AddExtension = true, FileName = $"{data.PatientName}_archive", Filter = "zip|*.zip", DefaultExt = ".zip" }; if (!(dialog.ShowDialog() ?? false)) return; ProgressBarDialog progressBarDialog = new(true); progressBarDialog.Show(); await progressBarDialog.SetTask(viewModel.DownloadArchive(data, dialog.FileName, progressBarDialog.CancellationToken)).ConfigureAwait(false); } private async void DownloadSortedButtonClick(object sender, RoutedEventArgs e) { ServerJobData? data = ViewUtility.GetDataContextFromSender(sender); if (data == null || DataContext is not DataBlockTableViewModel viewModel) return; VistaSaveFileDialog dialog = new() { OverwritePrompt = true, CheckFileExists = true, CheckPathExists = true, AddExtension = true, FileName = $"{data.PatientName}_sort", Filter = "zip|*.zip", DefaultExt = ".zip" }; if (!(dialog.ShowDialog() ?? false)) return; ProgressBarDialog progressBarDialog = new(true); progressBarDialog.Show(); await progressBarDialog.SetTask(viewModel.DownloadSorted(data, dialog.FileName, progressBarDialog.CancellationToken)).ConfigureAwait(false); } private async void CancelButtonClick(object sender, RoutedEventArgs e) { ServerJobData? data = ViewUtility.GetDataContextFromSender(sender); if (data == null) return; bool confirm = _warningSystem.ShowDialog(WarningWindowKind.Confirmation, true, "ConfirmCancelWarning") ?? false; if (!confirm) return; data.SetJobCanceled(); await ((DataBlockTableViewModel)DataContext).CancelData(data); } private void SelectSeriesButtonClick(object sender, RoutedEventArgs e) { ServerJobData? data = ViewUtility.GetDataContextFromSender(sender); if (data?.Key == null) return; SelectSeriesDialog dialog = new(data.Key); dialog.Show(); } private async void DeleteDataButtonClick(object sender, RoutedEventArgs e) { ServerJobData? data = ViewUtility.GetDataContextFromSender(sender); if (data == null || DataContext is not DataBlockTableViewModel viewModel) return; bool confirm = _warningSystem.ShowDialog(WarningWindowKind.Confirmation, true, "ConfirmDeleteWarning") ?? false; if (!confirm) return; ProgressBarDialog progressBarDialog = new(true); progressBarDialog.Show(); await progressBarDialog.SetTask(viewModel.DeleteData(data, progressBarDialog.CancellationToken)).ConfigureAwait(false); } private async void HistoryListDeleteHistoryButtonClick(object sender, RoutedEventArgs e) { DataHistory? data = ViewUtility.GetDataContextFromSender(sender); if (data == null || DataContext is not DataBlockTableViewModel viewModel) return; bool confirm = _warningSystem.ShowDialog(WarningWindowKind.Confirmation, true, "ConfirmDeleteWarning") ?? false; if (!confirm) return; ProgressBarDialog progressBarDialog = new(true); progressBarDialog.Show(); await progressBarDialog.SetTask(viewModel.DeleteHistory(data, progressBarDialog.CancellationToken)).ConfigureAwait(false); } }