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);
}
}
}