Files
monorepo/LCU.API.Internal.LoanRate/LCU.API.Internal.LoanRateLib/Repositories/RateEvaluationRepository.cs
T
2026-04-07 14:21:04 -05:00

81 lines
2.8 KiB
C#

using Microsoft.EntityFrameworkCore;
using LCU.API.Internal.LoanRateLib.Persistence;
using LCU.Library.Internal.LoanRateModels.Enums;
namespace LCU.API.Internal.LoanRateLib.Repositories;
public class RateEvaluationRepository : BaseRepository, IRateEvaluationRepository
{
public IRateRepository _rateRepository;
public RateEvaluationRepository(AppDbContext context,
IRateRepository rateRepository) : base(context)
{
_rateRepository = rateRepository;
}
public async Task<IEnumerable<RateEvaluation>?> FindAsync()
{
return await _context.RateEvaluations.ToListAsync();
}
public async Task<RateEvaluation?> FindByIdAsync(int id)
{
return await _context.RateEvaluations.FirstOrDefaultAsync(rateEvaluation => rateEvaluation.RateEvaluationId == id);
}
public async Task<IEnumerable<RateEvaluation>?> FindRangeByIdAsync(List<int> ids)
{
return await _context.RateEvaluations
.Where(rateEvaluation => ids.Contains(rateEvaluation.RateEvaluationId))
.ToListAsync();
}
public async Task<IEnumerable<RateEvaluation>?> FindRangeByEvaluationDetailIdAsync(int evaluationDetailId)
{
return await _context.RateEvaluations
.Where(rateEvaluation => rateEvaluation.EvaluationDetailId == evaluationDetailId)
.ToListAsync();
}
public async Task<IEnumerable<RateEvaluation>?> FindByRateSheetIdsAsync(List<int> rateSheetIds)
{
return (await _rateRepository.FindCacheAsync())
.Where(rate => rateSheetIds.Contains(rate.RateSheetId))
.SelectMany(rate => rate.RateEvaluations);
}
public async Task<RateEvaluation?> AddAsync(RateEvaluation rateEvaluation)
{
return (await _context.RateEvaluations.AddAsync(rateEvaluation)).Entity;
}
public async Task AddRangeAsync(IEnumerable<RateEvaluation> rateEvaluations)
{
await _context.RateEvaluations.AddRangeAsync(rateEvaluations);
}
public void UpdateRange(IEnumerable<RateEvaluation> rateEvaluations)
{
_context.RateEvaluations.UpdateRange(rateEvaluations);
}
public void Remove(RateEvaluation rateEvaluation)
{
_context.RateEvaluations.Remove(rateEvaluation);
}
public void RemoveRange(IEnumerable<RateEvaluation> rateEvaluations)
{
_context.RateEvaluations.RemoveRange(rateEvaluations);
}
public async Task<int> CountByEvaluationDetailIdAsync(int evaluationDetailId)
{
return await _context.RateEvaluations
.Where(rateEvaluation => rateEvaluation.EvaluationDetailId == evaluationDetailId)
.Select(rateEvaluation => rateEvaluation.RateId)
.Distinct()
.CountAsync();
}
}