using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Windows;
using System.Windows.Input;
using Prism.Commands;
using Prism.Services.Dialogs;
using SWS.CAD.ViewModels.myViewModelBase;
using SWS.Commons;
using SWS.Model;
using SWS.Service;
using Unity;
using MessageBox = System.Windows.Forms.MessageBox;
namespace SWS.CAD.ViewModels
{
public class CheckInApproveViewModel : DialogBase
{
#region 按钮命令
///
/// 已审核
///
public ICommand Commad_Approve { get; }
///
/// 未审核
///
public ICommand Commad_NotApprove { get; }
///
/// 全选
///
public ICommand Commad_CheckedAll { get; }
///
/// 清空选择
///
public ICommand Commad_ClearChecked { get; }
#endregion
private ObservableCollection _listData;
///
/// 数据源
///
public ObservableCollection listData
{
get { return _listData; }
set { _listData = value; RaisePropertyChanged(nameof(listData)); }
}
private List _listAllData = new List();
///
/// 所有审核数据 ec_drawing_syn
///
public List listAllData
{
get { return _listAllData; }
set { _listAllData = value; }
}
Visibility visibility = Visibility.Visible;
///
/// 是否显示批量审核按钮
///
public Visibility IsShowApprove
{
get
{
return visibility;
}
set
{
visibility = value;
RaisePropertyChanged(nameof(IsShowApprove));
ReadOnly = value == Visibility.Collapsed;
}
}
Boolean _ReadOnly = false;
///
/// 是否显示批量审核按钮
///
public Boolean ReadOnly
{
get
{
return _ReadOnly;
}
set { _ReadOnly = value; RaisePropertyChanged(nameof(ReadOnly)); }
}
NotificationService _notificationService { get; set; }
public CheckInApproveViewModel()
{
title = "检入审核";
_notificationService = GlobalObject.container.Resolve();
Commad_Approve = new DelegateCommand(onApprove);
Commad_NotApprove = new DelegateCommand(onNotApprove);
Commad_CheckedAll = new DelegateCommand(onCheckedAll);
Commad_ClearChecked = new DelegateCommand(onClearChecked);
}
public string Title => "";
public event Action RequestClose;
public override void onWindow_loaded(object para)
{
GetAllData();
}
#region 获取所有数据
///
/// 获取所有数据
///
/// 获取数据后显示数据,0:未审核 ,1:已审核
private async void GetAllData(int approve = 0)
{
var list = await _notificationService.GetCheckInLogNeedApprove();
listAllData.Clear();
foreach (var item in list)
{
foreach (var item2 in item)
{ listAllData.Add(item2); }
}
if (approve == 0)
{ onNotApprove(); }
else if (approve == 1)
{ onApprove(); }
}
#endregion
#region 已审核
///
/// 已审核
///
public void onApprove()
{
var list = listAllData.Where(a => a.ApproveByAdmin == 1);
listData = new ObservableCollection(list);
IsShowApprove = Visibility.Collapsed;
}
#endregion
#region 未审核
///
/// 未审核
///
public void onNotApprove()
{
var list = listAllData.Where(a => a.ApproveByAdmin == 0);
listData = new ObservableCollection(list);
IsShowApprove = Visibility.Visible;
}
#endregion
#region 全选
///
/// 全选
///
public void onCheckedAll()
{
if (ReadOnly)
{ return; }
foreach (var item in listData)
{
item.IsSelected = true;
}
}
#endregion
#region 清空选择
///
/// 清空选择
///
public void onClearChecked()
{
if (ReadOnly)
{ return; }
foreach (var item in listData)
{
item.IsSelected = false;
}
}
#endregion
#region 批量审核
public override async void ExecuteOKCommandAsync(object parameter)
{
var list = listAllData.Where(a => a.IsSelected == true);
if (!list.Any())
{
MessageBox.Show("请先勾选数据再进行批量审核!");
return;
}
var listId = list.Select(a => a.DrawingSynID).ToList();
string IDs = string.Join(",", listId);
var msg = await _notificationService.ApproveCheckInLog(IDs);
if (!string.IsNullOrEmpty(msg))
{ MessageBox.Show("审核失败:" + msg); }
else
{
MessageBox.Show("审核成功!");
GetAllData();
}
}
#endregion
#region 关闭
public override void ExecuteCloseCommand(object parameter)
{
// 关闭窗口 (需要通过 CommandParameter 传入窗口实例)
if (parameter is System.Windows.Window window)
{
window.Close();
}
this.Dispose();
}
#endregion
}
}