81 lines
2.8 KiB
C#
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();
|
|
}
|
|
} |