CarneiroTech/Controllers/CasesController.cs

62 lines
2.0 KiB
C#

using Microsoft.AspNetCore.Mvc;
using CarneiroTech.Services;
namespace CarneiroTech.Controllers;
public class CasesController : Controller
{
private readonly ICaseService _caseService;
private readonly ILogger<CasesController> _logger;
public CasesController(ICaseService caseService, ILogger<CasesController> logger)
{
_caseService = caseService;
_logger = logger;
}
// GET: /cases
public async Task<IActionResult> 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<IActionResult> 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);
}
}