You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 lines
3.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Mesnac.Action.Base;
using Mesnac.Codd.Session;
using System.Data;
using System.Windows.Forms;
namespace Mesnac.Action.Default.Purview
{
/// <summary>
/// 把当前选中的权限保存为默认权限
/// </summary>
public class SaveDefaultPurviewAction : DatabaseAction, IAction
{
public void Run(RuntimeParameter runtime)
{
base.RunIni(runtime);
base.LogDebug("把当前选中的权限保存为默认权限");
DbMCControl basRolePurviewControl = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "BasRolePurview").FirstOrDefault();
if (basRolePurviewControl == null || !basRolePurviewControl.BaseControl.GetType().IsSubclassOf(typeof(TreeView)))
{
base.LogError("保存角色权限 缺少权限树形控件...");
return;
}
TreeView tv = basRolePurviewControl.BaseControl as TreeView;
if (tv != null)
{
DbHelper dbhelper = NewDbHelper(basRolePurviewControl.DesignSource);
if (dbhelper == null)
{
return;
}
save(dbhelper, tv.Nodes);
ShowMsg(Language(10));
}
}
private void save(DbHelper dbhelper, TreeNodeCollection tnc)
{
foreach (TreeNode n in tnc)
{
if (n.Checked)
{
insert(dbhelper, n.Tag as APurview);
}
else
{
delete(dbhelper, n.Tag as APurview);
}
if (n.Nodes != null)
{
save(dbhelper, n.Nodes);
}
}
}
private void insert(DbHelper dbhelper, APurview aPurview)
{
if (aPurview == null)
return;
try
{
StringBuilder sb = new StringBuilder();
sb.AppendLine("IF NOT EXISTS(SELECT * FROM BasDefaultPurview WHERE PurviewID=@PurviewID AND PurviewType=@PurviewType)");
sb.AppendLine("INSERT INTO BasDefaultPurview(PurviewID,PurviewType)");
sb.AppendLine("VALUES(@PurviewID,@PurviewType)");
dbhelper.ClearParameter();
dbhelper.CommandType = CommandType.Text;
dbhelper.CommandText = sb.ToString();
dbhelper.AddParameter("@PurviewID", int.Parse(aPurview.ObjID));
dbhelper.AddParameter("@PurviewType", aPurview.PurviewType);
dbhelper.ExecuteNonQuery();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("保存默认权限失败-insert:" + ex.Message, ex);
}
}
private void delete(DbHelper dbhelper, APurview aPurview)
{
if (aPurview == null)
return;
try
{
dbhelper.ClearParameter();
dbhelper.CommandType = CommandType.Text;
dbhelper.CommandText = "DELETE FROM BasDefaultPurview WHERE PurviewID=@PurviewID AND PurviewType=@PurviewType";
dbhelper.AddParameter("@PurviewID", int.Parse(aPurview.ObjID));
dbhelper.AddParameter("@PurviewType", aPurview.PurviewType);
dbhelper.ExecuteNonQuery();
}
catch (Exception ex)
{
ICSharpCode.Core.LoggingService.Error("保存默认权限失败-delete:" + ex.Message, ex);
}
}
}
}