312 lines
9.1 KiB
C#
312 lines
9.1 KiB
C#
using Newtonsoft.Json.Linq;
|
||
using Newtonsoft.Json;
|
||
using Prism.Commands;
|
||
using Prism.Events;
|
||
using SWS.CAD.Event;
|
||
using SWS.CAD.ViewModels.myViewModelBase;
|
||
using SWS.CAD.Views;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Collections.ObjectModel;
|
||
using System.Linq;
|
||
using System.Text;
|
||
using System.Threading.Tasks;
|
||
using System.Windows;
|
||
using System.Windows.Input;
|
||
using System.Windows.Media;
|
||
using Unity;
|
||
using Teigha.GraphicsInterface;
|
||
using SWS.Commons;
|
||
using SWS.Model;
|
||
using SWS.Service;
|
||
|
||
namespace SWS.CAD.ViewModels
|
||
{
|
||
public class UserNotificationViewModel : DialogBase
|
||
{
|
||
#region BINDING
|
||
private ec_notification _select;
|
||
|
||
public ec_notification select
|
||
{
|
||
get { return _select; }
|
||
set { _select = value; RaisePropertyChanged(nameof(select)); }
|
||
}
|
||
|
||
private ObservableCollection<ec_notification> _Notifications;
|
||
|
||
public ObservableCollection<ec_notification> Notifications
|
||
{
|
||
get { return _Notifications; }
|
||
set { _Notifications = value; RaisePropertyChanged(nameof(Notifications)); }
|
||
}
|
||
private ObservableCollection<ec_notification> _ListAllData;
|
||
|
||
public ObservableCollection<ec_notification> ListAllData
|
||
{
|
||
get { return _ListAllData; }
|
||
set { _ListAllData = value; RaisePropertyChanged(nameof(ListAllData)); }
|
||
}
|
||
Visibility visibility = Visibility.Visible;
|
||
/// <summary>
|
||
/// 是否显示提交按钮
|
||
/// </summary>
|
||
public Visibility IsShowSubmit
|
||
{
|
||
get
|
||
{
|
||
return visibility;
|
||
}
|
||
set { visibility = value; RaisePropertyChanged(nameof(IsShowSubmit)); }
|
||
}
|
||
int _mode = 0;
|
||
/// <summary>
|
||
/// 消息模式 0:接收 1:发送
|
||
/// </summary>
|
||
public int mode
|
||
{
|
||
get
|
||
{
|
||
return _mode;
|
||
}
|
||
set
|
||
{
|
||
_mode = value;
|
||
if (value == 1)
|
||
{
|
||
IsShowSubmit = Visibility.Hidden;
|
||
title = GlobalObject.curProject.ProjectName + " 项目消息 - 我发送的";
|
||
}
|
||
else
|
||
{
|
||
IsShowSubmit = Visibility.Visible;
|
||
title = GlobalObject.curProject.ProjectName + " 项目消息 - 我收到的";
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
IEventAggregator eventAggregator;
|
||
NotificationService _NotificationService;
|
||
/// <summary>
|
||
/// 消息提交命令
|
||
/// </summary>
|
||
public ICommand SubmitCommad { get; }
|
||
/// <summary>
|
||
/// 消息接收列表
|
||
/// </summary>
|
||
public ICommand Commad_Receive { get; }
|
||
|
||
/// <summary>
|
||
/// 消息发送列表
|
||
/// </summary>
|
||
public ICommand Commad_Send { get; }
|
||
/// <summary>
|
||
/// 消息发送列表
|
||
/// </summary>
|
||
public ICommand Commad_All { get; }
|
||
/// <summary>
|
||
/// 消息发送列表
|
||
/// </summary>
|
||
public ICommand Commad_Readed { get; }
|
||
/// <summary>
|
||
/// 消息发送列表
|
||
/// </summary>
|
||
public ICommand Commad_UnReaded { get; }
|
||
|
||
public UserNotificationViewModel()
|
||
{
|
||
Notifications = new ObservableCollection<ec_notification>();
|
||
ListAllData = new ObservableCollection<ec_notification>();
|
||
_NotificationService = GlobalObject.container.Resolve<NotificationService>();
|
||
eventAggregator = GlobalObject.container.Resolve<IEventAggregator>();
|
||
eventAggregator.GetEvent<SelectProjectEvent>().Subscribe(onSelectProject, ThreadOption.UIThread, false);
|
||
SubmitCommad = new DelegateCommand(SubmitCmd);
|
||
Commad_Receive = new DelegateCommand(onReceive);
|
||
Commad_Send = new DelegateCommand(onSend);
|
||
Commad_All = new DelegateCommand(onAll);
|
||
Commad_Readed = new DelegateCommand(onReaded);
|
||
Commad_UnReaded = new DelegateCommand(onUnReaded);
|
||
title = "项目消息";
|
||
}
|
||
|
||
#region 选择项目后,弹出用户收到的消息
|
||
/// <summary>
|
||
/// 选择项目后,弹出用户收到的消息
|
||
/// </summary>
|
||
/// <param name="obj"></param>
|
||
private async void onSelectProject(List<ec_notification> list)
|
||
{
|
||
mode = 0;
|
||
Notifications.Clear();
|
||
ListAllData.Clear();
|
||
if (list == null|| !list.Any())
|
||
{
|
||
mode = 0;
|
||
var infos = await _NotificationService.GetUserAllNotification(mode);
|
||
ListAllData.AddRange(infos);
|
||
onAll();
|
||
}
|
||
else
|
||
{
|
||
mode = 0;
|
||
ListAllData.AddRange(list);
|
||
onAll();
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
public override void onWindow_loaded(object para)
|
||
{
|
||
|
||
base.onWindow_loaded(para);
|
||
}
|
||
|
||
//按钮的作用:点击后,将当前选中的行(可能是多行),提交给数据库的某个接口。将每个数据的“未读” 设置为 已读
|
||
public async void SubmitCmd()
|
||
{
|
||
if (select == null)
|
||
{
|
||
MessageBox.Show("请选择一条消息!");
|
||
return;
|
||
}
|
||
else if (select.CheckFLG==1)
|
||
{
|
||
return;
|
||
}
|
||
string ids = select.ID;
|
||
var flag = await _NotificationService.SubmitUnread(ids);
|
||
if (flag) { MessageBox.Show("提交数据成功!"); }
|
||
else { MessageBox.Show("提交数据失败!"); }
|
||
}
|
||
|
||
#region 确定取消按钮重写
|
||
|
||
public override void ExecuteCloseCommand(object parameter)
|
||
{
|
||
close(parameter);
|
||
}
|
||
public override void ExecuteOKCommandAsync(object parameter)
|
||
{
|
||
close(parameter);
|
||
}
|
||
private void close(object parameter)
|
||
{
|
||
eventAggregator.GetEvent<SelectProjectEvent>().Unsubscribe(onSelectProject);
|
||
// 关闭窗口 (需要通过 CommandParameter 传入窗口实例)
|
||
if (parameter is System.Windows.Window window)
|
||
{
|
||
window.Close();
|
||
}
|
||
this.Dispose();
|
||
}
|
||
#endregion
|
||
|
||
#region 消息接收列表
|
||
/// <summary>
|
||
/// 消息接收列表
|
||
/// </summary>
|
||
public async void onReceive()
|
||
{
|
||
try
|
||
{
|
||
IsBusy = true;
|
||
Notifications.Clear();
|
||
ListAllData.Clear();
|
||
mode = 0;
|
||
var infos = await _NotificationService.GetUserAllNotification(mode);
|
||
ListAllData.AddRange(infos);
|
||
onAll();
|
||
IsBusy = false;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
IsBusy = false;
|
||
MessageBox.Show(ex.Message);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 消息发送列表
|
||
/// <summary>
|
||
/// 消息发送列表
|
||
/// </summary>
|
||
public async void onSend()
|
||
{
|
||
try
|
||
{
|
||
IsBusy = true; BusyContent = "数据加载中...";
|
||
Notifications.Clear();
|
||
ListAllData.Clear();
|
||
mode = 1;
|
||
var infos = await _NotificationService.GetUserAllNotification(mode);
|
||
ListAllData.AddRange(infos);
|
||
onAll();
|
||
IsBusy = false;
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
IsBusy = false;
|
||
MessageBox.Show(ex.Message);
|
||
}
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region 全部显示
|
||
/// <summary>
|
||
/// 全部显示
|
||
/// </summary>
|
||
public void onAll()
|
||
{
|
||
try
|
||
{
|
||
Notifications = new ObservableCollection<ec_notification>(ListAllData);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show(ex.Message);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 已读
|
||
/// <summary>
|
||
/// 已读
|
||
/// </summary>
|
||
public void onReaded()
|
||
{
|
||
try
|
||
{
|
||
var list = ListAllData.Where(a => a.CheckFLG == 1).ToList();
|
||
Notifications = new ObservableCollection<ec_notification>(list);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show(ex.Message);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 未读
|
||
/// <summary>
|
||
/// 未读
|
||
/// </summary>
|
||
public void onUnReaded()
|
||
{
|
||
try
|
||
{
|
||
|
||
var list = ListAllData.Where(a => a.CheckFLG == 0).ToList();
|
||
Notifications = new ObservableCollection<ec_notification>(list);
|
||
}
|
||
catch (Exception ex)
|
||
{
|
||
MessageBox.Show(ex.Message);
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
}
|
||
}
|