< Summary

Information
Class: FAU.API.Controllers.EscalafonesController
Assembly: FAU.API
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.API/Controllers/EscalafonesController.cs
Line coverage
78%
Covered lines: 25
Uncovered lines: 7
Coverable lines: 32
Total lines: 98
Line coverage: 78.1%
Branch coverage
40%
Covered branches: 8
Total branches: 20
Branch coverage: 40%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
ObtenerEscalafones()100%11100%
CrearEscalafonAsync()50%8890%
ActualizarEscalafonAsync()33.33%301250%

File(s)

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

#LineLine coverage
 1using FAU.Logica.DTOs;
 2using FAU.Logica.Services;
 3using Microsoft.AspNetCore.Authorization;
 4using Microsoft.AspNetCore.Mvc;
 5
 6namespace FAU.API.Controllers;
 7
 8[ApiController]
 9[Route("api/[controller]")]
 10[Authorize]
 11public class EscalafonesController : ControllerBase
 12{
 13    private readonly IEscalafonService _escalafonService;
 14    private readonly ILogger<EscalafonesController> _logger;
 15
 816    public EscalafonesController(IEscalafonService escalafonService, ILogger<EscalafonesController> logger)
 17    {
 818        _escalafonService = escalafonService;
 819        _logger = logger;
 820    }
 21
 22    /// <summary>
 23    /// Listar todos los escalafones vigentes
 24    /// GET /api/escalafones
 25    /// </summary>
 26    [HttpGet]
 27    public async Task<IActionResult> ObtenerEscalafones()
 28    {
 29        try
 30        {
 331            var escalafones = await _escalafonService.ObtenerTodosAsync();
 232            return Ok(ApiResponse<IEnumerable<EscalafonDto>>.SuccessResult(escalafones));
 33        }
 134        catch (Exception ex)
 35        {
 136            _logger.LogError(ex, "Error al obtener escalafones");
 137            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 38        }
 339    }
 40
 41    /// <summary>
 42    /// Crear un nuevo escalafón
 43    /// POST /api/escalafones
 44    /// </summary>
 45    [HttpPost]
 46    [Authorize(Roles = "Administrador")]
 47    public async Task<IActionResult> CrearEscalafonAsync([FromBody] CrearEscalafonRequest request)
 48    {
 49        try
 50        {
 351            var (exito, resultado, error) = await _escalafonService.CrearAsync(request.Codigo, request.Denominacion, req
 52
 253            if (!exito)
 54            {
 155                if (error?.Contains("ya existe", StringComparison.OrdinalIgnoreCase) == true)
 156                    return Conflict(ApiResponse<string>.ErrorResult(error));
 057                return BadRequest(ApiResponse<string>.ErrorResult(error ?? "Error al crear escalafón"));
 58            }
 59
 160            return CreatedAtAction(nameof(ObtenerEscalafones), ApiResponse<EscalafonDto>.SuccessResult(resultado!, "Esca
 61        }
 162        catch (Exception ex)
 63        {
 164            _logger.LogError(ex, "Error al crear escalafón");
 165            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 66        }
 367    }
 68
 69    /// <summary>
 70    /// Actualizar un escalafón existente
 71    /// PUT /api/escalafones/{id}
 72    /// </summary>
 73    [HttpPut("{id}")]
 74    [Authorize(Roles = "Administrador")]
 75    public async Task<IActionResult> ActualizarEscalafonAsync(long id, [FromBody] ActualizarEscalafonRequest request)
 76    {
 77        try
 78        {
 279            var (exito, resultado, error) = await _escalafonService.ActualizarAsync(id, request.Codigo, request.Denomina
 80
 281            if (!exito)
 82            {
 183                if (error?.Contains("no encontrado", StringComparison.OrdinalIgnoreCase) == true)
 184                    return NotFound(ApiResponse<string>.ErrorResult(error));
 085                if (error?.Contains("ya existe", StringComparison.OrdinalIgnoreCase) == true)
 086                    return Conflict(ApiResponse<string>.ErrorResult(error));
 087                return BadRequest(ApiResponse<string>.ErrorResult(error ?? "Error al actualizar escalafón"));
 88            }
 89
 190            return Ok(ApiResponse<EscalafonDto>.SuccessResult(resultado!, "Escalafón actualizado exitosamente"));
 91        }
 092        catch (Exception ex)
 93        {
 094            _logger.LogError(ex, "Error al actualizar escalafón {Id}", id);
 095            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 96        }
 297    }
 98}