#pragma warning disable CS0436 // 类型与导入类型冲突 using CardApi; using Config.Net; using ConfigureWindow.domain; using System; using System.Collections.Generic; using System.ComponentModel; using System.Configuration; using System.Runtime.CompilerServices; namespace ConfigureWindow { class MainWindowViewModel : INotifyPropertyChanged { private bool _serviceInstalled; private bool _serviceStarted; public IMySettings settings; private CardApi.CardApi _cardApi; private CardApi.CardApi Api { get { if (settings.Type == null) { throw new Exception("未配置卡类型"); } else if (settings.Type == CardType.TYPE_1) { return new KateDoor(); } else if (settings.Type == CardType.TYPE_2) { return new ProUsb(); } else { throw new Exception("卡类型错误"); } } } public MainWindowViewModel() { settings = new ConfigurationBuilder() .UseJsonFile("serviceConfig.json") .Build(); if (string.IsNullOrWhiteSpace(settings.DBPath)) { settings.DBPath = ""; } if (string.IsNullOrWhiteSpace(settings.Flag)) { settings.Flag = ""; } } public bool ServiceInstalled { get { return _serviceInstalled; } set { this.MutateVerbose(ref _serviceInstalled, value, RaisePropertyChanged()); notifyBtnState(); } } public bool ServiceStarted { get { return _serviceStarted; } set { this.MutateVerbose(ref _serviceStarted, value, RaisePropertyChanged()); notifyBtnState(); } } public bool BtnInstallEnabled { get { return !_serviceInstalled; } } public bool BtnStartEnabled { get { return _serviceInstalled && !_serviceStarted; } } public bool BtnStopEnabled { get { return _serviceInstalled && _serviceStarted; } } public bool BtnUninstallEnabled { get { return _serviceInstalled && !_serviceStarted; } } public CardType? Type { get { return settings.Type; } set { settings.Type = value; OnPropertyChanged("Type"); } } private Action RaisePropertyChanged() { return args => PropertyChanged?.Invoke(this, args); } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged([CallerMemberName] string name = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } private void notifyBtnState() { OnPropertyChanged("btnInstallEnabled"); OnPropertyChanged("btnStartEnabled"); OnPropertyChanged("btnStopEnabled"); OnPropertyChanged("btnUninstallEnabled"); } public string DBPath { get { return settings.DBPath; } set { settings.DBPath = value; OnPropertyChanged("DBPath"); } } public string CardFlag { get { return settings.Flag; } set { settings.Flag = value; OnPropertyChanged("CardFlag"); } } public void readFlag() { CardFlag = Api.readFlag(); } public object readCard() { return Api.readCard(settings, null); } public string version() { return Api.version(); } public void writeCard(Dictionary data) { if (settings.Type == CardType.TYPE_1) { Api.writeCard(settings, new Dictionary() { { "room" , (string)data["buildingNo"] + "," + (string)data["roomNo"] }, { "date" , ((DateTime)data["date"]).ToString("yyyy-MM-dd HH:mm:ss") } }); } else { Api.writeCard(settings, new Dictionary() { { "room" , (string)data["lockNo"] }, { "date" , ((DateTime)data["date"]).ToString("yyyy-MM-dd HH:mm:ss") } }); } } } }