using BaseOUDAL;
using YLErp.BLL;
namespace YLErp.Modules.DataProviderModule
{
///
/// 交易权限服务
///
public class TradeRightProvider
{
///
/// 获取用户授信权限
///
public static List GetClientVarietyIds(int clientId)
{
var allVarietyIds = DataCacheProvider.GetVarietyDataSource().AsQueryable().Select(v => v.id).ToList();
//如果不用没有要限制交易品种
if (!PS.Config.ClientElement.CanSelectCreditVariety)
{
return allVarietyIds;
}
var credits = DbContextFactory.GetYLDbContext().credit.Where(c => c.ClientId == clientId)
.Select(n => new { n.LimitVariety, n.IsFeelingWhiteList, n.VarietyId }).ToList();
if (credits.Any(c => !c.LimitVariety))
{
return allVarietyIds;
}
var varietyids = new List();
foreach (var c in credits)
{
var VarietyIdsInt = DataConvert.ConvertCommaValuesToInt32Array(c.VarietyId);
if (c.IsFeelingWhiteList)
{
varietyids.AddRange(VarietyIdsInt);
}
else
{
varietyids.AddRange(allVarietyIds.Except(VarietyIdsInt));
}
}
return varietyids.Distinct().ToList();
}
///
/// 获取客户授信
///
public static List GetClientCredits(int clientId)
{
var curDate = valuedateBLL.ValueDate;
var predicate = PredicateBuilder.Create(c =>
c.ClientId == clientId && c.ProcessStatus == "已审批"
&& (!c.CreditStartDate.HasValue || c.CreditStartDate <= curDate)
&& (!c.CreditDeadLine.HasValue || c.CreditDeadLine >= curDate)
&& c.Type == CreditTable.ClientType);
return DbContextFactory.GetYLDbContext().credit.Where(predicate).ToList();
}
public static IEnumerable GetUserVarietyIds(int userId)
{
return UserBLL.GetUserVarietyIds(userId);
}
///
/// 获取交易权限配置
///
public static IEnumerable GetRoleCredits(IEnumerable roleIds)
{
var predicate = PredicateBuilder.Create(c => c.Type == CreditTable.RoleType && c.RoleId != null && roleIds.Contains(c.RoleId.Value));
return DbContextFactory.GetYLDbContext().credit.Where(predicate).ToArray();
}
}
}