using OrpaonEMS.App.Dto; using OrpaonEMS.App.Models; using OrpaonEMS.Core; using OrpaonEMS.Core.Enums; using OrpaonEMS.Model; using OrpaonEMS.Model.Enums; using Prism.Commands; using Prism.Services.Dialogs; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; namespace OrpaonEMS.App.ViewModels { public class TimeConfigViewModel : DialogViewModel { /// /// freeSql实例 /// private IFreeSql freeSql { get; set; } /// /// 实例化函数 /// public TimeConfigViewModel(IFreeSql freeSql) { CbxTime = new List() { new cbxItem(){ Key="1",Text="尖峰电价"}, new cbxItem(){ Key="2",Text="平段电价"}, new cbxItem(){ Key="3",Text="峰段电价"}, new cbxItem(){ Key="4",Text="谷段电价"} }; this.freeSql = freeSql; } private string _SelectedElePvEnum; /// /// 选中的 /// public string SelectedElePvEnum { get { return _SelectedElePvEnum; } set { _SelectedElePvEnum = value; RaisePropertyChanged(); } } private DateTime _StartTime = DateTime.Now; /// /// 开始时间 /// public DateTime StartTime { get { return _StartTime; } set { _StartTime = value; RaisePropertyChanged(); } } private DateTime _EndTime = DateTime.Now; /// /// 结束时间 /// public DateTime EndTime { get { return _EndTime; } set { _EndTime = value; RaisePropertyChanged(); } } #region 公用命令 private DelegateCommand saveCmd; /// /// 保存命令 /// public DelegateCommand SaveCmd { set { saveCmd = value; } get { if (saveCmd == null) { saveCmd = new DelegateCommand(() => SaveCmdMethod()); } return saveCmd; } } /// /// 保存命令方法 /// /// private void SaveCmdMethod() { SelectedPeakValley.ElePV = GetElePVEnum(SelectedElePvEnum); SelectedPeakValley.StartTime = StartTime.ToString("HH:mm"); SelectedPeakValley.EndTime = EndTime.ToString("HH:mm"); DialogParameters pars = new DialogParameters { { "Model", SelectedPeakValley } }; RaiseRequestClose(new DialogResult(ButtonResult.OK, pars)); } private DelegateCommand cancelCmd; /// /// 保存命令 /// public DelegateCommand CancelCmd { set { cancelCmd = value; } get { if (cancelCmd == null) { cancelCmd = new DelegateCommand(() => CancelCmdMethod()); } return cancelCmd; } } /// /// 取消命令方法 /// /// private void CancelCmdMethod() { RaiseRequestClose(new DialogResult(ButtonResult.Cancel)); } #endregion private PeakValleyDto DtoConvert(PeakValleyConfig peakValley) { PeakValleyDto peakValleyDto = new PeakValleyDto(); peakValleyDto.Index = peakValley.Index; peakValleyDto.Id = peakValley.Id; peakValleyDto.StartTime = peakValley.StartTime; peakValleyDto.EndTime = peakValley.EndTime; peakValleyDto.ElePV = peakValley.ElePV; peakValleyDto.Enable = peakValley.Enable; peakValleyDto.Price = peakValley.Price; return peakValleyDto; } /// /// 插入或者更新数据 /// private void InsertOrUpdate(PeakValleyDto data) { if (data.Id != null && data.Enable == true) { var datainfo = freeSql.Select().Where(a => a.Id == data.Id); if (datainfo.Count() > 0)//存在就更新 { freeSql.Update() .Set(a => a.StartTime, data.StartTime) .Set(a => a.EndTime, data.EndTime) .Set(a => a.Price, data.Price) .Set(a => a.ElePV, data.ElePV) .Where(a => a.Id == data.Id) .ExecuteAffrows(); } else//否则新增 { freeSql.Insert(new PeakValleyConfig() { ElePV = data.ElePV, StartTime = data.StartTime, Price = data.Price, EndTime = data.EndTime, Index = data.Index }).ExecuteInserted(); } } } private List _CbxTime; /// /// 时间信息下拉框 /// public List CbxTime { get { return _CbxTime; } set { _CbxTime = value; RaisePropertyChanged(); } } private ElePVEnum GetElePVEnum(string data) { switch (data) { case "尖峰电价": return ElePVEnum.TopPeak; case "平段电价": return ElePVEnum.Flat; case "峰段电价": return ElePVEnum.Peak; case "谷段电价": return ElePVEnum.Valley; default: return ElePVEnum.Flat; } } private string GetElePVStr(ElePVEnum elePVEnum) { switch (elePVEnum) { case ElePVEnum.TopPeak: return "尖峰电价"; case ElePVEnum.Peak: return "峰段电价"; case ElePVEnum.Valley: return "谷段电价"; case ElePVEnum.Flat: return "平段电价"; default: return ""; } } #region 下拉框选择 //private string _SelectedTime1; ///// ///// 时间信息下拉框 ///// //public string SelectedTime1 //{ // get { return _SelectedTime1; } // set // { // _SelectedTime1 = value; // if (_SelectedTime1 != "停用") // { // PeakValleyDto1.Enable = true; // PeakValleyDto1.ElePV = GetElePVEnum(_SelectedTime1); // } // else // { // PeakValleyDto1.Enable = false; // } // RaisePropertyChanged(); // } //} #endregion private PeakValleyConfig _SelectedPeakValley=new PeakValleyConfig(); /// /// 选中的模型 /// public PeakValleyConfig SelectedPeakValley { get { return _SelectedPeakValley; } set { _SelectedPeakValley = value; RaisePropertyChanged(); } } /// /// 窗口打开时的传递的参数 /// /// public override void OnDialogOpened(IDialogParameters parameters) { var data = parameters.GetValue("Model"); if (data != null)//修改 { SelectedPeakValley = data; StartTime = DateTime.Parse(SelectedPeakValley.StartTime); EndTime = DateTime.Parse(SelectedPeakValley.EndTime); SelectedElePvEnum = GetElePVStr(SelectedPeakValley.ElePV); } else//新增 { SelectedPeakValley.Enable=true; } //SelectedElePvEnum = GetElePVStr(SelectedPeakValley.ElePV); } } }