Files
DMS/DMS.WPF/ViewModels/Dialogs/ImportExcelDialogViewModel.cs

79 lines
2.1 KiB
C#

using System.Collections;
using System.Collections.ObjectModel;
using System.Linq;
using AutoMapper;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using DMS.Core.Interfaces.Services;
using DMS.Core.Models;
using DMS.WPF.Interfaces;
using DMS.WPF.Services;
using DMS.WPF.ItemViewModel;
using System.Threading.Tasks;
namespace DMS.WPF.ViewModels.Dialogs;
public partial class ImportExcelDialogViewModel : DialogViewModelBase<List<VariableItem>>
{
private readonly IMapper _mapper;
private readonly IExcelService _excelService;
private readonly INotificationService _notificationService;
[ObservableProperty]
private string? _filePath;
[ObservableProperty]
private List<Variable> _variables = new();
[ObservableProperty]
private ObservableCollection<VariableItem> _variableItemViewModels ;
[ObservableProperty]
private IList _selectedVariables = new ArrayList();
public ImportExcelDialogViewModel(IMapper mapper,IExcelService excelService, INotificationService notificationService)
{
_mapper = mapper;
_excelService = excelService;
_notificationService = notificationService;
VariableItemViewModels = new();
}
partial void OnFilePathChanged(string? value)
{
if (string.IsNullOrEmpty(value))
{
return;
}
try
{
Variables = _excelService.ImprotFromTiaVariableTable(value);
VariableItemViewModels=new ObservableCollection<VariableItem>(_mapper.Map<List<VariableItem>>(Variables));
}
catch (System.Exception ex)
{
_notificationService.ShowError($"从Excel文件中读取变量时发生了错误:{ex.Message}",ex);
}
}
[RelayCommand]
private async Task ImportAll()
{
await Close(VariableItemViewModels.ToList());
}
[RelayCommand]
private async Task ImportSelected()
{
var selected = SelectedVariables.Cast<VariableItem>().ToList();
await Close(selected);
}
[RelayCommand]
private async Task CancleButton()
{
await Close(null);
}
}