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 { /// /// 把当前选中的权限保存为默认权限 /// 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); } } } }