Adding
This commit is contained in:
+90
@@ -0,0 +1,90 @@
|
||||
using LCU.Library.Internal.LcuEvaluation.Services;
|
||||
using LCU.Library.Internal.LcuEvaluationModels.Entities;
|
||||
using LCU.Library.Internal.LcuEvaluationModels.Requests;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace LCU.API.Internal.LoanRate.Services;
|
||||
|
||||
public class ComplexEvaluationDetailService : IComplexEvaluationDetailService
|
||||
{
|
||||
private readonly IRateEvaluationService _rateEvaluationService;
|
||||
private readonly IEvaluationDetailService _evaluationDetailService;
|
||||
|
||||
public ComplexEvaluationDetailService(IRateEvaluationService rateEvaluationService,
|
||||
IEvaluationDetailService evaluationDetailService)
|
||||
{
|
||||
_rateEvaluationService = rateEvaluationService;
|
||||
_evaluationDetailService = evaluationDetailService;
|
||||
}
|
||||
|
||||
public async Task<EvaluationDetail> UpdateComplexAsync(EvaluationDetail evaluationDetail)
|
||||
{
|
||||
try
|
||||
{
|
||||
return await _evaluationDetailService.UpdateComplexAsync(evaluationDetail);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
var message = $"Failure completing complex update for EvaluationDetail. EvaluationDetailId: {evaluationDetail.EvaluationDetailId}";
|
||||
Log.Error(exception, message);
|
||||
throw new ServiceException(message);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<EvaluationDetail> SaveComplexAsync(EvaluationDetailRequest request)
|
||||
{
|
||||
try
|
||||
{
|
||||
var newEvaluationDetail = await _evaluationDetailService.SaveComplexAsync(request);
|
||||
|
||||
var previousVersionId = request.PreviousVersionEvaluationDetailId ?? 0;
|
||||
if (previousVersionId <= 0)
|
||||
{
|
||||
return newEvaluationDetail;
|
||||
}
|
||||
|
||||
var rateEvaluations =
|
||||
(await _rateEvaluationService.GetRangeByEvaluationDetailIdAsync(previousVersionId)).ToList();
|
||||
|
||||
if (rateEvaluations is null || !rateEvaluations.Any())
|
||||
{
|
||||
return newEvaluationDetail;
|
||||
}
|
||||
|
||||
var newRateEvaluations = rateEvaluations.Select(rateEvaluation =>
|
||||
new RateEvaluation
|
||||
{
|
||||
RateId = rateEvaluation.RateId,
|
||||
EvaluationDetailId = newEvaluationDetail.EvaluationDetailId
|
||||
}).ToList();
|
||||
|
||||
await _rateEvaluationService.SaveRangeAsync(newRateEvaluations);
|
||||
|
||||
return newEvaluationDetail;
|
||||
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
var message = "Failure on SaveComplexAsync. " +
|
||||
$"EvaluationDetailRequest: ({JsonConvert.SerializeObject(request)})";
|
||||
Log.Error(exception, message);
|
||||
throw new ServiceException(message);
|
||||
}
|
||||
}
|
||||
|
||||
public async Task DeleteComplexAsync(int evaluationDetailId)
|
||||
{
|
||||
try
|
||||
{
|
||||
await _rateEvaluationService.DeleteRangeByEvaluationDetailIdAsync(evaluationDetailId);
|
||||
await _evaluationDetailService.DeleteComplexAsync(evaluationDetailId);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
var message = "Failure on DeleteComplexAsync. " +
|
||||
$"EvaluationDetailId: ({evaluationDetailId})";
|
||||
Log.Error(exception, message);
|
||||
throw new ServiceException(message);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user