using Microsoft.AspNetCore.Mvc; using CarneiroTech.Services; namespace CarneiroTech.Controllers; public class CasesController : Controller { private readonly ICaseService _caseService; private readonly ILogger _logger; public CasesController(ICaseService caseService, ILogger logger) { _caseService = caseService; _logger = logger; } // GET: /cases public async Task Index(string? tag) { var cases = string.IsNullOrEmpty(tag) ? await _caseService.GetAllCasesAsync() : await _caseService.GetCasesByTagAsync(tag); var allTags = await _caseService.GetAllTagsAsync(); ViewData["Title"] = string.IsNullOrEmpty(tag) ? "Cases - Carneiro Tech" : $"Cases: {tag} - Carneiro Tech"; ViewData["Description"] = string.IsNullOrEmpty(tag) ? "Explore our portfolio of technical consulting projects and solution design cases." : $"Technical consulting cases related to {tag}."; ViewData["SelectedTag"] = tag; ViewBag.AllTags = allTags; return View(cases); } // GET: /cases/{slug} [Route("cases/{slug}")] public async Task Details(string slug) { var caseModel = await _caseService.GetCaseBySlugAsync(slug); if (caseModel == null) { _logger.LogWarning($"Case not found: {slug}"); return NotFound(); } ViewData["Title"] = !string.IsNullOrEmpty(caseModel.Metadata.SeoTitle) ? caseModel.Metadata.SeoTitle : caseModel.Metadata.Title; ViewData["Description"] = !string.IsNullOrEmpty(caseModel.Metadata.SeoDescription) ? caseModel.Metadata.SeoDescription : caseModel.Metadata.Summary; ViewData["Keywords"] = caseModel.Metadata.SeoKeywords; ViewData["OgImage"] = caseModel.Metadata.Image; return View(caseModel); } }