DeviceManager/DeviceRepairAndOptimization/Pages/Users/frmUserAdd.cs
2024-06-04 17:25:13 +08:00

484 lines
19 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using DevExpress.XtraBars.ToolbarForm;
using DeviceRepair.Models;
using DeviceRepair.Utils.Security;
using DeviceRepairAndOptimization.Biz;
using DeviceRepairAndOptimization.Common;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace DeviceRepairAndOptimization.Pages.Users
{
public partial class frmUserAdd : ToolbarForm
{
/// <summary>
/// 是否设定用户角色
/// </summary>
public bool IsSetUserRoles = false;
private UserInfoModel CurrentEntity;
private string OperationType = "新增";
public frmUserAdd(UserInfoModel entity = null, bool AllocationRole = false, string title = "用户新增")
{
InitializeComponent();
this.Text = title;
// 关闭右键Customize Layout菜单
Root.ViewInfo.OwnerILayoutControl.AllowCustomizationMenu = false;
#region
// 设置 全选框改为标题
gridView1.CustomDrawColumnHeader += (s, e) =>
{
if (e.Column != null && e.Column.Caption == "Selection")
{
e.Info.Caption = "选择";
}
};
// 选项框多选改单选
gridView1.RowCellClick += (s, e) =>
{
if (e.Column.Caption == "Selection")
{
if (gridView1.SelectedRowsCount > 0)
{
for (int i = 0; i < this.gridView1.RowCount; i++)
{
if (e.Clicks == 1 && this.gridView1.IsRowSelected(i) && this.gridView1.FocusedRowHandle.ToString().Equals(i.ToString()) == false)
{
this.gridView1.UnselectRow(i);
}
}
}
}
};
#endregion
this.Load += FrmRoleAdd_Load;
if (entity != null)
{
OperationType = "修改";
CurrentEntity = entity;
bBtnSaveClose.Visibility = DevExpress.XtraBars.BarItemVisibility.Never;
txtUserCode.Enabled = false;
if (AllocationRole)
{
txtEMail.Enabled = false;
txtTel.Enabled = false;
txtNote.Enabled = false;
}
}
IsSetUserRoles = AllocationRole;
}
/// <summary>
/// 窗体加载
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void FrmRoleAdd_Load(object sender, EventArgs e)
{
try
{
// 关闭列头右键菜单
gridView1.OptionsMenu.EnableColumnMenu = false;
#region
if (IsSetUserRoles)
{
txtUserName.Enabled = false;
txtTel.Enabled = false;
txtPassword.Enabled = false;
txtEMail.Enabled = false;
txtNote.Enabled = false;
}
splashScreenManager1.ShowWaitForm();
APIResponseData apiResponseData = RoleManger.Instance.GetAllRole();
if (apiResponseData.IsSuccess)
{
List<RoleModel> lst = apiResponseData.ToDeserializeObject<List<RoleModel>>();
dgvRoles.DataSource = lst.Where(x => x.RoleStatus).ToList();
if (CurrentEntity != null)
{
txtUserCode.Text = CurrentEntity.LoginCode;
txtUserCode.Tag = CurrentEntity.AutoID;
txtUserName.Text = CurrentEntity.RealName;
txtTel.Text = CurrentEntity.Phone;
txtEMail.Text = CurrentEntity.Email;
txtNote.Text = CurrentEntity.Description;
txtPassword.Text = string.IsNullOrEmpty(CurrentEntity.PassWord) ? string.Empty : "******";
#region Myl20210115
txtPassword.Enabled = false;
#endregion
txtUserCode.Enabled = false;
txtUserName.SelectAll();
txtUserName.Focus();
}
}
else
{
splashScreenManager1.TryCloseWait();
XtraMessageBoxHelper.Error(apiResponseData.Message);
}
#endregion
#region
if (CurrentEntity != null && CurrentEntity.RoleGroup != 0)
{
// 遍历每一行,找到符合条件的行并选择
for (int i = 0; i < gridView1.RowCount; i++)
{
int v = 0;
if (int.TryParse(gridView1.GetRowCellValue(i, "AutoID") + "", out v) && v == CurrentEntity.RoleGroup)
{
gridView1.SelectRow(i);
break; // 可以选择中断循环,如果只需要选择第一行
}
}
}
#endregion
splashScreenManager1.TryCloseWait();
}
catch (Exception ex)
{
splashScreenManager1.TryCloseWait();
XtraMessageBoxHelper.Error(ex.Message);
}
}
/// <summary>
/// 保存
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void bBtnSave_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
try
{
splashScreenManager1.ShowWaitForm();
if (ValidateData())
{
if (CurrentEntity.AutoID > 0)
{
CurrentEntity.ModifyBy = GlobalInfo.CurrentUser.AutoID;
}
else
{
CurrentEntity.CreateBy = GlobalInfo.CurrentUser.AutoID;
}
APIResponseData apiResponseData = UserManager.Instance.InsertOrEdit(CurrentEntity);
if (apiResponseData.IsSuccess)
{
if (CurrentEntity.AutoID != 0)
{
splashScreenManager1.TryCloseWait();
DialogResult = System.Windows.Forms.DialogResult.OK;
return;
}
CurrentEntity = null;
txtEMail.Text = "";
txtNote.Text = "";
txtPassword.Text = "";
txtTel.Text = "";
txtUserCode.Text = "";
txtUserName.Text = "";
gridView1.ClearSelection();
splashScreenManager1.TryCloseWait();
}
else
{
splashScreenManager1.TryCloseWait();
XtraMessageBoxHelper.Error(apiResponseData.Message);
}
}
splashScreenManager1.TryCloseWait();
}
catch (Exception ex)
{
splashScreenManager1.TryCloseWait();
XtraMessageBoxHelper.Error(ex.Message);
}
}
/// <summary>
/// 保存并且关闭
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void bBtnSaveClose_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
try
{
splashScreenManager1.ShowWaitForm();
if (ValidateData())
{
if (CurrentEntity.AutoID > 0)
{
CurrentEntity.ModifyBy = GlobalInfo.CurrentUser.AutoID;
}
else
{
CurrentEntity.CreateBy = GlobalInfo.CurrentUser.AutoID;
}
APIResponseData apiResponseData = UserManager.Instance.InsertOrEdit(CurrentEntity);
if (!apiResponseData.IsSuccess)
{
throw new Exception(apiResponseData.Message);
}
DialogResult = System.Windows.Forms.DialogResult.OK;
}
splashScreenManager1.TryCloseWait();
}
catch (Exception ex)
{
splashScreenManager1.TryCloseWait();
XtraMessageBoxHelper.Error(ex.Message);
}
}
/// <summary>
/// 数据验证
/// </summary>
/// <returns></returns>
private bool ValidateData()
{
bool isSuccess = false;
try
{
string userCode = string.Empty;
if (CurrentEntity == null || CurrentEntity.AutoID == 0)
{
userCode = txtUserCode.Text;
if (string.IsNullOrWhiteSpace(userCode))
{
dxErrorProvider1.SetError(txtUserCode, "账号不可以为空!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else if (userCode.Trim().Length > 50)
{
dxErrorProvider1.SetError(txtUserCode, "账号长度超限!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else
{
APIResponseData apiResponseData = UserManager.Instance.ExistLoginCode(userCode);
if (!apiResponseData.IsSuccess)
{
dxErrorProvider1.SetError(txtUserCode, apiResponseData.Message, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else if (apiResponseData.ToBool())
{
dxErrorProvider1.SetError(txtUserCode, "账号已经存在!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else
{
dxErrorProvider1.SetError(txtUserCode, "", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
}
}
}
string RealName = txtUserName.Text;
if (string.IsNullOrWhiteSpace(RealName))
{
dxErrorProvider1.SetError(txtUserName, "姓名不可以为空!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else if (RealName.Trim().Length > 50)
{
dxErrorProvider1.SetError(txtUserName, "姓名长度超限!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else
{
dxErrorProvider1.SetError(txtUserName, "", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
}
#region
string Password = string.Empty;
if (CurrentEntity == null || CurrentEntity.AutoID == 0)
{
Password = txtPassword.Text;
int MinPasswordStrategyTypeCounts = PassWordValidata.Instance.GetTrueNumber(Password);
if (string.IsNullOrWhiteSpace(Password))
{
dxErrorProvider1.SetError(txtPassword, "新密码不可以为空!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else if (EncryptionHelper.EncryptByMD5(Password).Length > 50)
{
dxErrorProvider1.SetError(txtPassword, "新密码长度超限!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else if (EncryptionHelper.EncryptByMD5(Password).Length > 50)
{
dxErrorProvider1.SetError(txtPassword, "密码长度超限!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else if (PassWordValidata.Instance.PasswordMinLength != 0 && Password.Length < PassWordValidata.Instance.PasswordMinLength)
{
dxErrorProvider1.SetError(txtPassword, PassWordValidata.Instance.PasswordMinLengthText, DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else if (MinPasswordStrategyTypeCounts < 3)
{
dxErrorProvider1.SetError(txtPassword, $"密码不合符密码强度策略(大写字母/小写字母/数字/特殊字符中最好满足其中3种", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else
{
dxErrorProvider1.SetError(txtPassword, $"", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
}
}
#endregion
string Phone = txtTel.Text;
if (!string.IsNullOrWhiteSpace(Phone))
{
if (!RexEX.TaxMatch(Phone.Trim()) || Phone.Length != 11)
{
dxErrorProvider1.SetError(txtTel, "手机号码格式不正确!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else
{
dxErrorProvider1.SetError(txtTel, "", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
}
}
string Email = txtEMail.Text;
if (!string.IsNullOrWhiteSpace(Email) || Email.Length > 200)
{
if (!RexEX.EmailMatch(Email.Trim()))
{
dxErrorProvider1.SetError(txtEMail, "邮箱格式不正确!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else
{
dxErrorProvider1.SetError(txtEMail, "", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
}
}
string description = txtNote.Text;
if (!string.IsNullOrWhiteSpace(description) && description.Trim().Length > 4000)
{
dxErrorProvider1.SetError(txtNote, "备注的长度超限!", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
return false;
}
else
{
dxErrorProvider1.SetError(txtNote, "", DevExpress.XtraEditors.DXErrorProvider.ErrorType.Warning);
}
CurrentEntity = new UserInfoModel
{
AutoID = CurrentEntity?.AutoID ?? 0,
LoginCode = userCode.Trim(),
RealName = RealName.Trim(),
PassWord = EncryptionHelper.EncryptByMD5(Password),
Phone = Phone.Trim(),
Email = Email.Trim(),
Status = true,
Description = description.Trim()
};
int[] roles = gridView1.GetSelectedRows();
if (roles.Length > 0)
{
RoleModel role = (RoleModel)gridView1.GetRow(roles[0]);
CurrentEntity.RoleCode = role.RoleCode;
CurrentEntity.RoleName = role.RoleName;
CurrentEntity.RoleGroup = role.AutoID;
}
return true;
}
catch (Exception ex)
{
splashScreenManager1.TryCloseWait();
XtraMessageBoxHelper.Error(ex.Message);
}
return isSuccess;
}
/// <summary>
/// 查看密码或随机密码
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void txtPassword_ButtonClick(object sender, DevExpress.XtraEditors.Controls.ButtonPressedEventArgs e)
{
try
{
if (!e.Button.Caption.Equals("WATCHPWD"))
{
txtPassword.Text = PasswordStrategy.Instance.GenRandomPassword();
}
else
{
txtPassword.Properties.UseSystemPasswordChar = !txtPassword.Properties.UseSystemPasswordChar;
}
}
catch (Exception ex)
{
XtraMessageBoxHelper.Error(ex.Message);
}
}
private void gridView1_RowCellClick(object sender, DevExpress.XtraGrid.Views.Grid.RowCellClickEventArgs e)
{
if (e.Column.FieldName == "DX$CheckboxSelectorColumn")
{
if (gridView1.SelectedRowsCount > 0)
{
for (int i = 0; i < this.gridView1.RowCount; i++)
{
if (e.Clicks == 1 && this.gridView1.IsRowSelected(i) && this.gridView1.FocusedRowHandle.ToString().Equals(i.ToString()) == false)
{
this.gridView1.UnselectRow(i);
}
}
}
}
}
private void gridView1_CustomDrawColumnHeader(object sender, DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs e)
{
(new Action<DevExpress.XtraGrid.Views.Grid.ColumnHeaderCustomDrawEventArgs>(BaseControl.GridControlExtend.CustomDrawColumnHeader)).Invoke(e);
}
}
}