You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

295 lines
9.8 KiB
C#

using ConsoleApp;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Command;
using HslCommunication;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using SlnMesnac.Business.business;
using SlnMesnac.Common;
using SlnMesnac.Model.domain;
using SlnMesnac.Model.dto;
using SlnMesnac.Repository.service;
using SlnMesnac.Repository.service.Impl;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Input;
using static Microsoft.WindowsAPICodePack.Shell.PropertySystem.SystemProperties.System;
namespace SlnMesnac.WPF.ViewModel
{
public class EmployeeLoginViewModel : INotifyPropertyChanged
{
private readonly ILogger<EmployeeLoginViewModel> _logger;
private readonly RfidHandleBusniess _rfidHandleBusniess;
private IBaseStaffService baseStaffService;
private IRecordStaffAttendanceService _recordStaffAttendanceService;
private string _checkInButtonText = "上班打卡";
private string _checkOutButtonText = "下班打卡";
public string _isCheckInButtonEnabled;
private string _isCheckOutButtonEnabled;
private string _checkInButtonColor;
private string _checkOutButtonColor = "#009999";
private int isCheckOn = 0;
private HidUtils hidUtils = new HidUtils();
/// <summary>
/// 按钮文字转换事件
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// 上班命令
/// </summary>
public ICommand CheckInCommand { get; private set; }
/// <summary>
/// 下班命令
/// </summary>
public ICommand CheckOutCommand { get; private set; }
/// <summary>
/// 结束命令
/// </summary>
public ICommand OverCommand { get; private set; }
public EmployeeLoginViewModel()
{
CheckInCommand = new RelayCommand(CheckIn);
CheckOutCommand = new RelayCommand(CheckOut);
OverCommand = new RelayCommand(Over);
baseStaffService = App.ServiceProvider.GetService<IBaseStaffService>();
_recordStaffAttendanceService = App.ServiceProvider.GetService<IRecordStaffAttendanceService>();
_rfidHandleBusniess = App.ServiceProvider.GetService<RfidHandleBusniess>();
//_rfidHandleBusniess.InstructionInfoDataGridEvent += RefreshRfidInfo;
IsCheckInButtonEnabled = "True";
IsCheckOutButtonEnabled = "True";
CheckInButtonColor = "#009999";
CheckOutButtonColor = "#009999";
Init();
}
private void Init()
{
hidUtils.Initial();
hidUtils.pushReceiveDataEvent += (bytes, str) =>
{
str = str.ToString().Replace(" ", "");
BaseStaffInfo user = baseStaffService.GetStaffInfoByCardId(str);
if (user != null)
{
StaffIdText = user.StaffId;
CheckStatus = user.StaffName + " " + user.TeamCode + " 打卡成功!";
RecordStaffAttendance recordStaffAttendance = new RecordStaffAttendance
{
StaffId = user.StaffId,
AttendanceType = isCheckOn.ToString(),
TeamCode = user.TeamCode,
Remark = user.Remark,
CreateBy = user.StaffName,
CreateTime = DateTime.Now.ToString("HH:mm:ss"),
};
_recordStaffAttendanceService.Insert(recordStaffAttendance);
var list = _recordStaffAttendanceService.GetRecordStaffAttendances();
System.Windows.Application.Current.Dispatcher.Invoke((Action)(async () =>
{
RecordStaffAttendanceDataGrid.Clear();
list.ForEach(item => { RecordStaffAttendanceDataGrid.Add(item); });
}));
}
else
{
StaffIdText = "未配置";
CheckStatus = "没有匹配的员工,打卡失败!";
}
};
}
#region
/// <summary>
/// 上班打卡文本
/// </summary>
public string CheckInButtonText
{
get { return _checkInButtonText; }
set
{
_checkInButtonText = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(CheckInButtonText)));
}
}
/// <summary>
/// 上班打卡
/// </summary>
public string IsCheckInButtonEnabled
{
get { return _isCheckInButtonEnabled; }
set
{
_isCheckInButtonEnabled = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsCheckInButtonEnabled)));
}
}
/// <summary>
///下班打卡文本
/// </summary>
public string CheckOutButtonText
{
get { return _checkOutButtonText; }
set
{
_checkOutButtonText = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(CheckOutButtonText)));
}
}
/// <summary>
/// 下班打卡
/// </summary>
public string IsCheckOutButtonEnabled
{
get { return _isCheckOutButtonEnabled; }
set
{
_isCheckOutButtonEnabled = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(IsCheckOutButtonEnabled)));
}
}
/// <summary>
/// 上班打卡按钮颜色
/// </summary>
public string CheckInButtonColor
{
get { return _checkInButtonColor; }
set
{
_checkInButtonColor = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(CheckInButtonColor)));
}
}
/// <summary>
/// 下班打卡按钮颜色
/// </summary>
public string CheckOutButtonColor
{
get { return _checkOutButtonColor; }
set
{
_checkOutButtonColor = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(CheckOutButtonColor)));
}
}
/// <summary>
/// 员工id
/// </summary>
private string staffId;
public string StaffIdText
{
get { return staffId; }
set { staffId = value; OnPropertyChanged("StaffIdText"); }
}
/// <summary>
/// 打卡状态
/// </summary>
private string checkStatus;
public string CheckStatus
{
get { return checkStatus; }
set { checkStatus = value; OnPropertyChanged("CheckStatus"); }
}
private ObservableCollection<RecordStaffAttendance> item = new ObservableCollection<RecordStaffAttendance>();
//
private ObservableCollection<RecordStaffAttendance> recordStaffAttendanceDataGrid=new ObservableCollection<RecordStaffAttendance>();
public ObservableCollection<RecordStaffAttendance> RecordStaffAttendanceDataGrid
{
get { return recordStaffAttendanceDataGrid; }
set { recordStaffAttendanceDataGrid = value; OnPropertyChanged("RecordStaffAttendanceDataGrid"); }
}
#endregion
/// <summary>
/// 上班打卡事件
/// </summary>
private void CheckIn()
{
isCheckOn = 0;
if (CheckInButtonText == "上班打卡")
{
// 执行上班打卡逻辑
CheckInButtonText = "结束打卡";
IsCheckOutButtonEnabled = "False"; // Disable CheckOutButton
CheckOutButtonColor = "Gray";
hidUtils.StartScan();
}
else
{
// 执行结束打卡逻辑
CheckInButtonText = "上班打卡";
IsCheckOutButtonEnabled = "True"; // Enable CheckOutButton
CheckOutButtonColor = "#009999";
hidUtils.StopScan();
}
}
/// <summary>
/// 下班打卡事件
/// </summary>
private void CheckOut()
{
isCheckOn = 1;
if (CheckOutButtonText == "下班打卡")
{
// 执行下班打卡逻辑
CheckOutButtonText = "结束打卡";
IsCheckInButtonEnabled = "False"; // Disable CheckInButton
CheckInButtonColor = "Gray";
hidUtils.StartScan();
}
else
{
// 执行结束打卡逻辑
CheckOutButtonText = "下班打卡";
IsCheckInButtonEnabled = "True"; // Enable CheckInButton
CheckInButtonColor = "#009999";
hidUtils.StopScan();
}
}
/// <summary>
/// 结束打卡事件
/// </summary>
private void Over()
{
// 执行结束打卡的逻辑
CheckInButtonText = "上班打卡";
CheckOutButtonText = "下班打卡";
}
//public event PropertyChangedEventHandler PropertyChanged;
public void OnPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}