Files
DMS/DMS.WPF/ViewModels/Dialogs/MqttSelectionDialogViewModel.cs

91 lines
2.8 KiB
C#
Raw Normal View History

2025-07-05 18:15:21 +08:00
using CommunityToolkit.Mvvm.ComponentModel;
2025-09-06 19:10:25 +08:00
using CommunityToolkit.Mvvm.Input;
2025-09-06 19:10:25 +08:00
using DMS.Application.Interfaces;
using DMS.WPF.ItemViewModel;
2025-09-06 19:10:25 +08:00
using System;
using System.Collections.ObjectModel;
using System.Threading.Tasks;
2025-09-16 12:29:09 +08:00
using DMS.Application.Interfaces.Database;
2025-07-05 18:15:21 +08:00
2025-09-06 19:10:25 +08:00
namespace DMS.WPF.ViewModels.Dialogs
2025-07-05 18:15:21 +08:00
{
2025-09-06 19:10:25 +08:00
/// <summary>
/// MQTT服务器选择对话框的视图模型
/// </summary>
public partial class MqttSelectionDialogViewModel : DialogViewModelBase<MqttServerItem>
2025-09-06 19:10:25 +08:00
{
private readonly IMqttAppService _mqttAppService;
[ObservableProperty]
private ObservableCollection<MqttServerItem> _mqttServers = new();
2025-09-06 19:10:25 +08:00
[ObservableProperty]
private MqttServerItem _selectedMqttServer;
2025-09-06 19:10:25 +08:00
public MqttSelectionDialogViewModel(IMqttAppService mqttAppService)
{
_mqttAppService = mqttAppService;
LoadMqttServersAsync();
}
/// <summary>
/// 异步加载所有MQTT服务器
/// </summary>
private async void LoadMqttServersAsync()
{
try
{
var mqttServers = await _mqttAppService.GetAllMqttServersAsync();
2025-09-06 19:10:25 +08:00
MqttServers.Clear();
2025-07-05 18:15:21 +08:00
foreach (var mqttServer in mqttServers)
2025-09-06 19:10:25 +08:00
{
MqttServers.Add(new MqttServerItem
2025-09-06 19:10:25 +08:00
{
Id = mqttServer.Id,
ServerName = mqttServer.ServerName,
ServerUrl = mqttServer.ServerUrl,
Port = mqttServer.Port,
Username = mqttServer.Username,
Password = mqttServer.Password,
IsActive = mqttServer.IsActive,
SubscribeTopic = mqttServer.SubscribeTopic,
PublishTopic = mqttServer.PublishTopic,
ClientId = mqttServer.ClientId,
CreatedAt = mqttServer.CreatedAt,
ConnectedAt = mqttServer.ConnectedAt,
ConnectionDuration = mqttServer.ConnectionDuration,
MessageFormat = mqttServer.MessageFormat
2025-09-06 19:10:25 +08:00
});
}
}
catch (Exception ex)
{
// 记录错误日志
System.Console.WriteLine($"加载MQTT服务器失败: {ex.Message}");
}
}
2025-07-05 18:15:21 +08:00
2025-09-06 19:10:25 +08:00
/// <summary>
/// 确认选择
/// </summary>
[RelayCommand]
private void Confirm()
{
if (SelectedMqttServer != null)
{
Close(SelectedMqttServer);
}
}
2025-09-06 19:10:25 +08:00
/// <summary>
/// 取消选择
/// </summary>
[RelayCommand]
private void Cancel()
{
Close(null);
}
}
2025-07-05 18:15:21 +08:00
}