2025-04-07 23:25:45 +08:00

100 lines
3.5 KiB
C#

using System.Collections.ObjectModel;
using Seyounth.Hyosung.UI.Models;
using System.Windows.Media;
using CommunityToolkit.Mvvm.Messaging;
using Seyounth.Hyosung.Data.Models;
using Seyounth.Hyosung.Data.Services;
using Wpf.Ui.Controls;
namespace Seyounth.Hyosung.UI.ViewModels.Pages
{
public partial class DataViewModel : ObservableObject, INavigationAware
{
public class SavePalletCompletedMessage;
[ObservableProperty] private ObservableCollection<Variety> _varieties;
[ObservableProperty] private ObservableCollection<Pallet> _pallets;
[ObservableProperty] private ObservableCollection<Pallet> _honeyPallets = new();
[ObservableProperty] private ObservableCollection<Pallet> _paperPallets = new();
[ObservableProperty] private ObservableCollection<Pallet> _trays = new();
private readonly IVarietyService _varietyService;
private readonly IPalletService _palletService;
public DataViewModel(IVarietyService varietyService, IPalletService palletService)
{
_varietyService = varietyService;
_palletService = palletService;
}
public void OnNavigatedTo()
{
Pallets = new ObservableCollection<Pallet>(_palletService.GetPallets());
HoneyPallets = new ObservableCollection<Pallet>(Pallets.Where(p => p.Type == PalletType.Honey));
var papers = Pallets.Where(p => p.Type == PalletType.Paper).ToList();
papers.Add(new Pallet());
papers = papers.OrderBy(p => p.Length).ToList();
PaperPallets = new ObservableCollection<Pallet>(papers);
Trays = new ObservableCollection<Pallet>(Pallets.Where(p =>
p.Type is PalletType.Plywood or PalletType.Wood));
var varieties = _varietyService.GetAll().Select(v =>
{
// 匹配相同ID的托盘对象
v.TopAndBottomPallet = HoneyPallets.FirstOrDefault(p => p.Id == v.TopAndBottomPallet.Id);
v.MiddlePallet = HoneyPallets.FirstOrDefault(p => p.Id == v.MiddlePallet.Id);
v.Tray = Trays.FirstOrDefault(p => p.Id == v.Tray.Id);
v.PaperTray = v.PaperTray is null
? PaperPallets.First()
: PaperPallets.FirstOrDefault(p =>
p.Id == v.PaperTray.Id);
return v;
});
Varieties = new ObservableCollection<Variety>(varieties);
}
public void OnNavigatedFrom()
{
}
[RelayCommand]
private void AddVariety()
{
var variety = new Variety
{
/* 初始化默认值 */
};
Varieties.Add(variety);
}
[RelayCommand]
private void OnDeleteVariety(object obj)
{
if (obj is Variety variety)
{
Varieties.Remove(variety);
_varietyService.DeleteVarietyAsync(variety);
}
else
{
Console.Write("Object is not a variety");
}
}
[RelayCommand]
private async Task OnSaveVariety(object obj)
{
if (obj is Variety variety)
{
await _varietyService.AddVarietyAsync(variety);
//Pallets = new ObservableCollection<Pallet>(_palletService.GetPallets());
}
WeakReferenceMessenger.Default.Send(new SavePalletCompletedMessage());
}
}
}