using LeaRun.Data.Repository;
using System.Collections.Generic;
using System.Linq;
using System;
using LeaRun.Application.IService.AuthorizeManage;
using LeaRun.Application.Entity.BaseManage;
using LeaRun.Application.Entity.AuthorizeManage;
using LeaRun.Application.Code;
namespace LeaRun.Application.Service.BaseManage
{
///
/// 版 本
/// Copyright (c) 2013-2016 上海力软信息技术有限公司
/// 创建人:佘赐雄
/// 日 期:2015.11.5 22:35
/// 描 述:权限配置管理(角色、岗位、职位、用户组、用户)
///
public class PermissionService : RepositoryFactory, IPermissionService
{
#region 获取数据
///
/// 获取成员列表
///
/// 对象Id
///
public IEnumerable GetMemberList(string objectId)
{
return this.BaseRepository().IQueryable(t => t.ObjectId == objectId).OrderByDescending(t => t.CreateDate).ToList();
}
///
/// 获取对象列表
///
///
///
public IEnumerable GetObjectList(string userId)
{
return this.BaseRepository().IQueryable(t => t.UserId == userId).OrderByDescending(t => t.CreateDate).ToList();
}
///
/// 获取功能列表
///
/// 对象Id
///
public IEnumerable GetModuleList(string objectId)
{
return this.BaseRepository().IQueryable(t => t.ObjectId == objectId && t.ItemType == 1).ToList();
}
///
/// 获取功能列表
///
/// 对象Id
///
public IEnumerable GetModuleListN(string objectId)
{
return this.BaseRepository().IQueryable(t => t.ObjectId == objectId && t.ItemType == 1).ToList();
}
///
/// 获取按钮列表
///
/// 对象Id
///
public IEnumerable GetModuleButtonList(string objectId)
{
return this.BaseRepository().IQueryable(t => t.ObjectId == objectId && t.ItemType == 2).ToList();
}
///
/// 获取视图列表
///
/// 对象Id
///
public IEnumerable GetModuleColumnList(string objectId)
{
return this.BaseRepository().IQueryable(t => t.ObjectId == objectId && t.ItemType == 3).ToList();
}
///
/// 获取数据权限列表
///
/// 对象Id
///
public IEnumerable GetAuthorizeDataList(string objectId)
{
return this.BaseRepository().IQueryable(t => t.ObjectId == objectId).OrderBy(t => t.SortCode).ToList();
}
#endregion
#region 提交数据
///
/// 添加成员
///
/// 权限分类
/// 对象Id
/// 成员Id
public void SaveMember(AuthorizeTypeEnum authorizeType, string objectId, string[] userIds)
{
IRepository db = new RepositoryFactory().BaseRepository().BeginTrans();
try
{
db.Delete(t => t.ObjectId == objectId && t.IsDefault == 0);
int SortCode = 1;
foreach (string item in userIds)
{
UserRelationEntity userRelationEntity = new UserRelationEntity();
userRelationEntity.Create();
userRelationEntity.Category = (int)authorizeType;
userRelationEntity.ObjectId = objectId;
userRelationEntity.UserId = item;
userRelationEntity.SortCode = SortCode++;
db.Insert(userRelationEntity);
}
db.Commit();
}
catch (Exception)
{
db.Rollback();
throw;
}
}
///
/// 添加授权
///
/// 权限分类
/// 对象Id
/// 功能Id
/// 按钮Id
/// 视图Id
/// 数据权限
public void SaveAuthorize(AuthorizeTypeEnum authorizeType, string objectId, string[] moduleIds, string[] moduleButtonIds, string[] moduleColumnIds, IEnumerable authorizeDataList)
{
IRepository db = new RepositoryFactory().BaseRepository().BeginTrans();
try
{
db.Delete(t => t.ObjectId == objectId);
#region 功能
int SortCode = 1;
foreach (string item in moduleIds)
{
AuthorizeEntity authorizeEntity = new AuthorizeEntity();
authorizeEntity.Create();
authorizeEntity.Category = (int)authorizeType;
authorizeEntity.ObjectId = objectId;
authorizeEntity.ItemType = 1;
authorizeEntity.ItemId = item;
authorizeEntity.SortCode = SortCode++;
db.Insert(authorizeEntity);
}
#endregion
#region 按钮
SortCode = 1;
foreach (string item in moduleButtonIds)
{
AuthorizeEntity authorizeEntity = new AuthorizeEntity();
authorizeEntity.Create();
authorizeEntity.Category = (int)authorizeType;
authorizeEntity.ObjectId = objectId;
authorizeEntity.ItemType = 2;
authorizeEntity.ItemId = item;
authorizeEntity.SortCode = SortCode++;
db.Insert(authorizeEntity);
}
#endregion
#region 视图
SortCode = 1;
foreach (string item in moduleColumnIds)
{
AuthorizeEntity authorizeEntity = new AuthorizeEntity();
authorizeEntity.Create();
authorizeEntity.Category = (int)authorizeType;
authorizeEntity.ObjectId = objectId;
authorizeEntity.ItemType = 3;
authorizeEntity.ItemId = item;
authorizeEntity.SortCode = SortCode++;
db.Insert(authorizeEntity);
}
#endregion
#region 数据权限
SortCode = 1;
db.Delete(objectId, "ObjectId");
int index = 0;
foreach (AuthorizeDataEntity authorizeDataEntity in authorizeDataList)
{
authorizeDataEntity.Create();
authorizeDataEntity.Category = (int)authorizeType;
authorizeDataEntity.ObjectId = objectId;
// authorizeDataEntity.Module = "Department";
authorizeDataEntity.SortCode = SortCode++;
db.Insert(authorizeDataEntity);
index++;
}
#endregion
db.Commit();
}
catch (Exception)
{
db.Rollback();
throw;
}
}
#endregion
}
}