< Summary

Information
Class: FAU.API.Controllers.RegimenesController
Assembly: FAU.API
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.API/Controllers/RegimenesController.cs
Line coverage
76%
Covered lines: 19
Uncovered lines: 6
Coverable lines: 25
Total lines: 85
Line coverage: 76%
Branch coverage
100%
Covered branches: 4
Total branches: 4
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
GetRegimenes()100%2275%
GetRegimen()100%2266.66%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.API/Controllers/RegimenesController.cs

#LineLine coverage
 1using FAU.DataAccess;
 2using FAU.Logica.DTOs;
 3using Microsoft.AspNetCore.Authorization;
 4using Microsoft.AspNetCore.Http;
 5using Microsoft.AspNetCore.Mvc;
 6using Microsoft.EntityFrameworkCore;
 7
 8namespace FAU.API.Controllers;
 9
 10/// <summary>
 11/// Catálogo de regímenes
 12/// </summary>
 13[ApiController]
 14[Route("api/[controller]")]
 15[Authorize]
 16[Produces("application/json")]
 17public class RegimenesController : ControllerBase
 18{
 19    private readonly ApplicationDbContext _context;
 20    private readonly ILogger<RegimenesController> _logger;
 21
 822    public RegimenesController(ApplicationDbContext context, ILogger<RegimenesController> logger)
 23    {
 824        _context = context;
 825        _logger = logger;
 826    }
 27
 28    /// <summary>
 29    /// Listar todos los regímenes
 30    /// GET /api/regimenes?vigente=true
 31    /// </summary>
 32    [HttpGet]
 33    [ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]
 34    [ProducesResponseType(typeof(ApiResponse<string>), StatusCodes.Status500InternalServerError)]
 35    public async Task<IActionResult> GetRegimenes([FromQuery] bool? vigente = null)
 36    {
 37        try
 38        {
 539            var query = _context.Regimenes.AsQueryable();
 40
 541            if (vigente.HasValue)
 242                query = query.Where(r => r.Vigente == vigente.Value);
 43
 544            var regimenes = await query
 545                .OrderBy(r => r.Id)
 546                .Select(r => new { id = r.Id, numeroLey = r.NumeroLey, denominacion = r.Denominacion, vigente = r.Vigent
 547                .ToListAsync();
 48
 549            return Ok(ApiResponse<object>.SuccessResult(regimenes));
 50        }
 051        catch (Exception ex)
 52        {
 053            _logger.LogError(ex, "Error al obtener regímenes");
 054            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 55        }
 556    }
 57
 58    /// <summary>
 59    /// Obtener un régimen por ID
 60    /// GET /api/regimenes/{id}
 61    /// </summary>
 62    [HttpGet("{id}")]
 63    [ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]
 64    [ProducesResponseType(typeof(ApiResponse<string>), StatusCodes.Status404NotFound)]
 65    [ProducesResponseType(typeof(ApiResponse<string>), StatusCodes.Status500InternalServerError)]
 66    public async Task<IActionResult> GetRegimen(long id)
 67    {
 68        try
 69        {
 370            var regimen = await _context.Regimenes.FindAsync(id);
 71
 372            if (regimen == null)
 173                return NotFound(ApiResponse<string>.ErrorResult("Régimen no encontrado"));
 74
 275            var response = new { id = regimen.Id, numeroLey = regimen.NumeroLey, denominacion = regimen.Denominacion, vi
 76
 277            return Ok(ApiResponse<object>.SuccessResult(response));
 78        }
 079        catch (Exception ex)
 80        {
 081            _logger.LogError(ex, "Error al obtener régimen {Id}", id);
 082            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 83        }
 384    }
 85}