using CRM.Core.BLL.Util;
using CRM.Core.Model.Entity;
using CRM.Core.Model.Map;
using System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.Common;
namespace CRM.Core.BLL.Base
{
public class BAS_PERMISSION_BL
{
#region 新增
///
/// 新增
///
///
///
///
public bool Create(ref ValidationErrors errors, Bas_Permisson m)
{
try
{
using (zxdContext db = new zxdContext())
{
BAS_PERMISSION entry = db.BAS_PERMISSION.FirstOrDefault(w => w.CODE == m.CODE);
if (entry != null)
{
errors.Add("编码" + m.CODE + "已被占用");
return false;
}
int maxsort = 1;
BAS_PERMISSION sortrole = db.BAS_PERMISSION.Where(wm => wm.PRENTID == m.PRENTID).OrderByDescending(w => w.SORT).FirstOrDefault();
if (sortrole != null)
{
maxsort = sortrole.SORT + 1;
}
//Sequences_BL seqbl = new Sequences_BL();
//Decimal id = seqbl.Seq_base_get();
BAS_PERMISSION model = new BAS_PERMISSION()
{
CEID = m.CEID,
CODE = m.CODE,
SORT = maxsort,
CTIME = m.CTIME,
ICON = m.ICON,
//ID = id,
ISFORBIDDEN = m.ISFORBIDDEN,
ISHIDDEN = m.ISHIDDEN,
NAME = m.NAME,
PRENTID = m.PRENTID,
TYPE = m.TYPE,
URL = m.URL,
isblank = m.isblank
};
db.BAS_PERMISSION.Add(model);
db.SaveChanges();
if (m.buttonlist != null)
{
foreach (Bas_Permisson_Button item in m.buttonlist)
{
db.BAS_PERMISSION_BUTTON.Add(new BAS_PERMISSION_BUTTON()
{
BUTTONID = item.BUTTONID,
CODE = item.CODE,
NAME = item.NAME,
PID = model.ID
});
}
}
return db.SaveChanges().GetResult();
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
return false;
}
finally
{
CacheHelper.Remove(cacheKey);//清除缓存
}
}
#endregion
#region 修改数据
///
/// 修改数据
///
///
///
///
public bool Update(ref ValidationErrors errors, Bas_Permisson w)
{
try
{
using (zxdContext db = new zxdContext())
{
BAS_PERMISSION entry2 = db.BAS_PERMISSION.FirstOrDefault(m => m.CODE == w.CODE && m.ID != w.ID);
if (entry2 != null)
{
errors.Add("编码" + w.CODE + "已被占用");
return false;
}
BAS_PERMISSION entry = db.BAS_PERMISSION.FirstOrDefault(m => m.ID == w.ID);
entry.ICON = w.ICON;
if (entry.PRENTID != w.PRENTID)
{
BAS_PERMISSION sortrole = db.BAS_PERMISSION.Where(wm => wm.PRENTID == w.PRENTID).OrderByDescending(aw => aw.SORT).FirstOrDefault();
if (sortrole != null)
entry.SORT = sortrole.SORT + 1;
else
entry.SORT = 1;
}
else
{
entry.SORT = w.SORT;
}
entry.PRENTID = w.PRENTID;
entry.NAME = w.NAME;
entry.CODE = w.CODE;
entry.ISFORBIDDEN = w.ISFORBIDDEN;
entry.ISHIDDEN = w.ISHIDDEN;
entry.URL = w.URL;
entry.TYPE = w.TYPE;
entry.isblank = w.isblank;
//Sequences_BL seqbl = new Sequences_BL();
db.BAS_PERMISSION_BUTTON.RemoveRange(db.BAS_PERMISSION_BUTTON.Where(m => m.PID == w.ID));
if (w.buttonlist != null)
{
foreach (Bas_Permisson_Button item in w.buttonlist)
{
//decimal btnid = seqbl.Seq_base_get();
db.BAS_PERMISSION_BUTTON.Add(new BAS_PERMISSION_BUTTON()
{
BUTTONID = item.BUTTONID,
CODE = item.CODE,
NAME = item.NAME,
PID = w.ID,
SITE = item.SITE
});
}
}
db.SaveChanges();
//db.bas_role.Attach(model);
//db.Entry(model).State = EntityState.Modified;
return true;
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
return false;
}
finally
{
CacheHelper.Remove(cacheKey);//清除缓存
}
}
#endregion
public List GetList()
{
using (zxdContext db = new zxdContext())
{
return db.BAS_PERMISSION.OrderBy(m => m.SORT).ToList();
}
}
private string cacheKey = "cache_Get_BasPerMissionList";
public List GetPermissionList()
{
using (zxdContext db = new zxdContext())
{
return db.BAS_PERMISSION_BUTTON.ToList();
}
}
///
/// 返回树形列表
///
///
public List Get_BasPerMissionList()
{
List list = new List();
if (CacheHelper.Exists(cacheKey))//有缓存就从缓存中取
list = CacheHelper.Get>(cacheKey);
else
{
List permissionlist = GetList();
List buttonlist = GetPermissionList();
foreach (BAS_PERMISSION item in permissionlist.Where(m => m.PRENTID == 0))//首页
{
Bas_Permisson model = new Bas_Permisson();
model.ID = item.ID;
model.ICON = item.ICON;
model.ISHIDDEN = item.ISHIDDEN;
model.NAME = item.NAME;
model.PRENTID = item.PRENTID;
model.SORT = item.SORT;
model.TYPE = item.TYPE;
model.CEID = item.CEID;
model.CTIME = item.CTIME;
model.ISFORBIDDEN = item.ISFORBIDDEN;
model.URL = item.URL;
model.CODE = item.CODE;
model.isblank = item.isblank;
model.buttonlist = ToButtonList(buttonlist.Where(m => m.PID == model.ID).OrderBy(m => m.BUTTONID).ToList());
List childList = permissionlist.Where(m => m.PRENTID == item.ID).ToList();
if (childList.Count > 0)
model.ISHAVECHILD = 1;
else
model.ISHAVECHILD = 0;
list.Add(model);
model.PARENTSTR = "";
GetChildPermisson(list, permissionlist, childList, buttonlist, model.PARENTSTR + string.Format("[{0}]", model.ID));
}
CacheHelper.Set(cacheKey, list);//设置缓存
}
return list;
}
private void GetChildPermisson(List list, List permissionlist, List childList, List buttonlist, string parentIds)
{
foreach (BAS_PERMISSION item in childList)//首页
{
Bas_Permisson model = new Bas_Permisson();
model.ID = item.ID;
model.ICON = item.ICON;
model.ISHIDDEN = item.ISHIDDEN;
model.NAME = item.NAME;
model.PRENTID = item.PRENTID;
model.SORT = item.SORT;
model.TYPE = item.TYPE;
model.CEID = item.CEID;
model.ISFORBIDDEN = item.ISFORBIDDEN;
model.CTIME = item.CTIME;
model.URL = item.URL;
model.CODE = item.CODE;
model.isblank = item.isblank;
model.buttonlist = ToButtonList(buttonlist.Where(m => m.PID == model.ID).OrderBy(m => m.BUTTONID).ToList());
List childList2 = permissionlist.Where(m => m.PRENTID == item.ID).ToList();
if (childList2.Count > 0)
model.ISHAVECHILD = 1;
else
model.ISHAVECHILD = 0;
model.PARENTSTR = parentIds;
list.Add(model);
GetChildPermisson(list, permissionlist, childList2, buttonlist, model.PARENTSTR + string.Format("[{0}]", model.ID));
}
}
private List ToButtonList(List buttons)
{
List list = new List();
foreach (var item in buttons)
{
Bas_Permisson_Button model = new Bas_Permisson_Button()
{
BUTTONID = item.BUTTONID,
CODE = item.CODE,
ID = item.ID,
NAME = item.NAME,
PID = item.PID,
SITE = item.SITE
};
list.Add(model);
}
return list;
}
#region 获取单个实体
///
/// 获取单个实体
///
///
///
public Bas_Permisson GetModel(int id)
{
using (zxdContext db = new zxdContext())
{
BAS_PERMISSION item = db.BAS_PERMISSION.SingleOrDefault(w => w.ID == id);
if (item == null)
{
throw new Exception("找不到数据!");
}
Bas_Permisson model = new Bas_Permisson();
model.ID = item.ID;
model.ICON = item.ICON;
model.ISHIDDEN = item.ISHIDDEN;
model.NAME = item.NAME;
model.PRENTID = item.PRENTID;
model.SORT = item.SORT;
model.TYPE = item.TYPE;
model.CEID = item.CEID;
model.ISFORBIDDEN = item.ISFORBIDDEN;
model.CTIME = item.CTIME;
model.URL = item.URL;
model.CODE = item.CODE;
model.isblank = item.isblank;
model.buttonlist = ToButtonList(db.BAS_PERMISSION_BUTTON.Where(a => a.PID == id).OrderBy(m => m.BUTTONID).ToList());
return model;
}
}
#endregion
#region 修改顺序
///
/// 批量修改顺序
///
/// 角色ID
/// 排序号
///
public bool Sort(ref ValidationErrors errors, int id1, int id2)
{
try
{
using (zxdContext db = new zxdContext())
{
BAS_PERMISSION entry1 = db.BAS_PERMISSION.FirstOrDefault(m => m.ID == id1);
BAS_PERMISSION entry2 = db.BAS_PERMISSION.FirstOrDefault(m => m.ID == id2);
if (entry1 == null || entry2 == null)
return false;
int sort = entry1.SORT;
entry1.SORT = entry2.SORT;
entry2.SORT = sort;
db.SaveChanges();
return true;
}
}
catch (Exception ex) { errors.Add(ex.Message); return false; }
finally
{
CacheHelper.Remove(cacheKey);//清除缓存
}
}
#endregion
#region 删除
///
/// 删除
///
///
///
///
public bool Delete(ref ValidationErrors errors, decimal id)
{
try
{
using (zxdContext db = new zxdContext())
{
db.BAS_PERMISSION_BUTTON.RemoveRange(db.BAS_PERMISSION_BUTTON.Where(m => m.PID == id));
BAS_PERMISSION entry = db.BAS_PERMISSION.FirstOrDefault(m => m.ID == id);
if (entry == null)
{
errors.Add("数据已删除!");
return false;
}
db.BAS_PERMISSION.Remove(entry);
return db.SaveChanges().GetResult();
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
return false;
}
finally
{
CacheHelper.Remove(cacheKey);//清除缓存
}
}
#endregion
}
}