fengling-risk-control/Fengling.RiskControl.Infrastructure/Repositories/RiskRuleRepository.cs

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