60 lines
1.6 KiB
C#
60 lines
1.6 KiB
C#
using Microsoft.EntityFrameworkCore;
|
|
using Fengling.RiskControl.Domain.Aggregates.RiskRules;
|
|
using Fengling.RiskControl.Domain.Repositories;
|
|
|
|
namespace Fengling.RiskControl.Infrastructure.Repositories;
|
|
|
|
public class RiskRuleRepository : IRiskRuleRepository
|
|
{
|
|
private readonly RiskControlDbContext _context;
|
|
|
|
public RiskRuleRepository(RiskControlDbContext context)
|
|
{
|
|
_context = context;
|
|
}
|
|
|
|
public async Task<RiskRule?> GetByIdAsync(long id)
|
|
{
|
|
return await _context.RiskRules.FindAsync(id);
|
|
}
|
|
|
|
public async Task<IEnumerable<RiskRule>> GetActiveRulesAsync()
|
|
{
|
|
return await _context.RiskRules
|
|
.Where(r => r.IsActive)
|
|
.OrderByDescending(r => r.Priority)
|
|
.ToListAsync();
|
|
}
|
|
|
|
public async Task<IEnumerable<RiskRule>> GetRulesByTypeAsync(RiskRuleType type)
|
|
{
|
|
return await _context.RiskRules
|
|
.Where(r => r.RuleType == type && r.IsActive)
|
|
.ToListAsync();
|
|
}
|
|
|
|
public async Task<IEnumerable<RiskRule>> GetRulesForEvaluationAsync(string entityType, string actionType)
|
|
{
|
|
return await _context.RiskRules
|
|
.Where(r => r.IsActive)
|
|
.ToListAsync();
|
|
}
|
|
|
|
public async Task AddAsync(RiskRule rule)
|
|
{
|
|
await _context.RiskRules.AddAsync(rule);
|
|
}
|
|
|
|
public async Task UpdateAsync(RiskRule rule)
|
|
{
|
|
_context.RiskRules.Update(rule);
|
|
await Task.CompletedTask;
|
|
}
|
|
|
|
public async Task DeleteAsync(RiskRule rule)
|
|
{
|
|
_context.RiskRules.Remove(rule);
|
|
await Task.CompletedTask;
|
|
}
|
|
}
|