QrRapido/Controllers/DevTutoriaisController.cs
Ricardo Carneiro 7a0c12f8d2
Some checks failed
Deploy QR Rapido / test (push) Failing after 17s
Deploy QR Rapido / build-and-push (push) Has been skipped
Deploy QR Rapido / deploy-staging (push) Has been skipped
Deploy QR Rapido / deploy-production (push) Has been skipped
feat: api separada do front-end e area do desenvolvedor.
2026-03-08 12:40:51 -03:00

64 lines
2.2 KiB
C#

using Microsoft.AspNetCore.Mvc;
using QRRapidoApp.Services;
namespace QRRapidoApp.Controllers
{
public class DevTutoriaisController : Controller
{
private readonly IMarkdownService _markdownService;
private readonly ILogger<DevTutoriaisController> _logger;
private const string ContentFolder = "DevTutoriais";
public DevTutoriaisController(IMarkdownService markdownService, ILogger<DevTutoriaisController> logger)
{
_markdownService = markdownService;
_logger = logger;
}
[Route("Developer/docs")]
[Route("es-PY/Developer/docs")]
[Route("es/Developer/docs")]
public async Task<IActionResult> Index()
{
var culture = GetCulture();
var articles = await _markdownService.GetAllArticlesAsync(culture, ContentFolder);
ViewBag.Culture = culture;
return View(articles);
}
[Route("Developer/docs/{slug}")]
[Route("es-PY/Developer/docs/{slug}")]
[Route("es/Developer/docs/{slug}")]
public async Task<IActionResult> Article(string slug)
{
var culture = GetCulture();
var article = await _markdownService.GetArticleAsync(slug, culture, ContentFolder);
if (article == null)
{
_logger.LogWarning("Dev article not found: {Slug} ({Culture})", slug, culture);
return NotFound();
}
var allArticles = await _markdownService.GetAllArticlesAsync(culture, ContentFolder);
article.RelatedArticles = allArticles
.Where(a => a.Slug != slug)
.Take(3)
.ToList();
ViewBag.Culture = culture;
ViewBag.Slug = slug;
return View(article);
}
private string GetCulture()
{
var path = Request.Path.Value ?? "";
if (path.StartsWith("/es-PY", StringComparison.OrdinalIgnoreCase)) return "es-PY";
if (path.StartsWith("/es/", StringComparison.OrdinalIgnoreCase) ||
string.Equals(path, "/es", StringComparison.OrdinalIgnoreCase)) return "es";
return "pt-BR";
}
}
}