123 lines
3.7 KiB
C#
123 lines
3.7 KiB
C#
using System.ComponentModel;
|
|
using System.Windows;
|
|
using System.Windows.Controls;
|
|
using System.Windows.Input;
|
|
using Livia.Models.Data;
|
|
using Livia.Utility.DependencyInjection;
|
|
using Livia.ViewModels;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.Logging;
|
|
using Ookii.Dialogs.Wpf;
|
|
|
|
namespace Livia.Views;
|
|
|
|
/// <summary>
|
|
/// Interaction logic for CheckReportDialog.xaml
|
|
/// </summary>
|
|
public partial class CheckReportDialog
|
|
{
|
|
private readonly ILogger _logger;
|
|
private readonly CheckReportWindowViewModel _viewModel;
|
|
private string? _patientName;
|
|
|
|
public CheckReportDialog(string dataKey, bool showDeleteButton = true, string patientName = "")
|
|
{
|
|
_viewModel = ActivatorUtilities.CreateInstance<CheckReportWindowViewModel>(ServiceProviderFactory.ServiceProvider);
|
|
DataContext = _viewModel;
|
|
_viewModel.OnRequestClose += (_, _) => Close();
|
|
InitializeComponent();
|
|
_patientName = patientName;
|
|
Task.FromResult(_viewModel.LoadReportData(dataKey, showDeleteButton));
|
|
_logger = ActivatorUtilities.GetServiceOrCreateInstance<ILogger>(ServiceProviderFactory.ServiceProvider);
|
|
}
|
|
|
|
private void WindowClosing(object sender, CancelEventArgs e)
|
|
{
|
|
_viewModel.Dispose();
|
|
}
|
|
|
|
private async void DeleteReportButtonClick(object sender, RoutedEventArgs e)
|
|
{
|
|
ReportItem? data = GetDataFromSender(sender);
|
|
if (data == null)
|
|
return;
|
|
|
|
try
|
|
{
|
|
await _viewModel.DeleteReport(data.Id);
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
_logger.LogError(exception, $"Error DeleteReport, Id = {data.Id}");
|
|
}
|
|
}
|
|
|
|
private async void DownloadReportButtonClick(object sender, RoutedEventArgs e)
|
|
{
|
|
ReportItem? data = GetDataFromSender(sender);
|
|
if (data == null)
|
|
return;
|
|
|
|
string name = _viewModel.PatientInfoManager.AnonymousMode ? "Anonymous" : _viewModel.PatientInfoManager.PatientName;
|
|
if (!string.IsNullOrEmpty(_patientName)) name = _patientName;
|
|
VistaSaveFileDialog dialog = new()
|
|
{
|
|
OverwritePrompt = true,
|
|
CheckFileExists = true,
|
|
CheckPathExists = true,
|
|
AddExtension = true,
|
|
FileName = $"{name}_{data.Title}",
|
|
Filter = "pdf|*.pdf",
|
|
DefaultExt = ".pdf"
|
|
};
|
|
|
|
if (!(dialog.ShowDialog() ?? false))
|
|
return;
|
|
|
|
try
|
|
{
|
|
await _viewModel.DownloadReport(data.Id, dialog.FileName);
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
_logger.LogError(exception, $"Error DownloadReport, Id = {data.Id}, FileName = {dialog.FileName}");
|
|
}
|
|
}
|
|
|
|
private async void PushReportButtonClick(object sender, RoutedEventArgs e)
|
|
{
|
|
ReportItem? data = GetDataFromSender(sender);
|
|
if (data == null)
|
|
return;
|
|
await _viewModel.PushReport(data.Id);
|
|
}
|
|
|
|
private static ReportItem? GetDataFromSender(object sender)
|
|
{
|
|
return (sender as Button)?.DataContext as ReportItem;
|
|
}
|
|
|
|
private void TitleBarMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
|
{
|
|
try
|
|
{
|
|
DragMove();
|
|
}
|
|
catch (Exception exception)
|
|
{
|
|
_logger.LogError(exception, "Error dragging window, sender = {sender}, event = {event}", sender, e);
|
|
}
|
|
}
|
|
|
|
private void CancelButtonClick(object sender, RoutedEventArgs e)
|
|
{
|
|
_viewModel.Cancel();
|
|
}
|
|
|
|
public async Task LoadReportData(string dataKey, bool showDeleteButton = true, string patientName = "")
|
|
{
|
|
_patientName = patientName;
|
|
await _viewModel.LoadReportData(dataKey, showDeleteButton);
|
|
}
|
|
|
|
} |