< 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: 78
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.Mvc;
 5using Microsoft.EntityFrameworkCore;
 6
 7namespace FAU.API.Controllers;
 8
 9/// <summary>
 10/// Catálogo de regímenes
 11/// </summary>
 12[ApiController]
 13[Route("api/[controller]")]
 14[Authorize]
 15public class RegimenesController : ControllerBase
 16{
 17    private readonly ApplicationDbContext _context;
 18    private readonly ILogger<RegimenesController> _logger;
 19
 820    public RegimenesController(ApplicationDbContext context, ILogger<RegimenesController> logger)
 21    {
 822        _context = context;
 823        _logger = logger;
 824    }
 25
 26    /// <summary>
 27    /// Listar todos los regímenes
 28    /// GET /api/regimenes?vigente=true
 29    /// </summary>
 30    [HttpGet]
 31    public async Task<IActionResult> GetRegimenes([FromQuery] bool? vigente = null)
 32    {
 33        try
 34        {
 535            var query = _context.Regimenes.AsQueryable();
 36
 537            if (vigente.HasValue)
 238                query = query.Where(r => r.Vigente == vigente.Value);
 39
 540            var regimenes = await query
 541                .OrderBy(r => r.Id)
 542                .Select(r => new { id = r.Id, numeroLey = r.NumeroLey, denominacion = r.Denominacion, vigente = r.Vigent
 543                .ToListAsync();
 44
 545            return Ok(ApiResponse<object>.SuccessResult(regimenes));
 46        }
 047        catch (Exception ex)
 48        {
 049            _logger.LogError(ex, "Error al obtener regímenes");
 050            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 51        }
 552    }
 53
 54    /// <summary>
 55    /// Obtener un régimen por ID
 56    /// GET /api/regimenes/{id}
 57    /// </summary>
 58    [HttpGet("{id}")]
 59    public async Task<IActionResult> GetRegimen(long id)
 60    {
 61        try
 62        {
 363            var regimen = await _context.Regimenes.FindAsync(id);
 64
 365            if (regimen == null)
 166                return NotFound(ApiResponse<string>.ErrorResult("Régimen no encontrado"));
 67
 268            var response = new { id = regimen.Id, numeroLey = regimen.NumeroLey, denominacion = regimen.Denominacion, vi
 69
 270            return Ok(ApiResponse<object>.SuccessResult(response));
 71        }
 072        catch (Exception ex)
 73        {
 074            _logger.LogError(ex, "Error al obtener régimen {Id}", id);
 075            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 76        }
 377    }
 78}