using HMI.Core.Util; using HMI.UI.DpUtil; using HMI.UI.Util; using Panuon.WPF.UI; using Plugin.ModelManage.Entity; using System.ComponentModel; namespace Plugin.ModelManage { /// /// ModalWindow.xaml 的交互逻辑 /// public partial class DataModal : WindowX { public DataModal() { this.DataContext = this; InitializeComponent(); } public ModelData Data { get; set; } private SqliteHelper sqliteHelper; private bool _isProcessing; protected override void OnClosing(CancelEventArgs e) { //Press Continue Button if (DialogResult == true) { if (_isProcessing) { e.Cancel = true; return; } var okButton = WindowXModalDialog.GetOKButton(this); try { _isProcessing = true; ButtonHelper.SetIsPending(okButton, true); if (!ValidateForm()) { e.Cancel = true; return; } SaveOrUpdateData(); } catch (Exception ex) { ToastHelper.Error(this, $"Error!{ex.Message}"); e.Cancel = true; return; } finally { _isProcessing = false; ButtonHelper.SetIsPending(okButton, false); } } base.OnClosing(e); } private bool ValidateModel(object value, out string err) { err = null; string segment = string.IsNullOrEmpty(Data.Id) ? ";" : $"AND Id != {Data.Id};"; var sql = $"SELECT 1 FROM ModelData WHERE Model = '{value}' {segment}"; if (sqliteHelper.HasData(sql)) { err = "型号不能重复"; return false; } return true; } private bool ValidateFixcode(object value, out string err) { err = null; string segment = string.IsNullOrEmpty(Data.Id) ? ";" : $"AND Id != {Data.Id};"; var sql = $"SELECT 1 FROM ModelData WHERE Fixcode = '{value}' {segment}"; if (sqliteHelper.HasData(sql)) { err = "固定码不能重复"; return false; } return true; } private bool ValidateForm() { bool flag = FormGroupHelper.ValidateForm(formPanel); if (flag) { Data.Model = TbModel.Text; Data.CodeLength = (int)NiCodeLength.Value; Data.StartIndex = (int)NiStartIndex.Value; //Data.Length = (int)NiLength.Value; Data.Fixcode = TbFixcode.Text; } return flag; } public bool? Open(ModelData data, SqliteHelper sqliteHelper) { Data = data; this.sqliteHelper = sqliteHelper; TbModel.Text = Data.Model; NiCodeLength.Value = Data.CodeLength; NiStartIndex.Value = Data.StartIndex; //NiLength.Value = Data.Length; TbFixcode.Text = Data.Fixcode; return this.ShowDialog(); } private void SaveOrUpdateData() { if (string.IsNullOrEmpty(Data.Id)) { InsertData(Data); } else { UpdateData(Data); } } public void InsertData(ModelData data) { var sql = $@"INSERT INTO ModelData (Model, CodeLength, StartIndex, Length, Fixcode) VALUES ('{data.Model}', {data.CodeLength}, {data.StartIndex}, {data.Length}, '{data.Fixcode}');"; sqliteHelper.ExecuteSql(sql); } public void UpdateData(ModelData data) { var sql = $@"UPDATE ModelData SET Model='{data.Model}', CodeLength={data.CodeLength}, StartIndex={data.StartIndex}, Length={data.Length}, Fixcode='{data.Fixcode}' WHERE Id={data.Id}"; sqliteHelper.ExecuteSql(sql); } } }