97 lines
2.7 KiB
C#
Raw Normal View History

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
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 SukiUI.Toasts;
namespace Seyounth.Hyosung.Ava.ViewModels;
public partial class PalletManagerViewModel : ObservableObject
{
public class SavePalletCompletedMessage;
public string Title => "辅料管理";
[ObservableProperty] private ObservableCollection<Pallet> _pallets;
private readonly ISukiToastManager _toastManager;
private readonly IPalletService _palletService;
public PalletManagerViewModel(IPalletService palletService, ISukiToastManager toastManager)
{
_toastManager = toastManager;
_palletService = palletService;
Pallets = new ObservableCollection<Pallet>(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 void OnSavePallet(object obj)
{
if (obj is Pallet pallet)
{
if (pallet.Id == 0)
{
var id = _palletService.AddPalletAsync(pallet).Result;
_toastManager.CreateToast()
.WithTitle("新增辅料成功")
.Dismiss().After(TimeSpan.FromSeconds(3))
.OfType(NotificationType.Success)
.Dismiss().ByClicking()
.Queue();
}
else
{
_palletService.UpdatePalletAsync(pallet);
_toastManager.CreateToast()
.WithTitle("修改辅料成功")
.Dismiss().After(TimeSpan.FromSeconds(3))
.OfType(NotificationType.Success)
.Dismiss().ByClicking()
.Queue();
}
}
WeakReferenceMessenger.Default.Send(new SavePalletCompletedMessage());
}
}