Some checks failed
CI/CD Pipeline / Build and Deploy with Docker Compose (push) Failing after 56s
54 lines
1.7 KiB
C#
54 lines
1.7 KiB
C#
|
|
using Core.Interfaces;
|
|
using Domain.Entities;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
|
|
namespace phronCare.API.Controllers.Integrations
|
|
{
|
|
[ApiController]
|
|
[Route("api/[controller]")]
|
|
public class ExchangeRateController : ControllerBase
|
|
{
|
|
private readonly IExchangeRateDom _exchangeRateDom;
|
|
|
|
public ExchangeRateController(IExchangeRateDom exchangeRateDom)
|
|
{
|
|
_exchangeRateDom = exchangeRateDom;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Devuelve la cotización oficial del dólar del día anterior,
|
|
/// leyendo de histórico o consultando BCRA si hace falta.
|
|
/// </summary>
|
|
[HttpGet("yesterday")]
|
|
public async Task<ActionResult<EExchangeRateHistory>> GetYesterdayAsync()
|
|
{
|
|
try
|
|
{
|
|
var rate = await _exchangeRateDom.GetYesterdayRateAsync();
|
|
return Ok(rate);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// Aquí puedes loggear el error o transformarlo en un código HTTP distinto
|
|
return StatusCode(500, new { message = ex.Message });
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Obtiene la cotización del dólar oficial para una fecha dada
|
|
/// </summary>
|
|
[HttpGet("{date:datetime}")]
|
|
public async Task<ActionResult<EExchangeRateHistory>> GetByDateAsync(DateTime date)
|
|
{
|
|
var dateOnly = DateOnly.FromDateTime(date);
|
|
var existing = await _exchangeRateDom.GetByDateAsync(dateOnly);
|
|
if (existing is null)
|
|
return NotFound(new { message = $"No hay cotización para {dateOnly:yyyy-MM-dd}" });
|
|
return Ok(existing);
|
|
}
|
|
|
|
}
|
|
}
|