Files
monorepo/LCU.API.Internal.LoanRate/LCU.API.Internal.LoanRate/Controllers/ValidateRateEvaluationController.cs
T
2026-04-07 14:21:04 -05:00

106 lines
4.0 KiB
C#

using Microsoft.AspNetCore.Mvc;
using LCU.Library.Internal.LoanRateModels.Requests;
using LCU.Library.Internal.LcuEvaluation.Services.EvaluationServices;
using LCU.API.Internal.LoanRate.Services.ValidateLoanRateServices;
using LCU.API.Internal.LoanRate.Services.LoanRateOperationServices;
using LCU.Library.Internal.LcuEvaluationModels.Enums;
namespace LCU.API.Internal.LoanRate.Controllers;
[ApiController]
[Route("api/[controller]")]
public class ValidateRateEvaluationsController : ControllerBase
{
private readonly IValidateRateEvaluationsService _validateRateEvaluationsService;
private readonly IRateFinderService _rateFinderService;
private readonly IExecuteEvaluationService _executeEvaluationService;
public ValidateRateEvaluationsController(IValidateRateEvaluationsService validateRateEvaluationsService,
IRateFinderService rateFinderService,
IExecuteEvaluationService executeEvaluationService)
{
_validateRateEvaluationsService = validateRateEvaluationsService;
_rateFinderService = rateFinderService;
_executeEvaluationService = executeEvaluationService;
}
[HttpPost("ValidateRatePassesEvaluation")]
[ProducesResponseType(200)]
[ProducesResponseType(500)]
public async Task<IActionResult> ValidateRatePassesEvaluation([FromBody] RateRequest request, int rateId, int evaluationDetailId)
{
try
{
return Ok(await _validateRateEvaluationsService.ValidateRatePassesEvaluation(request, rateId, evaluationDetailId));
}
catch (ServiceException exception)
{
return StatusCode(StatusCodes.Status500InternalServerError, exception.Message);
}
catch (Exception exception)
{
Log.Error(exception, "Unexpected Exception");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpPost("ValidateRatePassesEvaluations")]
[ProducesResponseType(200)]
[ProducesResponseType(500)]
public async Task<IActionResult> ValidateRatePassesEvaluations([FromBody] RateRequest request, int rateId)
{
try
{
return Ok(await _validateRateEvaluationsService.ValidateRatePassesEvaluations(request, rateId));
}
catch (ServiceException exception)
{
return StatusCode(StatusCodes.Status500InternalServerError, exception.Message);
}
catch (Exception exception)
{
Log.Error(exception, "Unexpected Exception");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpPost("DetermineRatePassedRules")]
[ProducesResponseType(200)]
[ProducesResponseType(500)]
public async Task<IActionResult> DetermineVehicleRatePassedRules([FromBody] RateRequest request)
{
try
{
return Ok(await _rateFinderService.DeterminePassedRules(request));
}
catch (ServiceException exception)
{
return StatusCode(StatusCodes.Status500InternalServerError, exception.Message);
}
catch (Exception exception)
{
Log.Error(exception, "Unexpected Exception");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
[HttpPost("RawEvaluationTest")]
[ProducesResponseType(200)]
[ProducesResponseType(500)]
public IActionResult RawEvaluationTest(string evaluationCondition, EvaluationReturnTypes evaluationReturnType)
{
try
{
return Ok(_executeEvaluationService.ExecuteCondition(evaluationCondition, evaluationReturnType));
}
catch (ServiceException exception)
{
return StatusCode(StatusCodes.Status500InternalServerError, exception.Message);
}
catch (Exception exception)
{
Log.Error(exception, "Unexpected Exception");
return StatusCode(StatusCodes.Status500InternalServerError);
}
}
}