< 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: 26
Uncovered lines: 3
Coverable lines: 29
Total lines: 70
Line coverage: 89.6%
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.95%

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
 321    public AcreedoresController(
 322        ApplicationDbContext context,
 323        ILogger<AcreedoresController> logger)
 24    {
 325        _context = context;
 326        _logger = logger;
 327    }
 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        {
 339            var query = _context.Acreedores.AsNoTracking();
 40
 341            if (activo.HasValue)
 42            {
 343                query = query.Where(acreedor => acreedor.Activo == activo.Value);
 44            }
 45
 346            var acreedores = await query
 347                .OrderBy(acreedor => acreedor.OrdenLegalDeficit)
 348                .ThenBy(acreedor => acreedor.Nombre)
 349                .Select(acreedor => new AcreedorDto
 350                {
 351                    Id = acreedor.Id,
 352                    Codigo = acreedor.Codigo,
 353                    Nombre = acreedor.Nombre,
 354                    CategoriaDeficit = acreedor.CategoriaDeficit,
 355                    OrdenLegalDeficit = acreedor.OrdenLegalDeficit,
 356                    FormatoArchivo = acreedor.FormatoArchivo,
 357                    Contacto = acreedor.Contacto,
 358                    Activo = acreedor.Activo
 359                })
 360                .ToListAsync();
 61
 362            return Ok(ApiResponse<IEnumerable<AcreedorDto>>.SuccessResult(acreedores));
 63        }
 064        catch (Exception ex)
 65        {
 066            _logger.LogError(ex, "Error al obtener acreedores");
 067            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 68        }
 369    }
 70}