using CommunityToolkit.Mvvm.ComponentModel; using CommunityToolkit.Mvvm.Messaging; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using PMSWPF.Data.Repositories; using PMSWPF.Enums; using PMSWPF.Helper; using PMSWPF.Message; using PMSWPF.Models; using PMSWPF.ViewModels; using SqlSugar; namespace PMSWPF.Services; public partial class DataServices : ObservableRecipient, IRecipient { private readonly ILogger _logger; [ObservableProperty] private List _devices; [ObservableProperty] private List _variableTables; [ObservableProperty] private List menuTrees; private readonly DeviceRepository _deviceRepository; private readonly MenuRepository _menuRepository; public event Action> OnDeviceListChanged; public event Action> OnMenuTreeListChanged; partial void OnDevicesChanged(List devices) { OnDeviceListChanged?.Invoke(devices); } partial void OnMenuTreesChanged(List MenuTrees) { OnMenuTreeListChanged?.Invoke(MenuTrees); } public DataServices(ILogger logger) { _logger = logger; IsActive = true; _deviceRepository = new DeviceRepository(); _menuRepository = new MenuRepository(); } /// /// 接受加载消息,收到消息后从数据库加载对应的数据 /// /// 消息的类型,如加载菜单LoadMessage.Menu /// public async void Receive(LoadMessage message) { try { switch (message.LoadType) { case LoadTypes.All: await LoadDevices(); await LoadMenus(); break; case LoadTypes.Devices: await LoadDevices(); break; case LoadTypes.Menu: await LoadMenus(); break; } } catch (Exception e) { NotificationHelper.ShowMessage($"加载数据出现了错误:{e.Message}"); _logger.LogError($"加载数据出现了错误:{e}"); } } private async Task LoadDevices() { Devices = await _deviceRepository.GetAll(); } private async Task LoadMenus() { MenuTrees = await _menuRepository.GetMenuTrees(); foreach (MenuBean menu in MenuTrees) { MenuHelper.MenuAddParent(menu); DataServicesHelper.SortMenus(menu); } } }