using BLL;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web.UI.WebControls;
namespace FineUIPro.Web.common.SysManage
{
public partial class RolePower : PageBase
{
#region 加载
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
InitTreeMenu();
}
}
#endregion
#region 查询
protected void TextBox_TextChanged(object sender, EventArgs e)
{
this.InitTreeMenu();
}
#endregion
#region 加载树
private void InitTreeMenu()
{
this.tvRole.Nodes.Clear();
TreeNode rootRole = new TreeNode();
//if (this.GetLanguage== "zh-CN")
//{
// rootRole.Text = "角色";
//}
//else
//{
rootRole.Text = "Roles";
//}
rootRole.NodeID = "0";
rootRole.Expanded = true;
this.tvRole.Nodes.Add(rootRole);
BoundTree(rootRole.Nodes);
}
///
/// 遍历节点
///
///
///
///
private void BoundTree(TreeNodeCollection nodes)
{
List roles = BLL.Sys_RoleService.GetRoleList();
if (!string.IsNullOrEmpty(this.txtRoleName.Text))
{
roles = roles.Where(e => e.RoleName.Contains(this.txtRoleName.Text.Trim())).ToList();
}
if (roles.Count() > 0)
{
TreeNode tn = null;
foreach (var q in roles)
{
tn = new TreeNode();
tn.Text = q.RoleName;
tn.NodeID = q.RoleId;
tn.ToolTip = q.Def;
tn.EnableClickEvent = true;
nodes.Add(tn);
}
}
}
#endregion
#region Tree点击事件
///
/// 选择角色事件
///
///
///
protected void tvRole_NodeCommand(object sender, TreeCommandEventArgs e)
{
var role = BLL.Sys_RoleService.GetRole(this.tvRole.SelectedNodeID);
if (role != null)
{
this.lblRoleName.Text = "Role:" + role.RoleName;
}
this.BindGrid();
}
#endregion
#region BindGrid
private void BindGrid()
{
string strSql = "";
//string strSql = @"SELECT MenuId,MenuName,SuperMenu FROM dbo.Sys_Menu
// ORDER BY SortIndex";
//if (this.GetLanguage == "en-US")
//{
strSql = @"SELECT MenuId,MenuEnName AS MenuName,SuperMenu FROM dbo.Sys_Menu
ORDER BY SortIndex";
//}
List parms = new List();
//parms.Add(new SqlParameter("@MenuModule", this.drpMenuModule.SelectedValue));
//SqlParameter[] parameter = parms.ToArray();
DataTable dt = SQLHelper.GetDataTableRunText(strSql, null);
Grid1.DataSource = dt;
Grid1.DataBind();
}
#endregion
#region Grid点击事件
protected void Grid1_RowDataBound(object sender, GridRowEventArgs e)
{
System.Web.UI.WebControls.CheckBoxList cblButtonPower = (System.Web.UI.WebControls.CheckBoxList)(this.Grid1.Rows[e.RowIndex].FindControl("cblButtonPower"));
string menuId = e.Row.RowID;
var menu = from x in Funs.DB.Sys_Menu where x.MenuId == menuId select x;
if (menu != null && menu.Count() > 0)
{
var b = from x in Funs.DB.Sys_ButtonToMenu where x.MenuId == menu.First().MenuId orderby x.SortIndex select x;
if (b != null && b.Count() > 0)
{
//cblButtonPower.DataTextField = "ButtonName";
//if (this.GetLanguage == "en-US")
//{
cblButtonPower.DataTextField = "ButtonEnName";
//}
cblButtonPower.DataValueField = "ButtonToMenuId";
cblButtonPower.DataSource = b.ToList();
cblButtonPower.DataBind();
}
if (tvRole.SelectedNode != null && tvRole.SelectedNodeID != "0")
{
var power = (from x in Funs.DB.Sys_ButtonPower
where x.MenuId == menu.First().MenuId
&& x.RoleId == tvRole.SelectedNodeID
select x).ToList();
for (int i = 0; i < power.Count; i++)
{
for (int j = 0; j < cblButtonPower.Items.Count; j++)
{
if (power[i].ButtonToMenuId == cblButtonPower.Items[j].Value)
{
cblButtonPower.Items[j].Selected = true;
}
}
}
}
}
}
#endregion
#region 保存
///
/// 保存按钮事件
///
///
///
protected void btnSave_Click(object sender, EventArgs e)
{
if (tvRole.SelectedNode == null || tvRole.SelectedNodeID == "0")
{
Alert.ShowInTop("Please select a role!", MessageBoxIcon.Warning);
return;
}
var power = from x in Funs.DB.Sys_ButtonPower
join y in Funs.DB.Sys_Menu on x.MenuId equals y.MenuId
where x.RoleId == tvRole.SelectedNodeID
select x;
Funs.DB.Sys_ButtonPower.DeleteAllOnSubmit(power);
Funs.DB.SubmitChanges();
for (int i = 0; i < this.Grid1.Rows.Count; i++)
{
System.Web.UI.WebControls.CheckBoxList cblButtonPower = (System.Web.UI.WebControls.CheckBoxList)(this.Grid1.Rows[i].FindControl("cblButtonPower"));
if (cblButtonPower.SelectedItem != null)
{
foreach (System.Web.UI.WebControls.ListItem item in cblButtonPower.Items)
{
if (item.Selected)
{
Model.Sys_ButtonPower newPower = new Model.Sys_ButtonPower();
newPower.ButtonPowerID = SQLHelper.GetNewID(typeof(Model.Sys_ButtonPower));
newPower.RoleId = tvRole.SelectedNodeID;
newPower.MenuId = Grid1.DataKeys[i][0].ToString();
newPower.ButtonToMenuId = item.Value;
Funs.DB.Sys_ButtonPower.InsertOnSubmit(newPower);
Funs.DB.SubmitChanges();
}
}
string supMenuId = Grid1.DataKeys[i][1].ToString();
InsertSuperMenu(supMenuId, tvRole.SelectedNodeID);
}
}
ShowNotify("Role permissions set successfully!");
BLL.Sys_LogService.AddLog(this.CurrUser.UserId, "Role permission Settings");
}
private void InsertSuperMenu(string supMenuId, string roleId)
{
Model.FCLDB db = Funs.DB;
var menuPower = from x in db.Sys_ButtonPower where x.RoleId == roleId && x.MenuId == supMenuId select x;
if (menuPower.Count() == 0 && supMenuId != "0")
{
string newKeyID = SQLHelper.GetNewID(typeof(Model.Sys_ButtonPower));
Model.Sys_ButtonPower newPower = new Model.Sys_ButtonPower();
newPower.ButtonPowerID = newKeyID;
newPower.RoleId = roleId;
newPower.MenuId = supMenuId;
db.Sys_ButtonPower.InsertOnSubmit(newPower);
db.SubmitChanges();
var menu = from x in db.Sys_Menu where x.MenuId == supMenuId select x;
if (menu.Count() > 0)
{
InsertSuperMenu(menu.First().SuperMenu, roleId);
}
}
}
#endregion
}
}