Newer
Older
GHFX_REFACTOR / Forms / FrmRoleMgr.cs
wxn on 2 Nov 2016 10 KB 提交
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;

using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using System.Data.SqlClient;

namespace PipeLine.Forms
{
    public partial class FrmRoleMgr : Office2007Form
    {
        private string currentUser;
        public FrmRoleMgr(string username)
        {
            InitializeComponent();
            currentUser = username;
        }

        private void FrmAddRole_Load(object sender, EventArgs e)
        {
            
            SqlConnection conn = null;
            SqlCommand sqlCmd = null;
            SqlDataReader sqlReader = null; 
            try
            {
                //创建connection对象
                conn = new SqlConnection("Data Source=" + Utility.DBServer + ";Initial Catalog=" + Utility.dbdatabase + ";Persist Security Info=True;User ID=" + Utility.userID + ";pwd=" + Utility.DBPassword + "");
                //打开数据库连接
                conn.Open();
                //创建Transac Sql命令对象
                sqlCmd = conn.CreateCommand();
                sqlCmd.CommandText = "select rolename from roles";
                sqlReader = sqlCmd.ExecuteReader();
                bool result = sqlReader.Read();
                while (result)
                {
                    listRoles.Items.Add(sqlReader.GetString(0).Trim());
                    result = sqlReader.Read();
                }
                sqlReader.Close();
                conn.Close();                
            }
            catch (SqlException ex)
            {
                LogError.PublishError(ex);
                sqlReader.Close();
                conn.Close();
            }
            showUser();
        }

