using DevExpress.Utils.Colors;
using DevExpress.Utils.Extensions;
using DevExpress.XtraEditors;
using IStation.Model;
using System.Collections;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows.Forms;
namespace IStation.WinFrmUI.Basic
{
///
///
///
public partial class ElecPriceMgrCtrl : XtraUserControl
{
public ElecPriceMgrCtrl()
{
InitializeComponent();
this.gridView1.SetNormalView();
this.gridView1.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder;
this.gridView1.OptionsView.AllowCellMerge = true;
this.gridView1.ActiveFilterEnabled = false;
this.gridView1.ShowViewCaption();
this.layoutControl1.SetupLayoutControl();
}
public class CurrentViewModel : Model.ElecPriceHourSetting
{
public CurrentViewModel() { }
public CurrentViewModel(Model.ElecPriceHourSetting rhs, string belongName) : base(rhs)
{
this.BelongName = belongName;
}
public string BelongName { get; set; }
public int StartMonth { get; set; }
public int EndMonth { get; set; }
}
private BindingList _allBindingList = null;//所有绑定列表
private Model.ElecPrice _elecPrice = null;
//提问:这个这个和实例化有什么区别
///
/// 绑定数据
///
public void Clear()
{
_allBindingList = new BindingList();
this.currentViewModelBindingSource.DataSource = _allBindingList;
}
///
/// 绑定数据
///
public void SetBindingData()
{
WaitFrmHelper.ShowWaitForm("正在加载数据...");
_allBindingList = new BindingList();
var bll = new BLL.ElecPrice();
_elecPrice = bll.GetAll().First();
if (_elecPrice != null)
{
this.gridView1.ViewCaption = _elecPrice.Name;
if (_elecPrice.Settings != null && _elecPrice.Settings.MonthList != null)
{
var months = _elecPrice.Settings.MonthList.OrderBy(x => x.StartMonth);
foreach (var month in months)
{
if (month.HourList == null)
continue;
var belongName = $"{month.StartMonth}~{month.EndMonth}(月)";
var hours = month.HourList.OrderBy(x => x.StartHour);
foreach (var hour in hours)
{
var vm = new CurrentViewModel(hour, belongName);
vm.StartMonth = month.StartMonth;
vm.EndMonth = month.EndMonth;
_allBindingList.Add(vm);
}
}
}
}
this.currentViewModelBindingSource.DataSource = _allBindingList;
this.gridView1.BestFitColumns();
WaitFrmHelper.HideWaitForm();
}
//添加电费
public void AddElePrice()
{
var dlg = new AddElectricDlg();
dlg.SetBindingData();
dlg.ReloadDataEvent += (price) =>
{
_elecPrice.Settings.MonthList.Add(price);
var bll = new BLL.ElecPrice();
var isok = bll.Update(_elecPrice);
if (isok)
{
this.SetBindingData();
this.currentViewModelBindingSource.ResetBindings(false);
return true;
}
return false;
};
dlg.ShowDialog();
}
// var oldbelongName= _allBindingList.Where(e=>e.BelongName==belongName).FirstOrDefault();
//if (oldbelongName == null)
//编辑电费
public void EditElePrice()
{
var row = gridView1.GetCurrentViewModel(_allBindingList);
if (row == null)
return;
var editTime = _elecPrice.Settings; //提问:这句话点不到hourlist new一个monthsetting就能.到hourlist
var FindMonth = editTime.MonthList.Find(x => x.StartMonth == row.StartMonth && x.EndMonth == row.EndMonth);
var addHour = _elecPrice.Settings.MonthList.IndexOf(FindMonth);
var editHour = editTime.MonthList[addHour];
var dlg = new EditElectricDlg();
dlg.SetBindingData(editHour.HourList);
dlg.ReLoadDataevent += (price) =>
{
editHour.HourList.Clear();
editHour.HourList=price;
var bll = new BLL.ElecPrice();
var isok = bll.Update(_elecPrice);
if (isok)
{
this.currentViewModelBindingSource.ResetBindings(false);
this.SetBindingData();
return true;
}
return false;
};
dlg.ShowDialog();
}
//检查按钮
public bool PriceCheck()
{
//判断月份
var allMonths = _elecPrice.Settings.MonthList;
allMonths = allMonths.OrderBy(x => x.EndMonth).ToList();
var monthCount = allMonths.Count;
if (allMonths.First().StartMonth != 1 || allMonths.Last().EndMonth != 12)
{
XtraMessageBox.Show("开始月份和结束月份有误");
return false;
}
for (int i = 0; i < monthCount - 1; i++)
{
if (allMonths[i].EndMonth + 1 != allMonths[i + 1].StartMonth)
{
XtraMessageBox.Show("月份输入有误");
return false;
}
}
//判断时间
for (int k = 0; k < monthCount; k++)
{
var eleprice = allMonths[k];
var hourList = eleprice.HourList.OrderBy(x => x.StartHour).ToList();
if (hourList.First().StartHour != 1 || hourList.Last().EndHour != 24)
{
XtraMessageBox.Show("结束时间或开始时间输入有误");
return false;
}
for (int x = 0; x < eleprice.HourList.Count - 1; x++)
{
var frist = hourList[x];
var second = hourList[x + 1];
var last = hourList[eleprice.HourList.Count - 1];
if (second.StartHour == second.EndHour)
{
XtraMessageBox.Show("开始时间和结束时间相同");
return false;
}
if (frist.EndHour != second.StartHour)
{
XtraMessageBox.Show("时间输入有误");
return false;
}
}
}
XtraMessageBox.Show("输入正确");
return false;
}
//var eleprice = allMonths[i];
//var hourList = eleprice.HourList.OrderBy(x => x.StartHour).ToList();
//for (int j = 0; i < eleprice.HourList.Count; j++)
//{
// if (hourList[j].EndHour != hourList[j + 1].StartHour)
// {
// XtraMessageBox.Show("时间输入有误");
// return;
// }
//}
// var monthCount = _elecPrice.Settings.MonthList;
//for (int i = 0; i < monthCount; i++)
///
/// 删除电费
///
public void DeletePrice()
{
var row = this.gridView1.GetCurrentViewModel(_allBindingList);
if (row == null)
return;
if (XtraMessageBox.Show("确定要删除所选中?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) != DialogResult.OK)
return;
_elecPrice.Settings.MonthList.RemoveAll(x => x.StartMonth == row.StartMonth && x.EndMonth == row.EndMonth);
var isok = new BLL.ElecPrice().Update(_elecPrice);
if (isok)
{
this.currentViewModelBindingSource.ResetBindings(false);
}
this.SetBindingData();
this.currentViewModelBindingSource.ResetBindings(false);
MessageBox.Show("删除成功", "提示");
}
}
}