using Prism.Commands;
using Prism.Ioc;
using Prism.Mvvm;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using TeamAAS_VM.Data;
using TeamAAS_VP.Core;
using TeamAAS_VP.Data;
using TeamAAS_VP.Models;
using TeamAAS_VP.Views.Product;
namespace TeamAAS_VP.ViewModels.Statistics
{
public class AlarmQueryViewModel : BindableBase
{
IContainerProvider _container;
#region 属性
private DataTable _dataTable;
public DataTable DataTable
{
get { return _dataTable; }
set { SetProperty(ref _dataTable, value); }
}
private DateTime? _StartDate;
public DateTime? StartDate
{
get { return _StartDate; }
set { SetProperty(ref _StartDate, value); }
}
private DateTime? _StartTime;
public DateTime? StartTime
{
get { return _StartTime; }
set { SetProperty(ref _StartTime, value); }
}
private DateTime? _EndDate;
public DateTime? EndDate
{
get { return _EndDate; }
set { SetProperty(ref _EndDate, value); }
}
private DateTime? _EndTime;
public DateTime? EndTime
{
get { return _EndTime; }
set { SetProperty(ref _EndTime, value); }
}
private bool _isSearch = false;
public bool isSearch
{
get { return _isSearch; }
set { SetProperty(ref _isSearch, value); }
}
#endregion
#region 命令
private DelegateCommand _LoadedCommand;
public DelegateCommand LoadedCommand =>
_LoadedCommand ?? (_LoadedCommand = new DelegateCommand(ExecuteLoadedCommand));
private DelegateCommand _SearchCommand;
public DelegateCommand SearchCommand =>
_SearchCommand ?? (_SearchCommand = new DelegateCommand(ExecuteSearchCommand, CanSearch)
.ObservesProperty(() => StartDate).ObservesProperty(() => StartTime)
.ObservesProperty(() => EndDate).ObservesProperty(() => EndTime).ObservesProperty(() => isSearch));
private DelegateCommand _SaveCommand;
public DelegateCommand SaveCommand =>
_SaveCommand ?? (_SaveCommand = new DelegateCommand(ExecuteSaveCommand, CanSave).ObservesProperty(() => DataTable).ObservesProperty(() => isSearch));
#endregion
#region 事件
#endregion
public AlarmQueryViewModel(IContainerProvider container)
{
_container = container;
}
#region 方法
void ExecuteLoadedCommand()
{
if (StartDate == null)
{
StartDate = DateTime.Now;
}
if (StartTime == null)
{
StartTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0);
}
if (EndDate == null)
{
EndDate = DateTime.Now;
}
if (EndTime == null)
{
EndTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 23, 59, 59);
}
}
///
/// 查询
///
async void ExecuteSearchCommand()
{
DateTime dt1 = new DateTime(StartDate.Value.Year, StartDate.Value.Month, StartDate.Value.Day, StartTime.Value.Hour, StartTime.Value.Minute, StartTime.Value.Second);
DateTime dt2 = new DateTime(EndDate.Value.Year, EndDate.Value.Month, EndDate.Value.Day, EndTime.Value.Hour, EndTime.Value.Minute, EndTime.Value.Second);
isSearch = true;
DataTable = await DatabaseHelper.GetAlarmRecords(dt1, dt2);
isSearch = false;
}
///
/// 保存
///
async void ExecuteSaveCommand()
{
isSearch = true;
try
{
//打开一个保存对话框,选择保存路径
//将DataTable报错到本地路径中,保存的文件名为“产品名称_开始时间_结束时间.csv”
string startTime = " "; //开始时间
string endTime = " "; //结束时间
if (StartDate != null)
{
startTime = StartDate.Value.ToString("yyyyMMddHHmm");
}
if (EndDate != null)
{
endTime = EndDate.Value.ToString("yyyyMMddHHmm");
}
string fileName = $"Alarm_{startTime}_{endTime}.csv";
//打开一个保存对话框,选择保存路径
var saveFileDialog = new Microsoft.Win32.SaveFileDialog
{
FileName = fileName,
DefaultExt = ".csv",
Filter = "CSV Files (*.csv)|*.csv"
};
bool? result = saveFileDialog.ShowDialog();
if (result == true)
{
//保存文件
string filePath = saveFileDialog.FileName;
//将DataTable导出到csv文件中
if (filePath == null) return;
DataTableHelper.ExportToCsv(DataTable, filePath);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error);
}
isSearch = false;
}
private bool CanSearch()
{
if (StartDate != null && StartTime != null && EndDate != null && EndTime != null && !isSearch)
{
return true;
}
else
{
return false;
}
}
private bool CanSave()
{
if (DataTable != null && DataTable.Rows.Count > 0 && !isSearch)
{
return true;
}
else
{
return false;
}
}
#endregion
}
}