using AutoMapper;
using CapMachine.Core;
using CapMachine.Model.CANLIN;
using CapMachine.Wpf.Dtos;
using Prism.Commands;
using Prism.Services.Dialogs;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
namespace CapMachine.Wpf.ViewModels
{
///
/// ZLG CAN FD 调度表配置弹窗 ViewModel。
/// 说明:
/// - 调度表项本身由“读写设置”弹窗中的“加入定时调度表”能力生成,这里主要负责:
/// 1) 设置发送方式(并行/顺序)
/// 2) 配置周期(Cycle)
/// 3) 删除与保存落库
/// - 保存时会使用 InsertOrUpdate 做 Upsert,并在保存完成后从数据库重载,作为权威数据再回传给调用方。
///
public class DialogZlgCANFDSchConfigViewModel : DialogViewModel
{
///
/// 构造函数。
///
/// FreeSql。
/// AutoMapper。
public DialogZlgCANFDSchConfigViewModel(IFreeSql freeSql, IMapper mapper)
{
Title = "调度表 CANFD 配置";
FreeSql = freeSql;
Mapper = mapper;
SendOrderCbxItems = new ObservableCollection()
{
new CbxItems(){
Key="0",
Text="并行",
},
new CbxItems(){
Key="1",
Text="顺序",
},
};
SchTabIndexCbxItems = new ObservableCollection()
{
new CbxItems(){
Key="0",
Text="0",
},
};
}
///
/// FreeSql。
///
public IFreeSql FreeSql { get; }
///
/// AutoMapper。
///
public IMapper Mapper { get; }
private ObservableCollection _listCANFdScheduleConfigDto = new ObservableCollection();
///
/// CAN FD 调度表数据集合。
///
public ObservableCollection ListCANFdScheduleConfigDto
{
get { return _listCANFdScheduleConfigDto; }
set { _listCANFdScheduleConfigDto = value; RaisePropertyChanged(); }
}
///
/// 消息名列表。
///
public List? ListMsg { get; set; }
private ObservableCollection _msgCbxItems;
///
/// 消息名称下拉框数据。
///
public ObservableCollection MsgCbxItems
{
get { return _msgCbxItems; }
set { _msgCbxItems = value; RaisePropertyChanged(); }
}
///
/// 选中的程序 Id。
///
public long SelectCanLinConfigProId { get; set; }
private ObservableCollection _sendOrderCbxItems;
///
/// 发送方式集合。
///
public ObservableCollection SendOrderCbxItems
{
get { return _sendOrderCbxItems; }
set { _sendOrderCbxItems = value; RaisePropertyChanged(); }
}
private string? _curSendOrder;
///
/// 当前发送方式。
///
public string? CurSendOrder
{
get { return _curSendOrder; }
set { _curSendOrder = value; RaisePropertyChanged(); }
}
private ObservableCollection _schTabIndexCbxItems;
///
/// 调度器序号集合。
///
public ObservableCollection SchTabIndexCbxItems
{
get { return _schTabIndexCbxItems; }
set { _schTabIndexCbxItems = value; RaisePropertyChanged(); }
}
private CANFdScheduleConfigDto _curSelectedItem;
///
/// 当前选中项。
///
public CANFdScheduleConfigDto CurSelectedItem
{
get { return _curSelectedItem; }
set { _curSelectedItem = value; RaisePropertyChanged(); }
}
private DelegateCommand