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(); } } }