using System.Collections.ObjectModel; using AutoMapper; using CommunityToolkit.Mvvm.ComponentModel; using DMS.Application.DTOs; using DMS.Application.Events; using DMS.Application.Interfaces; using DMS.Core.Enums; using DMS.WPF.Interfaces; using DMS.WPF.ItemViewModel; namespace DMS.WPF.Services; /// /// 日志数据服务类,负责管理日志相关的数据和操作。 /// public class LogDataService : ILogDataService { private readonly IMapper _mapper; private readonly IWpfDataService _dataStorageService; private readonly IAppStorageService _appStorageService; /// /// LogDataService类的构造函数。 /// /// AutoMapper 实例。 /// 数据服务中心实例。 public LogDataService(IMapper mapper,IWpfDataService dataStorageService, IAppStorageService appStorageService) { _mapper = mapper; _dataStorageService = dataStorageService; _appStorageService = appStorageService; } public void LoadAllLog() { // 加载日志数据 _dataStorageService.Nlogs = _mapper.Map>(_appStorageService.Nlogs.Values); } /// /// 处理日志变更事件。 /// public void OnNlogChanged(object sender, NlogChangedEventArgs e) { // 在UI线程上更新日志 App.Current.Dispatcher.BeginInvoke(new Action(() => { switch (e.ChangeType) { case DataChangeType.Added: _dataStorageService.Nlogs.Add(_mapper.Map(e.Nlog)); break; case DataChangeType.Updated: var existingLog = _dataStorageService.Nlogs.FirstOrDefault(l => l.Id == e.Nlog.Id); if (existingLog != null) { _mapper.Map(e.Nlog, existingLog); } break; case DataChangeType.Deleted: var logToRemove = _dataStorageService.Nlogs.FirstOrDefault(l => l.Id == e.Nlog.Id); if (logToRemove != null) { _dataStorageService.Nlogs.Remove(logToRemove); } break; } })); } }