        private void btnDeleteUser_Click(object sender, EventArgs e)
        {
            TreeNode currentNode=this.tvUserName.SelectedNode;
            if (currentNode != null)
            {
                string sql = "DELETE FROM users WHERE username = '" + currentNode.Text + "' ";
                string sqldeluserrole = "DELETE FROM user_role WHERE usernameId=(select id from users where username = '" + currentNode.Text + "') ";
                string sqldeluserdepartment = "delete from user_department where usernameId =(select id from users where username='"+currentNode.Text+"')";
                if (currentNode != null)
                {
                    if (currentNode.Nodes.Count > 0)
                    {
                        if (MessageBox.Show("确定删除"+"\""+ currentNode.Text + "\""+"及其创建的用户吗?", "删除用户", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                        {
                            delUser(currentNode, sql, sqldeluserrole, sqldeluserdepartment);
                        }
                    }
                    else
                    {
                        if (MessageBox.Show("确定删除" + "\"" + currentNode.Text + "\"" + "用户吗?", "删除用户", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                        {
                            delUser(currentNode, sql, sqldeluserrole, sqldeluserdepartment);
                        }
                    }
                }
            }
            
        }
        private void delUser(TreeNode currentNode,string sql,string sqldeluserrole,string sqldeluserdepartment)
        {
            if (currentNode != null)
            {
                try
                {
                    OledbHelper.sqlExecuteNonQuery(sqldeluserdepartment);
                    OledbHelper.sqlExecuteNonQuery(sqldeluserrole);
                    OledbHelper.sqlExecuteNonQuery(sql);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                    return;
                }
                if (currentNode.Nodes.Count > 0)
                {
                    foreach (TreeNode nodechild in currentNode.Nodes)
                    {
                        string sqlChild = "DELETE FROM users WHERE username = '" + nodechild.Text + "' ";
                        string sqlChilddeluserrole = "DELETE FROM user_role WHERE usernameId=(select id from users where username ='" + nodechild.Text + "')";
                        string sqlChilddeluserdepartment = "delete from user_department where usernameId =(select id from users where username='" + nodechild.Text + "')";
                        delUser(nodechild, sqlChild, sqlChilddeluserrole, sqlChilddeluserdepartment);
                    }
                }
                currentNode.Remove();
                return;
            }
        }
        private void btnApply_Click(object sender, EventArgs e)
        {         
            TreeNode currentNode = this.tvUserName.SelectedNode;
            if (currentNode == null)
            {
                return;
            }
            try
            {
                string sqlDelUserRole = "delete from user_role WHERE usernameId =(select id from users where username='" + currentNode.Text + "')";
                OledbHelper.sqlExecuteNonQuery(sqlDelUserRole);
                string sqlusernameid = "select id from users where username='" + currentNode.Text + "'";
                string sqlrolenameid = "select id from roles where rolename='" + listRoles.SelectedItem.ToString() + "'";
                DataTable dtusernameid = OledbHelper.ExecuteDataTable(sqlusernameid);
                int usernameid = Convert.ToInt32(dtusernameid.Rows[0][0]);
                DataTable dtrolenameid = OledbHelper.ExecuteDataTable(sqlrolenameid);
                int rolenameid = Convert.ToInt32(dtrolenameid.Rows[0][0]);
                string insertSql = "insert into user_role (usernameId,rolenameId) values(" + usernameid + "," + rolenameid + ")";
                OledbHelper.sqlExecuteNonQuery(insertSql);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                LogError.PublishError(ex);
                return;
            }
        }
        private void showUser()
        {
            string sql = "select username from users where createuser='" + currentUser + "'";
            acheiveUser(sql);
        }
        private void acheiveUser(string sql)
        {
            DataTable dt = OledbHelper.ExecuteDataTable(sql);
            if (dt.Rows.Count > 0)
            {
                foreach (DataRow row in dt.Rows)
                {
                    TreeNode node = new TreeNode();
                    node.Text = row[0].ToString().Trim();
                    string sqlChild = "select username from users where createuser='" + row[0].ToString().Trim() + "'";
                    DGUser(sqlChild,node);
                    tvUserName.Nodes.Add(node);
                }
                
            }

        }
        private void DGUser(string sql,TreeNode parentNode)
        {
            DataTable dt = OledbHelper.ExecuteDataTable(sql);
            if (dt.Rows.Count > 0)
            {
                foreach (DataRow row in dt.Rows)
                {
                    TreeNode nodechild = new TreeNode();
                    nodechild.Text = row[0].ToString().Trim();
                    parentNode.Nodes.Add(nodechild);
                    string sqlchildchild = "select username from users where createuser='" + row[0].ToString().Trim() + "'";
                    DGUser(sqlchildchild,nodechild);
                }
            }
        }
        TreeNode preNode = null;
        private void tvUserName_AfterSelect(object sender, TreeViewEventArgs e)
        {
            TreeNode currentNode = this.tvUserName.SelectedNode;
            if (currentNode != null)
            {
                if (preNode != null)
                {
                    if (preNode != currentNode)
                    {
                        preNode.NodeFont = new Font("宋体", 9, FontStyle.Regular);
                        preNode.ForeColor = Color.Black;
                    }
                }
                currentNode.NodeFont = new Font("宋体", 9, FontStyle.Bold);
                currentNode.ForeColor = Color.Blue;
                preNode = currentNode;
                SqlConnection conn = null;
                SqlCommand sqlCmd = null;
                SqlDataReader sqlReader = null;
                try
                {
                    //创建connection对象
                    conn = new SqlConnection("Data Source=" + Utility.DBServer + ";Initial Catalog=" + Utility.dbdatabase + ";Persist Security Info=True;User ID=" + Utility.userID + ";pwd=" + Utility.DBPassword + "");
                    //打开数据库连接
                    conn.Open();
                    //创建Transac Sql命令对象
                    sqlCmd = conn.CreateCommand();
                    //创建SQL查询语句1
                    sqlCmd.CommandText = "select rolename from roles where id=(select rolenameId from user_role where usernameId=(select id from users where username='" + currentNode.Text + "'))";
                    //查询记录数
                    sqlReader = sqlCmd.ExecuteReader();
                    bool result = sqlReader.Read();
                    string role = "";
                    listRoles.SelectedItems.Clear();
                    if (result)
                    {
                        role = sqlReader.GetString(0).Trim();
                        
                        for (int i = 0; i < listRoles.Items.Count; i++)
                        {
                            string temprole = listRoles.Items[i].ToString();
                            if (temprole == role)
                            {
                                listRoles.SetSelected(i, true);
                                break;
                            }
                        }
                    }
                    sqlReader.Close();
                    conn.Close();
                    string sql = "select person,phone from users where username='"+currentNode.Text.Trim()+"'";
                    DataTable dt = OledbHelper.ExecuteDataTable(sql);
                    if (dt.Rows.Count > 0)
                    {
                        foreach (DataRow row in dt.Rows)
                        {
                            label1.Text = "姓名:"+row[0].ToString().Trim();
                            label2.Text = "联系电话:"+row[1].ToString().Trim();
                        }
                    }
                }
                catch (SqlException ex)
                {
                    MessageBox.Show(ex.Message);
                    LogError.PublishError(ex);
                    sqlReader.Close();
                    conn.Close();
                }
            }
            else
            {
                return;
            }
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
        }

     
    }
}