using Common.system;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Windows;
using System.Windows.Input;
using System.Windows.Threading;
using XHZB.Desktop.Utils;
using XHZB.Desktop.WebSocket;
using XHZB.Model;
namespace XHZB.Desktop
{
///
/// 考勤统计
///
public partial class AttendanceWindow : Window, SocketCallback
{
#region 字段
///
/// 前台绑定数据源
///
internal ToolbarAttendenceModel pageData = new ToolbarAttendenceModel();
#endregion 字段
#region 初始化
///
/// 考勤统计
///
public AttendanceWindow()
{
InitializeComponent();
WindowStartupLocation = WindowStartupLocation.CenterScreen;
Initialize();
}
///
/// 初始化
///
public void Initialize()
{
pageData = new ToolbarAttendenceModel();
int onlineUsersnum = APP.ClassStudentList.Count;
txbTotalPeople.Text = onlineUsersnum.ToString();
renderView();
SocketClient.getInstance().addWin(this);
DataContext = pageData;
}
private void Window_MouseLeftButtonDown_1(object sender, MouseButtonEventArgs e)
{
DragMove();
}
public void receiveWsMsg(ZWsMsgVo msg)
{
}
public void userListChange()
{
Console.WriteLine("抢答点名-渲染用户列表");
Dispatcher.BeginInvoke(DispatcherPriority.Normal,
new Action(() =>
{
renderView();
}));
}
#endregion 初始化
#region 事件
///
/// 结束
///
///
///
private void btnEnd_Click(object sender, RoutedEventArgs e)
{
if (pageData.menuList.Count > 0)
{
pageData.menuList.Clear();
}
//ToolbarWindow.IsOpenAttendanceWindow = false;
Hide();
FreeMemoryHelper.ReallocateMemory();
System.Threading.Thread.Sleep(0);
}
#endregion 事件
private void renderView()
{
if (pageData.menuList.Count > 0)
{
pageData.menuList.Clear();
}
if (APP.OnlineUserList.Count > 0)
{
var userList = APP.OnlineUserList.ToArray();
string userlistStr = JsonHelper.ToJson(userList);
List userListNew = ZCache.JsonToList(userlistStr);
List classStudentList = APP.ClassStudentList;
for (int i = 0; i < classStudentList.Count; i++)
{
classStudentList[i].status = 0;
}
foreach (OnlineUserModel user in userListNew)
{
if (user != null)
{
string userHeadPic;
if (user.userpic != null)
{
userHeadPic = user.userpic;
if (ZCache.headDic.ContainsKey(userHeadPic.Replace("/", "")))
{
string localpath = ZCache.headDic[userHeadPic.Replace("/", "")];
userHeadPic = localpath;
}
else
{
userHeadPic = "../Images/RollCall/attendance_1.png";
}
}
else
{
userHeadPic = "../Images/RollCall/attendance_1.png";
}
pageData.menuList.Add(new ToolbarAttendenceMenu()
{
Name = user.username,
Pic = userHeadPic
});
foreach (ClassStudentListModel cl in classStudentList)
{
if (cl.studentid == user.userid)
{
cl.status = 1;
}
}
}
}
string notOnline = string.Empty;
foreach (ClassStudentListModel cl in classStudentList)
{
if (cl.status == 0)
{
notOnline += cl.studentname + " ";
}
}
if (!string.IsNullOrWhiteSpace(notOnline))
{
txbNotOnline.Text = notOnline;
}
else
{
txbNotOnline.Text = "暂无";
}
txbOnlineUsers.Text = userListNew.Count.ToString();
userList = null;
userlistStr = null;
userListNew = null;
classStudentList = null;
}
else
{
List classStudentList = APP.ClassStudentList;
for (int i = 0; i < classStudentList.Count; i++)
{
classStudentList[i].status = 0;
}
string notOnline = string.Empty;
foreach (ClassStudentListModel cl in classStudentList)
{
if (cl.status == 0)
{
notOnline += cl.studentname + " ";
}
}
if (!string.IsNullOrWhiteSpace(notOnline))
{
txbNotOnline.Text = notOnline;
}
else
{
txbNotOnline.Text = "暂无";
}
txbOnlineUsers.Text = APP.OnlineUserList.Count.ToString();
}
}
private void Window_Loaded(object sender, RoutedEventArgs e)
{
}
private void Window_Unloaded(object sender, RoutedEventArgs e)
{
SocketClient.getInstance().removedWin(this);
}
private void Window_Closed(object sender, EventArgs e)
{
}
}
#region 动态数据集合
public class ToolbarAttendenceModel : NotifyModel
{
public ObservableCollection menuList { get; set; }
public ToolbarAttendenceModel()
{
menuList = new ObservableCollection();
}
}
public class ToolbarAttendenceMenu : NotifyModel, IComparable
{
///
/// 姓名
///
public string Name { get; set; }
///
/// 头像
///
public string Pic { get; set; }
public int CompareTo(ToolbarAttendenceMenu other)
{
return string.Compare(Name, other.Name, true);
}
}
#endregion 动态数据集合
}