using System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.IBLL.Base;
namespace WX.CRM.BLL.Base
{
public class BAS_ROLERIGHTRESOURCE_BL : IBAS_ROLERIGHTRESOURCE, IBAS_ROLERIGHTRESOURCE_Q
{
#region 获取角色对应的权限ID列表
///
/// 获取角色对应的权限ID列表
///
///
/// 返回object类型
public object GetObjectByRoleId(decimal roleId)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
object obj = (from a in db.BAS_ROLERIGHTRESOURCE.Where(m => m.ROLEID == roleId).ToList()
select new
{
id = a.RIGHTID,
toolValue = a.TOOLBARVALUE
});
return obj;
}
}
#endregion
public IEnumerable IncRolesList(string rightId)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
return db.BAS_ROLERIGHTRESOURCE.Where(p => p.RIGHTID == rightId).Select(p => p.ROLEID).ToList();
}
}
#region 保存角色权限信息
///
/// 保存角色权限信息
///
///
///
///
public bool Save(ref ValidationErrors errors, decimal roleId, string rightIds, decimal createUser)
{
try
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
List rightsAndButtons = new List();
if (!string.IsNullOrEmpty(rightIds))
{
rightsAndButtons = Utility.JSONToObject>(rightIds);
}
string[] rightIdList = rightsAndButtons.Select(p => p.rightId).ToArray();
List entryList = db.BAS_ROLERIGHTRESOURCE.Where(m => m.ROLEID == roleId).ToList();
WX.CRM.Model.Entity.BAS_ROLERIGHTRESOURCE model = null;
foreach (var right in rightsAndButtons)
{
WX.CRM.Model.Entity.BAS_ROLERIGHTRESOURCE entry = entryList.Where(m => m.RIGHTID == right.rightId).FirstOrDefault();
if (entry == null)//没有数据
{
model = new WX.CRM.Model.Entity.BAS_ROLERIGHTRESOURCE();
model.ROLEID = roleId;
model.RIGHTID = right.rightId;
model.TOOLBARVALUE = right.buttons;
model.CTIME = DateTime.Now;
model.CREATEUSER = createUser;
db.BAS_ROLERIGHTRESOURCE.Add(model);
}
else
{
if (!entry.TOOLBARVALUE.HasValue || (entry.TOOLBARVALUE.Value != right.buttons))
{
entry.TOOLBARVALUE = right.buttons;
}
}
}
foreach (WX.CRM.Model.Entity.BAS_ROLERIGHTRESOURCE entry in (from d in entryList
where !rightIdList.Contains(d.RIGHTID)
select d))//将已经没有了的rightID数据删除
{
db.BAS_ROLERIGHTRESOURCE.Remove(entry);
}
return db.SaveChanges().GetResult();
}
}
catch (Exception ex) { errors.Add(ex.Message); return false; }
}
#endregion
public List GetRoleRightResourceByRoleId(decimal[] RoleId)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
return db.BAS_ROLERIGHTRESOURCE.Where(p => RoleId.Contains(p.ROLEID)).ToList();
}
}
public class RightAndButton
{
public string rightId { get; set; }
public decimal buttons { get; set; }
}
}
}