using SqlSugar;
using WinformDevFramework.Core.Winform;
using WinformDevFramework.IServices;
using WinformDevFramework.IServices.System;
using WinformDevFramework.Models;
namespace WinformDevFramework
{
public partial class FrmUser : BaseForm1
{
private ISysUserServices _sysUserServices;
private IsysDeptServices _sysDeptServices;
public FrmUser(ISysUserServices sysUserServices,IsysDeptServices sysDeptServices)
{
_sysUserServices=sysUserServices;
_sysDeptServices=sysDeptServices;
InitializeComponent();
}
///
/// 初始化数据
///
public override void Init()
{
base.Init();
//初始化 数据列表 列名称
this.dataGridViewList.DataSource = GetAllUsers();
this.dataGridViewList.Columns["Username"]!.HeaderText = "登录名";
this.dataGridViewList.Columns["FullName"]!.HeaderText = "呢称";
this.dataGridViewList.Columns["Sex"]!.HeaderText = "性别";
this.dataGridViewList.Columns["Email"]!.HeaderText = "邮箱";
this.dataGridViewList.Columns["PhoneNumber"]!.HeaderText = "手机号码";
this.dataGridViewList.Columns["CreateTime"]!.HeaderText = "创建时间";
this.dataGridViewList.Columns["LastLoginTime"]!.HeaderText = "最后登录时间";
this.dataGridViewList.Columns["Status"]!.HeaderText = "状态";
this.dataGridViewList.Columns["DeptName"]!.HeaderText = "部门";
this.dataGridViewList.Columns["DeptID"].Visible = false;
this.dataGridViewList.Columns["Password"].Visible = false;
SetParentMenu(_sysDeptServices.Query());
SetToolButtonStatus(formStatus);
SetToolsButton();
}
public override void DataGridViewListDoubleClick(object? sender, DataGridViewCellEventArgs e)
{
base.DataGridViewListDoubleClick(sender, e);
var g = (DataGridView)sender;
var model = g.CurrentRow.DataBoundItem as sysUser;
//给详情页设置数据
this.txtID.Text = model.ID.ToString();
this.txtUserName.Text = model.Username;
this.txtFullName.Text = model.Fullname;
this.cmbSex.Text = model.Sex;
this.txtMail.Text = model.Email;
this.txtPhoneNumber.Text = model.PhoneNumber;
this.cbStatus.Checked = model.Status.Value;
this.dateTimePickerCreateDate.Text = model.CreateTime.ToString();
this.dateTimePickerLastLoginDate.Text = model.LastLoginTime.ToString();
var pmenu = _sysDeptServices.QueryById(model.DeptID);
if (pmenu != null)
{
TreeNode node = new TreeNode(pmenu.DeptName);
node.Name = pmenu.ID.ToString();
node.Tag = pmenu;
this.DeptID.TreeView.SelectedNode = this.DeptID.TreeView.Nodes.Find(pmenu.ID.ToString(), true).FirstOrDefault();
this.DeptID.Text = pmenu.DeptName;
this.DeptID.Tag = pmenu.ID;
}
SetToolButtonStatus(formStatus);
}
///
/// 获取所有用户
///
///
private List GetAllUsers()
{
return _sysUserServices.QueryMuch((u, d) =>new object[]
{
JoinType.Left,u.DeptID==d.ID
},
(u, d) =>new sysUser()
{
ID = u.ID,
CreateTime = u.CreateTime,
Username = u.Username,
Fullname = u.Fullname,
Sex = u.Sex,
Email = u.Email,
PhoneNumber = u.PhoneNumber,
Status = u.Status,
LastLoginTime = u.LastLoginTime,
Password = u.Password,
DeptName = d.DeptName,
DeptID = u.DeptID,
}
);
}
public override void TabControlSelectingFunction(object? sender, TabControlCancelEventArgs e)
{
base.TabControlSelectingFunction(sender, e);
}
///
/// 新增
///
///
///
public override void AddFunction(object sender, EventArgs e)
{
base.AddFunction(sender, e);
SetToolButtonStatus(formStatus);
dateTimePickerCreateDate.Text = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
cmbSex.Text = "男";
}
///
/// 编辑
///
///
///
public override void EditFunction(object sender, EventArgs e)
{
base.EditFunction(sender, e);
SetToolButtonStatus(formStatus);
txtUserName.Enabled = false;
}
///
/// 保存
///
///
///
public override void SaveFunction(object sender, EventArgs e)
{
base.SaveFunction(sender, e);
//if (ValidateData())
{
//新增
if (string.IsNullOrEmpty(txtID.Text))
{
sysUser newUser = new sysUser();
newUser.Username = txtUserName.Text;
newUser.Fullname = txtFullName.Text;
newUser.Sex = cmbSex.Text;
newUser.Email = txtMail.Text;
newUser.PhoneNumber=txtPhoneNumber.Text;
newUser.Status = cbStatus.Checked;
newUser.CreateTime = DateTime.Parse(dateTimePickerCreateDate.Text);
newUser.LastLoginTime = DateTime.Parse(dateTimePickerLastLoginDate.Text);
newUser.Password = "123456";
if (DeptID.TreeView.SelectedNode == null)
{
newUser.DeptID = int.Parse(DeptID.Tag.ToString());
}
else
{
newUser.DeptID = ((sysDept)DeptID.TreeView.SelectedNode.Tag).ID;
}
var id = _sysUserServices.Insert(newUser);
txtID.Text = id.ToString();
if (id > 0)
{
MessageBox.Show("保存成功!", "提示");
}
}
// 修改
else
{
sysUser user = _sysUserServices.QueryById(int.Parse(txtID.Text));
user.Username = txtUserName.Text;
user.Fullname = txtFullName.Text;
user.Sex = cmbSex.Text;
user.Email = txtMail.Text;
user.PhoneNumber = txtPhoneNumber.Text;
user.Status = cbStatus.Checked;
user.CreateTime = DateTime.Parse(dateTimePickerCreateDate.Text);
user.LastLoginTime = DateTime.Parse(dateTimePickerLastLoginDate.Text);
if (DeptID.TreeView.SelectedNode == null)
{
user.DeptID = int.Parse(DeptID.Tag.ToString());
}
else
{
user.DeptID = ((sysDept)DeptID.TreeView.SelectedNode.Tag).ID;
}
if (_sysUserServices.Update(user))
{
MessageBox.Show("保存成功!", "提示");
}
}
SetToolButtonStatus(formStatus);
var menus = GetAllUsers();
this.dataGridViewList.DataSource = menus;
}
}
///
/// 撤销
///
///
///
public override void CanelFunction(object sender, EventArgs e)
{
bool isAdd = formStatus == FormStatus.Add;
base.CanelFunction(sender, e);
SetToolButtonStatus(formStatus);
btnEdit.Enabled = !isAdd;
btnResetPW.Enabled=!isAdd;
btnDel.Enabled = !isAdd;
}
///
/// 删除
///
///
///
public override void DelFunction(object sender, EventArgs e)
{
base.DelFunction(sender, e);
var result = MessageBox.Show("是否删除?", "确认", MessageBoxButtons.YesNoCancel);
if (result == DialogResult.Yes)
{
_sysUserServices.DeleteById(Int32.Parse(txtID.Text));
SetToolButtonStatus(formStatus);
var menus = GetAllUsers();
this.dataGridViewList.DataSource = menus;
}
}
///
/// 关闭
///
///
///
public override void CloseFunction(object sender, EventArgs e)
{
base.CloseFunction(sender, e);
}
///
/// 重置密码
///
///
///
public override void ResetPWFunction(object sender, EventArgs e)
{
var user = _sysUserServices.QueryById(int.Parse(txtID.Text));
if (user != null)
{
user.Password = "123456";
if (_sysUserServices.Update(user))
{
MessageBox.Show("重置成功!", "提示");
}
}
}
///
/// 设置功能按钮状态
///
public override void SetToolButtonStatus(FormStatus status)
{
switch (status)
{
case FormStatus.Add:
{
btnAdd.Enabled = false;
btnEdit.Enabled = false;
btnSave.Enabled = true;
btnDel.Enabled = false;
btnCanel.Enabled = true;
btnResetPW.Enabled = false;
SetControlStatus(this.groupBox1, true);
ClearControlsText(this.groupBox1);
break;
}
case FormStatus.Edit:
{
btnAdd.Enabled = false;
btnEdit.Enabled = false;
btnSave.Enabled = true;
btnDel.Enabled = false;
btnCanel.Enabled = true;
btnResetPW.Enabled = true;
SetControlStatus(this.groupBox1, true);
break;
}
case FormStatus.View:
{
btnAdd.Enabled = true;
btnEdit.Enabled = true;
btnSave.Enabled = false;
btnDel.Enabled = true;
btnCanel.Enabled = false;
btnResetPW.Enabled = true;
SetControlStatus(this.groupBox1, false);
break;
}
case FormStatus.Canel:
{
btnAdd.Enabled = true;
btnEdit.Enabled = true;
btnSave.Enabled = false;
btnDel.Enabled = false;
btnCanel.Enabled = false;
btnResetPW.Enabled = true;
SetControlStatus(this.groupBox1, false);
break;
}
case FormStatus.First:
{
btnAdd.Enabled = true;
btnEdit.Enabled = false;
btnSave.Enabled = false;
btnDel.Enabled = false;
btnCanel.Enabled = false;
btnResetPW.Enabled = false;
SetControlStatus(this.groupBox1, false);
break;
}
case FormStatus.Save:
{
btnAdd.Enabled = true;
btnEdit.Enabled = true;
btnSave.Enabled = false;
btnDel.Enabled = true;
btnCanel.Enabled = false;
btnResetPW.Enabled = true;
SetControlStatus(this.groupBox1, false);
break;
}
case FormStatus.Del:
{
btnAdd.Enabled = true;
btnEdit.Enabled = false;
btnSave.Enabled = false;
btnDel.Enabled = false;
btnCanel.Enabled = false;
btnResetPW.Enabled = false;
SetControlStatus(this.groupBox1, false);
ClearControlsText(this.groupBox1);
break;
}
}
}
//验证数据
public override bool ValidateData()
{
bool result = false;
if (string.IsNullOrEmpty(txtUserName.Text))
{
MessageBox.Show("账号不能为空!");
return result;
}
if (string.IsNullOrEmpty(txtFullName.Text))
{
MessageBox.Show("昵称不能为空!");
return result;
}
if (string.IsNullOrEmpty(DeptID.Text))
{
MessageBox.Show("部门不能为空!");
return result;
}
result = true;
return result;
}
///
/// 上级部门设置
///
private void SetParentMenu(List menus)
{
DeptID.Nodes.Clear();
List nodes = new List();
foreach (var menu in menus)
{
TreeNode node = new TreeNode(menu.DeptName);
node.Tag = menu;
node.Name = menu.ID.ToString();
nodes.Add(node);
}
foreach (var treeNode in nodes)
{
var menu = (sysDept)treeNode.Tag;
treeNode.Nodes.AddRange(nodes.Where(p => menu.ID == ((sysDept)p.Tag).PDeptID).ToArray());
}
DeptID.Nodes.Add(nodes.Where(p => ((sysDept)p.Tag).PDeptID == 0).FirstOrDefault());
}
}
}