< Summary

Information
Class: FAU.API.Controllers.AcreedoresController
Assembly: FAU.API
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.API/Controllers/AcreedoresController.cs
Line coverage
89%
Covered lines: 25
Uncovered lines: 3
Coverable lines: 28
Total lines: 69
Line coverage: 89.2%
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%
GetAcreedores()100%2286.36%

File(s)

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

#LineLine coverage
 1using FAU.DataAccess;
 2using FAU.Entidades;
 3using FAU.Logica.DTOs;
 4using Microsoft.AspNetCore.Authorization;
 5using Microsoft.AspNetCore.Mvc;
 6using Microsoft.EntityFrameworkCore;
 7
 8namespace FAU.API.Controllers;
 9
 10/// <summary>
 11/// Catálogo de acreedores para descuentos personales
 12/// </summary>
 13[ApiController]
 14[Route("api/acreedores")]
 15[Authorize]
 16public class AcreedoresController : ControllerBase
 17{
 18    private readonly ApplicationDbContext _context;
 19    private readonly ILogger<AcreedoresController> _logger;
 20
 221    public AcreedoresController(
 222        ApplicationDbContext context,
 223        ILogger<AcreedoresController> logger)
 24    {
 225        _context = context;
 226        _logger = logger;
 227    }
 28
 29    /// <summary>
 30    /// Listar acreedores activos para selección en formularios
 31    /// GET /api/acreedores
 32    /// </summary>
 33    [HttpGet]
 34    [FAU.API.Security.RequirePermission(PermisoEnum.CrearDescuentosPersonales)]
 35    public async Task<IActionResult> GetAcreedores([FromQuery] bool? activo = true)
 36    {
 37        try
 38        {
 239            var query = _context.Acreedores.AsNoTracking();
 40
 241            if (activo.HasValue)
 42            {
 243                query = query.Where(acreedor => acreedor.Activo == activo.Value);
 44            }
 45
 246            var acreedores = await query
 247                .OrderBy(acreedor => acreedor.PrioridadDeficit)
 248                .ThenBy(acreedor => acreedor.Nombre)
 249                .Select(acreedor => new AcreedorDto
 250                {
 251                    Id = acreedor.Id,
 252                    Codigo = acreedor.Codigo,
 253                    Nombre = acreedor.Nombre,
 254                    PrioridadDeficit = acreedor.PrioridadDeficit,
 255                    FormatoArchivo = acreedor.FormatoArchivo,
 256                    Contacto = acreedor.Contacto,
 257                    Activo = acreedor.Activo
 258                })
 259                .ToListAsync();
 60
 261            return Ok(ApiResponse<IEnumerable<AcreedorDto>>.SuccessResult(acreedores));
 62        }
 063        catch (Exception ex)
 64        {
 065            _logger.LogError(ex, "Error al obtener acreedores");
 066            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 67        }
 268    }
 69}