< Summary

Information
Class: FAU.API.Controllers.CatalogoItemsController
Assembly: FAU.API
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.API/Controllers/CatalogoItemsController.cs
Line coverage
88%
Covered lines: 22
Uncovered lines: 3
Coverable lines: 25
Total lines: 57
Line coverage: 88%
Branch coverage
100%
Covered branches: 2
Total branches: 2
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%
GetCatalogoItems()100%2285.71%

File(s)

/home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.API/Controllers/CatalogoItemsController.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[ApiController]
 10[Route("api/catalogo-items")]
 11[Authorize]
 12public class CatalogoItemsController : ControllerBase
 13{
 14    private readonly ApplicationDbContext _context;
 15    private readonly ILogger<CatalogoItemsController> _logger;
 16
 317    public CatalogoItemsController(ApplicationDbContext context, ILogger<CatalogoItemsController> logger)
 18    {
 319        _context = context;
 320        _logger = logger;
 321    }
 22
 23    [HttpGet]
 24    public async Task<IActionResult> GetCatalogoItems([FromQuery] bool? vigente = null)
 25    {
 26        try
 27        {
 328            var query = _context.CatalogoItems.AsNoTracking();
 29
 330            if (vigente.HasValue)
 31            {
 132                query = query.Where(item => item.Vigente == vigente.Value);
 33            }
 34
 335            var catalogos = await query
 336                .OrderBy(item => item.OrdenCalculo)
 337                .ThenBy(item => item.Nombre)
 338                .Select(item => new CatalogoItemDto
 339                {
 340                    Id = item.Id,
 341                    Codigo = item.Codigo,
 342                    Nombre = item.Nombre,
 343                    Tipo = item.Tipo,
 344                    Vigente = item.Vigente,
 345                    OrdenCalculo = item.OrdenCalculo
 346                })
 347                .ToListAsync();
 48
 349            return Ok(ApiResponse<IEnumerable<CatalogoItemDto>>.SuccessResult(catalogos));
 50        }
 051        catch (Exception ex)
 52        {
 053            _logger.LogError(ex, "Error al obtener catálogo de ítems");
 054            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 55        }
 356    }
 57}