Files
DMS/Services/DataServices.cs

93 lines
2.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<LoadMessage>
{
private readonly ILogger<DataServices> _logger;
[ObservableProperty] private List<Device> _devices;
[ObservableProperty] private List<VariableTable> _variableTables;
[ObservableProperty] private List<MenuBean> menuTrees;
private readonly DeviceRepository _deviceRepository;
private readonly MenuRepository _menuRepository;
public event Action<List<Device>> OnDeviceListChanged;
public event Action<List<MenuBean>> OnMenuTreeListChanged;
partial void OnDevicesChanged(List<Device> devices)
{
OnDeviceListChanged?.Invoke(devices);
}
partial void OnMenuTreesChanged(List<MenuBean> MenuTrees)
{
OnMenuTreeListChanged?.Invoke(MenuTrees);
}
public DataServices(ILogger<DataServices> logger)
{
_logger = logger;
IsActive = true;
_deviceRepository = new DeviceRepository();
_menuRepository = new MenuRepository();
}
/// <summary>
/// 接受加载消息,收到消息后从数据库加载对应的数据
/// </summary>
/// <param name="message">消息的类型如加载菜单LoadMessage.Menu</param>
/// <exception cref="ArgumentException"></exception>
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);
}
}
}