DeviceManager/DeviceRepairAndOptimization/Pages/Users/frmRoleUsers.cs
2024-06-06 01:09:59 +08:00

208 lines
7.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Windows.Forms;
using DevExpress.XtraBars.ToolbarForm;
using DeviceRepair.Models;
using DeviceRepairAndOptimization.Common;
using DeviceRepairAndOptimization.Biz;
namespace DeviceRepairAndOptimization.Pages.Users
{
public partial class frmRoleUsers : ToolbarForm
{
private RoleModel CurrentRole;
public frmRoleUsers(RoleModel roleModel, bool IsEdit = false)
{
InitializeComponent();
CurrentRole = roleModel;
bBtnSave.Enabled = IsEdit;
this.Load += FrmRoleUsers_Load;
}
private void FrmRoleUsers_Load(object sender, EventArgs ee)
{
try
{
splashScreenManager1.ShowWaitForm();
// 关闭列头右键菜单
gridView1.OptionsMenu.EnableColumnMenu = false;
// 修改字段标题
gridView1.CustomDrawColumnHeader += GridView1_CustomDrawColumnHeader;
APIResponseData apiResponseData = UserManager.Instance.GetAllUsers();
if (!apiResponseData.IsSuccess)
{
throw new Exception(apiResponseData.Message);
}
List<UserInfoModel> userLst = apiResponseData.ToDeserializeObject<List<UserInfoModel>>();
if (!bBtnSave.Enabled && CurrentRole != null)
userLst.RemoveAll(x => x.RoleGroup != CurrentRole.AutoID);
dgvUsers.DataSource = userLst;
if (CurrentRole != null)
{
txtRoleCode.Tag = CurrentRole.AutoID;
txtRoleCode.Text = CurrentRole.RoleCode;
txtRoleName.Text = CurrentRole.RoleName;
txtRoleDesc.Text = CurrentRole.RoleDescription;
txtNote.Text = CurrentRole.RoleNote;
SelectCurrentRoleUsers();
}
splashScreenManager1.TryCloseWait();
}
catch (Exception ex)
{
splashScreenManager1.TryCloseWait();
XtraMessageBoxHelper.Error(ex.Message);
}
}
private void GridView1_CustomDrawColumnHeader(object sender, DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e)
{
(new Action<DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs>(BaseControl.GridControlExtend.CustomDrawColumnHeader)).Invoke(e);
}
private void SelectCurrentRoleUsers()
{
APIResponseData apiResponseData = RoleManger.Instance.GetRoleUsers(CurrentRole.AutoID);
if (apiResponseData.IsSuccess)
{
List<UserInfoModel> lst = apiResponseData.ToDeserializeObject<List<UserInfoModel>>();
SetUserRowSelected(lst);
}
}
private void SetUserRowSelected(List<UserInfoModel> lstUsers)
{
if (gridView1.DataSource == null || gridView1.RowCount < 1)
{
return;
}
for (int i = 0; i < gridView1.RowCount; i++)
{
var AutoID = gridView1.GetRowCellValue(i, "AutoID")?.ToString().Trim();
if (lstUsers.Exists((A) => { return A.AutoID.ToString().Equals(AutoID); }))
{
gridView1.SelectRow(i);
}
else
{
gridView1.UnselectRow(i);
}
}
}
private void bBtnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
try
{
splashScreenManager1.ShowWaitForm();
List<int> vUsers = GetSelectedUsers();
if (vUsers.Count == 0)
{
splashScreenManager1.SetWaitFormDescription("正在更新角色对应用户数据...");
splashScreenManager1.TryCloseWait();
if (XtraMessageBoxHelper.Ask($"没有选择任何用户,是否清空角色 {CurrentRole.RoleName} 下的所有用户?") == DialogResult.OK)
{
//清空角色下的用户
APIResponseData apiResponseData = RoleManger.Instance.ClearRoleUsers(CurrentRole.AutoID);
if (!apiResponseData.IsSuccess)
throw new Exception(apiResponseData.Message);
}
else
{
splashScreenManager1.TryCloseWait();
return;
}
}
else
{
splashScreenManager1.SetWaitFormDescription("正在更新角色对应用户数据...");
RoleEditSubmitModel submitModel = new RoleEditSubmitModel();
submitModel.Role = CurrentRole;
// 用户列表选中项目
foreach (int item in vUsers)
{
submitModel.Users.Add(new UserInfoModel
{
AutoID = item,
ModifyBy = GlobalInfo.CurrentUser.AutoID,
});
}
APIResponseData apiResponseData = RoleManger.Instance.InsertOrEdit(submitModel);
if (!apiResponseData.IsSuccess)
throw new Exception(apiResponseData.Message);
}
// 更新当前用户权限
new Action(GlobalInfo.RefreshAuths).BeginInvoke(null, null);
splashScreenManager1.TryCloseWait();
this.DialogResult = DialogResult.OK;
}
catch (Exception ex)
{
splashScreenManager1.TryCloseWait();
XtraMessageBoxHelper.Error(ex.Message);
}
}
private void comboBoxEdit1_Properties_SelectedIndexChanged(object sender, EventArgs e)
{
try
{
var iIndex = comboBoxEdit1.SelectedIndex;
string cFilterString = "";
if (iIndex == 0)
{
cFilterString = string.Empty;
}
else if (iIndex == 1)
{
cFilterString = "[Status] = true";
}
else if (iIndex == 2)
{
cFilterString = "[Status] = false";
}
gridView1.ActiveFilterString = cFilterString;
}
catch (Exception ex)
{
XtraMessageBoxHelper.Error(ex.Message);
}
}
private List<int> GetSelectedUsers()
{
int[] ia = gridView1.GetSelectedRows();
List<int> lstSelectedUsers = new List<int>();
for (int i = 0; i < ia.Length; i++)
{
var vUser = gridView1.GetRow(ia[i]) as UserInfoModel;
if (!vUser.Status)
{
throw new Exception($"用户{vUser.LoginCode}已锁定,不可以分配角色!");
}
var AutoID = gridView1.GetRowCellValue(ia[i], "AutoID")?.ToString().Trim();
int intAutoID = 0;
if (int.TryParse(AutoID, out intAutoID))
{
lstSelectedUsers.Add(intAutoID);
}
}
return lstSelectedUsers;
}
}
}