using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Threading.Tasks; using Avalonia.Controls.Notifications; using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Input; using CommunityToolkit.Mvvm.Messaging; using Seyounth.Hyosung.Data.Models; using Seyounth.Hyosung.Data.Services; using Seyounth.Hyosung.Data.Services.Hyosung; using SukiUI.Toasts; namespace Seyounth.Hyosung.Ava.ViewModels; public partial class PalletManagerViewModel : ObservableObject { public class SavePalletCompletedMessage; public string Title => "辅料管理"; [ObservableProperty] private ObservableCollection _pallets; private readonly ISukiToastManager _toastManager; private readonly IPalletService _palletService; public PalletManagerViewModel(IPalletService palletService, ISukiToastManager toastManager) { _toastManager = toastManager; _palletService = palletService; Pallets = new ObservableCollection(palletService.GetPallets()); } [RelayCommand] private void AddNewRow() { Pallets.Add(new Pallet()); } [RelayCommand] private void AddPallet() { var newPallet = new Pallet { /* 初始化默认值 */ }; Pallets.Add(newPallet); } [RelayCommand] private void OnDeletePallet(object obj) { if (obj is Pallet pallet) { Pallets.Remove(pallet); _palletService.DeletePalletAsync(pallet); _toastManager.CreateToast() .Dismiss().After(TimeSpan.FromSeconds(3)) .OfType(NotificationType.Success) .Dismiss().ByClicking() .Queue(); } else { Console.Write("Object is not a Pallet"); } } [RelayCommand] private async Task OnSavePallet(object obj) { if (obj is Pallet pallet) { if (pallet.Id == 0) { await _palletService.AddPalletAsync(pallet); _toastManager.CreateToast() .WithTitle("新增辅料成功") .Dismiss().After(TimeSpan.FromSeconds(3)) .OfType(NotificationType.Success) .Dismiss().ByClicking() .Queue(); } else { await _palletService.UpdatePalletAsync(pallet); _toastManager.CreateToast() .WithTitle("修改辅料成功") .Dismiss().After(TimeSpan.FromSeconds(3)) .OfType(NotificationType.Success) .Dismiss().ByClicking() .Queue(); } } WeakReferenceMessenger.Default.Send(new SavePalletCompletedMessage()); } }