using Core.Web.WebHelper.UtilityModel; using CRM.Core.BLL.Base; using CRM.Core.Model.Entity; using System; using System.Collections.Generic; using System.Linq; using WX.CRM.Common; namespace Core.Web.WebHelper.UserRight { public class InitRightsToData { public bool Insert(ref WX.CRM.Common.ValidationErrors errors) { // Common.ValidationErrors errors = new Common.ValidationErrors(); //string message = ""; //try //{ var right_bl = new BAS_RIGHT_BL(); var rightgroup_bl = new BAS_RIGHTGROUP_BL(); var initRights = InitRights.getInitRights(); //代码配置的权限 var basright = right_bl.GetList(); //数据库中的权限 var rightgrouplist = rightgroup_bl.GetList(); //权限组别 //foreach (InnerRight item in initRights) //{ // BAS_RIGHT model = basright.FirstOrDefault(m => m.RIGHTID == item.RightId); // if (model == null)//没数据就新增 // { // BAS_RIGHT right = new BAS_RIGHT // { // RIGHTID = item.RightId, // RNAME = item.RightName, // CTIME = DateTime.Now, // CREATEUSER = 10000 // }; // right_bl.Create(ref errors, right); // } // else if (model != null) // { // } //} var group = initRights.GroupBy(c => c.RigGroup); foreach (var item in group) { //LogHelper.Info(item.Key); if (!rightgrouplist.Any(p => p.NAME == item.Key)) { var model = new BAS_RIGHTGROUP() { NAME = item.Key, PARENTID = 0 }; rightgroup_bl.Create(ref errors, model); } } rightgrouplist = rightgroup_bl.GetList();//重新获取一下,需要获取返回ID //create Right var dataRights = (from m in basright select new InnerRight() { RightId = m.RIGHTID, RightName = m.RNAME, RigGroup = m.GROUPID.ToString() }).ToList(); var InsertRights = initRights.Except(dataRights, new InitRightComPare()).ToList();//新增的权限 var bas_rights = new List(); foreach (var innerright in InsertRights) { var rgId = rightgrouplist.FirstOrDefault(p => p.NAME == innerright.RigGroup); var right = new BAS_RIGHT { RIGHTID = innerright.RightId, RNAME = innerright.RightName, CTIME = DateTime.Now, CREATEUSER = 10000 }; if (rgId != null) right.GROUPID = rgId.PKID; bas_rights.Add(right); } if (bas_rights.Count > 0) { bool rightResult = right_bl.CreateList(ref errors, bas_rights); if (!rightResult) { errors.Add("添加权限失败。"); return false; } } //Tool Bar List toolBarBtns = new List(); foreach (InnerRight inRight in initRights) { toolBarBtns.AddRange(inRight.ToolBars); } BAS_RIGHT_TOOLBUTTON_BL right_toolButton_bl = new BAS_RIGHT_TOOLBUTTON_BL(); List entitys = (from m in right_toolButton_bl.GetALLToolButton() select new ToolBarBtn() { RightId = m.RIGHTID, ToolBarId = (int)m.BUTTONID, ToolBarName = m.BUTTONNAME, ToolBarCode = m.BUTTONCODE } ).ToList(); List CreateToolBtn = toolBarBtns.Except(entitys, new InitToolBarComPare()).ToList();//新增的权限 List DeleteToolBtn = entitys.Except(toolBarBtns, new InitToolBarComPare()).ToList();//缺失的权限 //create var listToolButton = new List(); foreach (ToolBarBtn btn in CreateToolBtn) { BAS_RIGHT_TOOLBUTTON Right_ToolButton = new BAS_RIGHT_TOOLBUTTON { RIGHTID = btn.RightId, BUTTONID = btn.ToolBarId, BUTTONNAME = btn.ToolBarName, BUTTONCODE = btn.ToolBarCode }; listToolButton.Add(Right_ToolButton); } if (listToolButton.Count > 0) { bool isOk = right_toolButton_bl.Create_ListToolButton(ref errors, listToolButton); if (!isOk) { errors.Add("添加toolbutton失败。"); return false; } } //delete foreach (ToolBarBtn btn in DeleteToolBtn) { bool isOk = right_toolButton_bl.Delete_ToolButton(ref errors, btn.RightId, Convert.ToDecimal(btn.ToolBarId)); if (!isOk) { errors.Add("删除toolbutton失败。"); return false; } } return true; //} //catch (Exception ex) //{ // string message = ex.Message; // return false; //} } public class InitRightComPare : IEqualityComparer { public bool Equals(InnerRight x, InnerRight y) { return x.RightId == y.RightId; } public int GetHashCode(InnerRight obj) { return obj.RightId.GetHashCode(); } } public class InitToolBarComPare : IEqualityComparer { public bool Equals(ToolBarBtn x, ToolBarBtn y) { return x.RightId == y.RightId && x.ToolBarId == y.ToolBarId; } public int GetHashCode(ToolBarBtn obj) { return obj.ToolBarId.GetHashCode(); } } } }