Adding
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
using LCU.API.Internal.LoanRateLib.Persistence;
|
||||
namespace LCU.API.Internal.LoanRateLib.Repositories;
|
||||
|
||||
public abstract class BaseRepository
|
||||
{
|
||||
protected readonly AppDbContext _context;
|
||||
|
||||
public BaseRepository(AppDbContext context)
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
using LCU.Library.Internal.LoanRateModels.Enums;
|
||||
|
||||
namespace LCU.API.Internal.LoanRateLib.Repositories;
|
||||
|
||||
public interface IRateEvaluationRepository
|
||||
{
|
||||
Task<IEnumerable<RateEvaluation>?> FindAsync();
|
||||
Task<RateEvaluation?> FindByIdAsync(int id);
|
||||
Task<IEnumerable<RateEvaluation>?> FindRangeByIdAsync(List<int> ids);
|
||||
Task<IEnumerable<RateEvaluation>?> FindRangeByEvaluationDetailIdAsync(int evaluationDetailId);
|
||||
Task<IEnumerable<RateEvaluation>?> FindByRateSheetIdsAsync(List<int> rateSheetIds);
|
||||
Task<RateEvaluation?> AddAsync(RateEvaluation rateEvaluation);
|
||||
Task AddRangeAsync(IEnumerable<RateEvaluation> rateEvaluations);
|
||||
void UpdateRange(IEnumerable<RateEvaluation> rateEvaluations);
|
||||
void Remove(RateEvaluation rateEvaluation);
|
||||
void RemoveRange(IEnumerable<RateEvaluation> rateEvaluations);
|
||||
Task<int> CountByEvaluationDetailIdAsync(int evaluationDetailId);
|
||||
}
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
using LCU.Library.Internal.LcuEvaluationModels.Enums;
|
||||
|
||||
namespace LCU.API.Internal.LoanRateLib.Repositories;
|
||||
public interface IRateRepository
|
||||
{
|
||||
Task<IEnumerable<Rate>?> FindAsync();
|
||||
Task<IEnumerable<Rate>?> FindWithRateEvaluationsAsync();
|
||||
Task<Rate?> FindByIdAsync(int id);
|
||||
Task<IEnumerable<Rate>?> FindByClosingRateUploadInfoIdAsync(int id);
|
||||
Task<IEnumerable<Rate>?> FindByDateAsync(DateTime date);
|
||||
Task<IEnumerable<Rate>?> FindRateHistoryAsync(Rate rate);
|
||||
Task<IEnumerable<Rate>?> FindRangeByIdAsync(List<int> ids);
|
||||
Task<IEnumerable<Rate>?> FindByDateEvaluationIdsAndEvaluationTypeAsync(DateTime date,
|
||||
List<int> evaluationIds,
|
||||
EvaluationTypes evaluationType);
|
||||
Task<Rate?> AddAsync(Rate rate);
|
||||
Task AddRangeAsync(IEnumerable<Rate> rates);
|
||||
void UpdateRange(IEnumerable<Rate> rates);
|
||||
void Remove(Rate rate);
|
||||
void RemoveRange(IEnumerable<Rate> rates);
|
||||
Task<IEnumerable<Rate>> FindCacheAsync();
|
||||
void ClearCache();
|
||||
}
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
using LCU.Library.Internal.LcuClassPatterns.Crud.Repositories;
|
||||
|
||||
namespace LCU.API.Internal.LoanRateLib.Repositories;
|
||||
public interface IRateSheetCellRepository : ICrudRepository<RateSheetCell>
|
||||
{
|
||||
}
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
using LCU.Library.Internal.LcuClassPatterns.Crud.Repositories;
|
||||
using LCU.Library.Internal.LoanRateModels.Enums;
|
||||
|
||||
namespace LCU.API.Internal.LoanRateLib.Repositories;
|
||||
public interface IRateSheetRepository : ICrudRepository<RateSheet>
|
||||
{
|
||||
Task<IEnumerable<RateSheet>> FindIncludeAllAsync();
|
||||
Task<IEnumerable<RateSheet>> FindIncludeRateSheetCellsAsync();
|
||||
Task<IEnumerable<Rate>?> FindRatesByDateAndRateType(DateTime date, RateTypes rateType);
|
||||
Task<RateSheet?> FindByDateAndRateType(DateTime date, RateTypes rateType);
|
||||
Task<IEnumerable<Rate>?> FindRatesByRateType(RateTypes rateType);
|
||||
Task<IEnumerable<int>?> FindRateSheetIdsByRateType(RateTypes rateType);
|
||||
Task<IEnumerable<RateSheet>> FindCacheAsync();
|
||||
void ClearCache();
|
||||
}
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
using LCU.Library.Internal.LcuClassPatterns.Crud.Repositories;
|
||||
using LCU.Library.Internal.LoanRateModels.Responses;
|
||||
|
||||
namespace LCU.API.Internal.LoanRateLib.Repositories;
|
||||
public interface IRateUploadInfoRepository : ICrudRepository<RateUploadInfo>
|
||||
{
|
||||
Task<RateUploadInfo?> FindLatestAsync();
|
||||
Task<RateUploadInfo?> FindByVersionAsync(int version, DateTime effectiveDate);
|
||||
Task<RateUploadInfo?> FindPreviousVersion(RateUploadInfo rateUploadInfo);
|
||||
Task<RateUploadInfo?> FindLatestVersionOnDate(DateTime effectiveDate);
|
||||
Task<RateUploadInfoFilterResult> FindFilteredRateUploadInfosAsync(RateUploadInfoFilter rateUploadInfoFilter);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace LCU.API.Internal.LoanRateLib.Repositories;
|
||||
|
||||
public interface IUnitOfWork
|
||||
{
|
||||
Task CompleteAsync();
|
||||
void Complete();
|
||||
}
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
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();
|
||||
}
|
||||
}
|
||||
+139
@@ -0,0 +1,139 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using LCU.API.Internal.LoanRateLib.Configurations;
|
||||
using LCU.API.Internal.LoanRateLib.Extensions.Queryables;
|
||||
using LCU.API.Internal.LoanRateLib.Persistence;
|
||||
using LCU.Library.Internal.LcuCaching.Services;
|
||||
using LCU.Library.Internal.LcuEvaluationModels.Enums;
|
||||
|
||||
namespace LCU.API.Internal.LoanRateLib.Repositories;
|
||||
|
||||
public class RateRepository : BaseRepository, IRateRepository
|
||||
{
|
||||
private readonly RateCacheConfiguration _rateCacheConfiguration;
|
||||
private readonly ICacheService _cacheService;
|
||||
|
||||
public RateRepository(AppDbContext context,
|
||||
RateCacheConfiguration rateCacheConfiguration,
|
||||
ICacheService cacheService) : base(context)
|
||||
{
|
||||
_rateCacheConfiguration = rateCacheConfiguration;
|
||||
_cacheService = cacheService;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Rate>?> FindAsync()
|
||||
{
|
||||
return await _context.Rates.IncludeAll().ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Rate>?> FindWithRateEvaluationsAsync()
|
||||
{
|
||||
return await _context.Rates.IncludeAllRatesEvaluations().ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<Rate?> FindByIdAsync(int id)
|
||||
{
|
||||
return await _context.Rates.IncludeAll().FirstOrDefaultAsync(rate => rate.RateId == id);
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Rate>?> FindByClosingRateUploadInfoIdAsync(int id)
|
||||
{
|
||||
return await _context.Rates.Where(rate => rate.ClosingRateUploadInfoId == id)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Rate>?> FindByDateAsync(DateTime date)
|
||||
{
|
||||
return await _context.Rates.Where(rate => date >= rate.RateStartDate &&
|
||||
(rate.RateEndDate == null || date < rate.RateEndDate))
|
||||
.IncludeAll()
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Rate>?> FindRateHistoryAsync(Rate rate)
|
||||
{
|
||||
return await _context.Rates.Where(x => x.Row == rate.Row
|
||||
&& x.Column == rate.Column
|
||||
&& x.RateSheetId == rate.RateSheetId)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Rate>?> FindRangeByIdAsync(List<int> ids)
|
||||
{
|
||||
return await _context.Rates
|
||||
.Where(rate => ids.Contains(rate.RateId))
|
||||
.IncludeAll()
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Will get Rates that:
|
||||
/// - Are between the RateStartDate-RateEndDate(if not null).
|
||||
/// - Match the evaluation type
|
||||
/// - Match All the EvaluationIds
|
||||
/// - Contains ALL the evaluationids and the count of RateEvaluation.EvaluationDetailIds match the count of evaluationIds
|
||||
/// </summary>
|
||||
/// <param name="date"></param>
|
||||
/// <param name="evaluationIds"></param>
|
||||
/// <param name="evaluationType"></param>
|
||||
/// <returns></returns>
|
||||
public async Task<IEnumerable<Rate>?> FindByDateEvaluationIdsAndEvaluationTypeAsync(DateTime date,
|
||||
List<int> evaluationIds,
|
||||
EvaluationTypes evaluationType)
|
||||
{
|
||||
return await _context.Rates
|
||||
.Where(
|
||||
rate => date >= rate.RateStartDate &&
|
||||
(!rate.RateEndDate.HasValue || date < rate.RateEndDate) &&
|
||||
(rate.RateEvaluations.Any() &&
|
||||
rate.RateEvaluations
|
||||
.Where(rateEvaluation =>
|
||||
(date >= rateEvaluation.EvaluationDetail.StartDate &&
|
||||
(!rateEvaluation.EvaluationDetail.EndDate.HasValue || date < rateEvaluation.EvaluationDetail.EndDate)) &&
|
||||
rateEvaluation.EvaluationDetail.EvaluationType == evaluationType &&
|
||||
rateEvaluation.EvaluationDetail.Active == true)
|
||||
.All(rateEvaluation => evaluationIds.Contains(rateEvaluation.EvaluationDetailId)) &&
|
||||
rate.RateEvaluations
|
||||
.Where(rateEvaluation =>
|
||||
(date >= rateEvaluation.EvaluationDetail.StartDate &&
|
||||
(!rateEvaluation.EvaluationDetail.EndDate.HasValue || date < rateEvaluation.EvaluationDetail.EndDate)) &&
|
||||
rateEvaluation.EvaluationDetail.EvaluationType == evaluationType &&
|
||||
rateEvaluation.EvaluationDetail.Active == true &&
|
||||
evaluationIds.Contains(rateEvaluation.EvaluationDetailId))
|
||||
.Select(rateEvaluation => rateEvaluation.EvaluationDetailId).Count() == evaluationIds.Count))
|
||||
.IncludeAllRatesEvaluations()
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<Rate?> AddAsync(Rate rate)
|
||||
{
|
||||
return (await _context.Rates.AddAsync(rate)).Entity;
|
||||
}
|
||||
|
||||
public async Task AddRangeAsync(IEnumerable<Rate> rates)
|
||||
{
|
||||
await _context.Rates.AddRangeAsync(rates);
|
||||
}
|
||||
|
||||
public void UpdateRange(IEnumerable<Rate> rates)
|
||||
{
|
||||
_context.Rates.UpdateRange(rates);
|
||||
}
|
||||
|
||||
public void Remove(Rate rate)
|
||||
{
|
||||
_context.Rates.Remove(rate);
|
||||
}
|
||||
|
||||
public void RemoveRange(IEnumerable<Rate> rates)
|
||||
{
|
||||
_context.Rates.RemoveRange(rates);
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Rate>> FindCacheAsync()
|
||||
=> await _cacheService.FindCacheAsync(FindAsync,
|
||||
_rateCacheConfiguration.CacheName,
|
||||
_rateCacheConfiguration.ExpirationMinutes);
|
||||
|
||||
public void ClearCache()
|
||||
=> _cacheService.ClearCache(_rateCacheConfiguration.CacheName);
|
||||
}
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
using LCU.API.Internal.LoanRateLib.Persistence;
|
||||
using LCU.Library.Internal.LcuClassPatterns.Crud.Repositories;
|
||||
|
||||
namespace LCU.API.Internal.LoanRateLib.Repositories;
|
||||
public class RateSheetCellRepository : CrudRepository<RateSheetCell>, IRateSheetCellRepository
|
||||
{
|
||||
private readonly AppDbContext _context;
|
||||
|
||||
public RateSheetCellRepository(AppDbContext context) : base(context)
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
}
|
||||
+83
@@ -0,0 +1,83 @@
|
||||
using LCU.API.Internal.LoanRateLib.Configurations;
|
||||
using LCU.API.Internal.LoanRateLib.Extensions.Queryables;
|
||||
using LCU.API.Internal.LoanRateLib.Persistence;
|
||||
using LCU.Library.Internal.LcuCaching.Services;
|
||||
using LCU.Library.Internal.LcuClassPatterns.Crud.Repositories;
|
||||
using LCU.Library.Internal.LoanRateModels.Enums;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace LCU.API.Internal.LoanRateLib.Repositories;
|
||||
public class RateSheetRepository : CrudRepository<RateSheet>, IRateSheetRepository
|
||||
{
|
||||
private readonly AppDbContext _context;
|
||||
private readonly RateSheetCacheConfiguration _rateSheetCacheConfiguration;
|
||||
private readonly ICacheService _cacheService;
|
||||
|
||||
public RateSheetRepository(AppDbContext context,
|
||||
RateSheetCacheConfiguration rateSheetCacheConfiguration,
|
||||
ICacheService cacheService) : base(context)
|
||||
{
|
||||
_context = context;
|
||||
_rateSheetCacheConfiguration = rateSheetCacheConfiguration;
|
||||
_cacheService = cacheService;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<RateSheet>> FindIncludeAllAsync()
|
||||
{
|
||||
return await _context.RateSheets.IncludeAll().ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<RateSheet>> FindIncludeRateSheetCellsAsync()
|
||||
{
|
||||
return await _context.RateSheets.Include(rateSheet => rateSheet.RateSheetCells).ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Rate>?> FindRatesByDateAndRateType(DateTime date, RateTypes rateType)
|
||||
{
|
||||
return (await FindCacheAsync()).FirstOrDefault(rateSheet => rateSheet.RateType == rateType)?
|
||||
.Rates.Where(rate =>
|
||||
date >= rate.RateStartDate
|
||||
&& (rate.RateEndDate == null || date < rate.RateEndDate));
|
||||
}
|
||||
|
||||
public async Task<RateSheet?> FindByDateAndRateType(DateTime date, RateTypes rateType)
|
||||
{
|
||||
return await _context.RateSheets.Include(rateSheet => rateSheet.Rates)
|
||||
.Include(rateSheet => rateSheet.RateSheetCells)
|
||||
.Where(rateSheet => rateSheet.RateType == rateType)
|
||||
.Select(rateSheet =>
|
||||
new RateSheet
|
||||
{
|
||||
RateSheetId = rateSheet.RateSheetId,
|
||||
RateType = rateSheet.RateType,
|
||||
RateSheetCells = rateSheet.RateSheetCells,
|
||||
Rates = _context.Rates.Where(rate => rate.RateSheetId == rateSheet.RateSheetId
|
||||
&& date >= rate.RateStartDate
|
||||
&& (rate.RateEndDate == null || date < rate.RateEndDate)).ToList(),
|
||||
CreatedBy = rateSheet.CreatedBy,
|
||||
TimeCreated = rateSheet.TimeCreated
|
||||
})
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Rate>?> FindRatesByRateType(RateTypes rateType)
|
||||
{
|
||||
return (await FindCacheAsync()).FirstOrDefault(rateSheet => rateSheet.RateType == rateType)?.Rates;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<int>?> FindRateSheetIdsByRateType(RateTypes rateType)
|
||||
{
|
||||
return await _context.RateSheets.Where(rateSheet => rateSheet.RateType == rateType)
|
||||
.Select(rateSheet => rateSheet.RateSheetId)
|
||||
.ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<RateSheet>> FindCacheAsync()
|
||||
{
|
||||
return await _cacheService.FindCacheAsync(FindIncludeAllAsync,
|
||||
_rateSheetCacheConfiguration.CacheName,
|
||||
_rateSheetCacheConfiguration.ExpirationMinutes);
|
||||
}
|
||||
|
||||
public void ClearCache() => _cacheService.ClearCache(_rateSheetCacheConfiguration.CacheName);
|
||||
}
|
||||
+91
@@ -0,0 +1,91 @@
|
||||
using LCU.API.Internal.LoanRateLib.Extensions.Queryables;
|
||||
using LCU.API.Internal.LoanRateLib.Persistence;
|
||||
using LCU.Library.Internal.LcuClassPatterns.Crud.Repositories;
|
||||
using LCU.Library.Internal.LoanRateModels.Responses;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace LCU.API.Internal.LoanRateLib.Repositories;
|
||||
public class RateUploadInfoRepository : CrudRepository<RateUploadInfo>, IRateUploadInfoRepository
|
||||
{
|
||||
private readonly AppDbContext _context;
|
||||
|
||||
public RateUploadInfoRepository(AppDbContext context) : base(context)
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
|
||||
public async Task<RateUploadInfo?> FindLatestAsync()
|
||||
{
|
||||
return await _context.RateUploadInfos.OrderByDescending(r => r.EffectiveDate)
|
||||
.ThenByDescending(r => r.Version)
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public async Task<RateUploadInfo?> FindByVersionAsync(int version, DateTime effectiveDate)
|
||||
{
|
||||
return await _context.RateUploadInfos.Where(rateUploadInfo => rateUploadInfo.EffectiveDate.Date == effectiveDate.Date
|
||||
&& rateUploadInfo.Version == version)
|
||||
.IncludeAllButClosedRates()
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public async Task<RateUploadInfo?> FindPreviousVersion(RateUploadInfo rateUploadInfo)
|
||||
{
|
||||
return await _context.RateUploadInfos.Where(r => r.EffectiveDate.Date <= rateUploadInfo.EffectiveDate.Date
|
||||
&& (r.EffectiveDate.Date != rateUploadInfo.EffectiveDate.Date || r.Version < rateUploadInfo.Version )
|
||||
&& r.RateUploadInfoId != rateUploadInfo.RateUploadInfoId)
|
||||
.OrderByDescending(r => r.EffectiveDate)
|
||||
.ThenByDescending(r => r.Version)
|
||||
.IncludeAllButClosedRates()
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public async Task<RateUploadInfo?> FindLatestVersionOnDate(DateTime effectiveDate)
|
||||
{
|
||||
return await _context.RateUploadInfos.Where(r => r.EffectiveDate.Date == effectiveDate.Date)
|
||||
.OrderByDescending(r => r.Version)
|
||||
.IncludeAllButClosedRates()
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public override async Task<IEnumerable<RateUploadInfo>> FindAsync()
|
||||
{
|
||||
return await _context.RateUploadInfos.IncludeAllButClosedRates().ToListAsync();
|
||||
}
|
||||
|
||||
public async Task<RateUploadInfoFilterResult> FindFilteredRateUploadInfosAsync(RateUploadInfoFilter rateUploadInfoFilter)
|
||||
{
|
||||
var results = new RateUploadInfoFilterResult();
|
||||
var skip = (rateUploadInfoFilter.Page - 1) * rateUploadInfoFilter.Limit;
|
||||
|
||||
results.Total = await _context.RateUploadInfos
|
||||
.IncludeFilters(rateUploadInfoFilter)
|
||||
.CountAsync();
|
||||
|
||||
results.Items = await _context.RateUploadInfos
|
||||
.IncludeFilters(rateUploadInfoFilter)
|
||||
.OrderBySortableFields(rateUploadInfoFilter)
|
||||
.Skip(skip)
|
||||
.Take(rateUploadInfoFilter.Limit)
|
||||
.ToArrayAsync();
|
||||
|
||||
results.TotalCount = await _context.RateUploadInfos.CountAsync();
|
||||
results.LatestRateUploadInfo = await FindLatestAsync();
|
||||
|
||||
return results;
|
||||
}
|
||||
|
||||
public override async Task<RateUploadInfo> FindByIdAsync(int id)
|
||||
{
|
||||
return await _context.RateUploadInfos.Where(rateUploadInfo => rateUploadInfo.RateUploadInfoId == id)
|
||||
.IncludeAllButClosedRates()
|
||||
.FirstOrDefaultAsync();
|
||||
}
|
||||
|
||||
public override async Task<IEnumerable<RateUploadInfo>> FindRangeByIdAsync(List<int> ids)
|
||||
{
|
||||
return await _context.RateUploadInfos.Where(rateUploadInfo => ids.Contains(rateUploadInfo.RateUploadInfoId))
|
||||
.IncludeAllButClosedRates()
|
||||
.ToListAsync();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using LCU.API.Internal.LoanRateLib.Persistence;
|
||||
namespace LCU.API.Internal.LoanRateLib.Repositories;
|
||||
|
||||
public class UnitOfWork : IUnitOfWork
|
||||
{
|
||||
private readonly AppDbContext _context;
|
||||
|
||||
public UnitOfWork(AppDbContext context)
|
||||
{
|
||||
_context = context;
|
||||
}
|
||||
|
||||
public async Task CompleteAsync()
|
||||
{
|
||||
await _context.SaveChangesAsync();
|
||||
}
|
||||
|
||||
public void Complete()
|
||||
{
|
||||
_context.SaveChanges();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user