62 lines
2.0 KiB
C#
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);
|
|
}
|
|
}
|