< Summary

Information
Class: Chronicis.Api.Controllers.TutorialsController
Assembly: Chronicis.Api
File(s): /home/runner/work/chronicis/chronicis/src/Chronicis.Api/Controllers/TutorialsController.cs
Line coverage
100%
Covered lines: 4
Uncovered lines: 0
Coverable lines: 4
Total lines: 47
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%

File(s)

/home/runner/work/chronicis/chronicis/src/Chronicis.Api/Controllers/TutorialsController.cs

#LineLine coverage
 1using Chronicis.Api.Services;
 2using Chronicis.Shared.DTOs;
 3using Microsoft.AspNetCore.Authorization;
 4using Microsoft.AspNetCore.Mvc;
 5
 6namespace Chronicis.Api.Controllers;
 7
 8/// <summary>
 9/// API endpoints for resolving contextual tutorial content.
 10/// </summary>
 11[ApiController]
 12[Route("tutorials")]
 13[Authorize]
 14public class TutorialsController : ControllerBase
 15{
 16    private readonly ITutorialService _tutorialService;
 17    private readonly ILogger<TutorialsController> _logger;
 18
 119    public TutorialsController(ITutorialService tutorialService, ILogger<TutorialsController> logger)
 20    {
 121        _tutorialService = tutorialService;
 122        _logger = logger;
 123    }
 24
 25    /// <summary>
 26    /// GET /api/tutorials/resolve?pageType={pageType} - Resolves the tutorial article for the current page context.
 27    /// </summary>
 28    [HttpGet("resolve")]
 29    public async Task<ActionResult<TutorialDto>> Resolve([FromQuery] string pageType)
 30    {
 31        try
 32        {
 33            var tutorial = await _tutorialService.ResolveAsync(pageType);
 34            if (tutorial == null)
 35            {
 36                return NotFound(new { error = "Tutorial not found" });
 37            }
 38
 39            return Ok(tutorial);
 40        }
 41        catch (Exception ex)
 42        {
 43            _logger.LogErrorSanitized(ex, "Error resolving tutorial for page type {PageType}", pageType);
 44            return StatusCode(StatusCodes.Status500InternalServerError, "Internal server error");
 45        }
 46    }
 47}