OneConversorTemplate/UpperFirstLetter/Controllers/HomeController.cs
2025-06-08 18:00:23 -03:00

100 lines
3.1 KiB
C#

using Microsoft.AspNetCore.Mvc;
using SentenceConverterModule.Services.Contracts;
namespace SentenceConverterModule.Controllers
{
public class HomeController : Controller
{
private readonly ISentenceConverterService _converterService;
private readonly ITextConversionApiService _apiService;
public HomeController(
ISentenceConverterService converterService,
ITextConversionApiService apiService)
{
_converterService = converterService;
_apiService = apiService;
}
public IActionResult Index(string language = "pt")
{
ViewBag.Language = language;
ViewBag.Config = _converterService.GetConfiguration(language);
// Dados para a página de teste
ViewBag.PageTitle = language switch
{
"en" => "Sentence Case Converter - Standalone Test",
"es" => "Convertidor a Mayúscula Inicial - Prueba Independiente",
_ => "Conversor para Primeira Maiúscula - Teste Standalone"
};
ViewBag.PageDescription = language switch
{
"en" => "Test the sentence case converter module independently",
"es" => "Prueba el módulo convertidor independientemente",
_ => "Teste o módulo conversor independentemente"
};
return View();
}
[HttpGet]
public async Task<IActionResult> HealthCheck()
{
try
{
var isApiHealthy = await _apiService.IsHealthyAsync();
return Json(new
{
status = "healthy",
service = "sentence-converter-module",
apiHealth = isApiHealthy,
timestamp = DateTime.UtcNow,
version = "1.0.0"
});
}
catch (Exception ex)
{
return Json(new
{
status = "unhealthy",
error = ex.Message,
timestamp = DateTime.UtcNow
});
}
}
[HttpGet]
public IActionResult TestEndpoints()
{
var baseUrl = $"{Request.Scheme}://{Request.Host}";
var endpoints = new
{
module_widget = $"{baseUrl}/modules/sentence-converter",
footer_message = $"{baseUrl}/modules/footer-message",
api_convert = $"{baseUrl}/api/converter/convert",
api_config = $"{baseUrl}/api/converter/config",
api_health = $"{baseUrl}/api/converter/health",
home_health = $"{baseUrl}/home/healthcheck"
};
return Json(endpoints);
}
public IActionResult Privacy()
{
return View();
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View();
}
}
}