Files

287 lines
6.7 KiB
C#
Raw Permalink Normal View History

2026-04-30 11:34:41 +08:00
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using SamplePre.Models.Ext;
using SamplePre.Models.Tables;
using SamplePre.ProcessBll.BLL;
using SamplePre.UIWpf.ConfigManager.chirld;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Documents;
namespace SamplePreSystem.UI.ViewModel.ConfigManager
{
public partial class UsersViewModel : ObservableObject
{
UsersBll usersBll = new UsersBll();
// 关闭窗口的委托
public Action<bool> CloseAction { get; set; }
public UsersViewModel()
{
//获取用户数据
GetData();
}
private List<config_user_ext> _userList = new List<config_user_ext>();
public List<config_user_ext> UserList
{
get { return _userList; }
set {
SetProperty(ref _userList, value);
}
}
private config_user_ext _selectUser;
public config_user_ext SelectUser
{
get { return _selectUser; }
set { _selectUser = value; }
}
private config_user_ext _configUser =new config_user_ext();
public config_user_ext ConfigUser
{
get { return _configUser; }
set {
SetProperty(ref _configUser, value);
}
}
/// <summary>
/// 查询用户
/// </summary>
public void GetData()
{
UserList = usersBll.GetUsers();
}
private List<config_role_ext> roles = new List<config_role_ext>();
public List<config_role_ext> Roles
{
get { return roles; }
set {
SetProperty(ref roles, roles);
}
}
/// <summary>
/// 绑定角色数据
/// </summary>
public void InitCheckedListBox()
{
Roles.Clear();
var roleList = usersBll.GetRoles();
foreach (var item in roleList)
{
config_role_ext model = new config_role_ext();
model.id = item.id;
model.name = item.name;
model.description = item.description;
model.IsSelected = false;
Roles.Add(model);
}
if (!string.IsNullOrEmpty(ConfigUser.id))
{
//获取用户的角色
var userRoles = usersBll.GetUserRoles(ConfigUser.id);
foreach(var item in Roles)
{
if(userRoles.Where(p=>p.role_id == item.id).Count() > 0)
{
item.IsSelected = true;
}
}
}
}
private string isEnable = "启用";
public string IsEnable
{
get { return isEnable; }
set {
SetProperty(ref isEnable, isEnable);
}
}
public bool SaveUser()
{
if (ConfigUser == null) return false;
//ConfigUser.username = this.txtUserName.Text;
//ConfigUser.password = this.txtPwd.Text;
ConfigUser.is_enabled = IsEnable == "启用" ? true : false;
if (string.IsNullOrEmpty(ConfigUser.id))
{
//new
ConfigUser.id = Guid.NewGuid().ToString();
//选中的角色
var roles = GetCheckedData();
if (usersBll.SaveUserData(ConfigUser, roles) < 0)
{
return false;
}
}
else
{
//update
//选中的角色
var roles = GetCheckedData();
if (usersBll.UpdateUserData(ConfigUser, roles) < 0)
{
return false;
}
}
return true;
}
/// <summary>
/// 获取用户角色
/// </summary>
/// <returns></returns>
public List<config_user_role> GetCheckedData()
{
List<config_user_role> userRoles = new List<config_user_role>();
foreach (var role in Roles)
{
if(role.IsSelected)
{
//config_role item = cbRoles.GetItem(i) as config_role;
config_user_role configUserRole = new config_user_role();
configUserRole.role_id = role.id.ToString();
configUserRole.user_id = ConfigUser.id;
userRoles.Add(configUserRole);
}
}
return userRoles;
}
public bool DeleUser()
{
if(SelectUser != null)
{
config_user user = SelectUser;
if (MessageBox.Show($"是否真的删除{user.username}", "删除提示", MessageBoxButton.OKCancel) == MessageBoxResult.OK)
{
if (usersBll.DeleteUser(user) < 0)
{
MessageBox.Show("用户删除失败!");
return false;
}
//刷新用户
GetData();
}
}
return true;
}
[RelayCommand]
public void BtnAddClick()
{
ConfigUser = new config_user_ext();
//初始化角色数据
InitCheckedListBox();
NewUserWindow frm = new NewUserWindow(this);
if (frm.ShowDialog() == true)
{
//刷新数据
GetData();
}
}
[RelayCommand]
public void BtnEditClick()
{
ConfigUser = SelectUser;
//初始化角色数据
InitCheckedListBox();
NewUserWindow frm = new NewUserWindow(this);
if (frm.ShowDialog() == true)
{
//刷新数据
GetData();
}
}
[RelayCommand]
public void BtnDeleClick()
{
DeleUser();
}
[RelayCommand]
public void BtnSaveUserClick()
{
if (SaveUser() == true)
{
this.CloseAction?.Invoke(true);
}
}
}
}