< Summary

Information
Class: FAU.API.Controllers.LiquidacionesController
Assembly: FAU.API
File(s): /home/runner/work/Sistema.Liquidacion.BE/Sistema.Liquidacion.BE/FAU.API/Controllers/LiquidacionesController.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 34
Coverable lines: 34
Total lines: 98
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 6
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%210%
GenerarLiquidacion()0%4260%
ObtenerEstados()100%210%
ObtenerItems()100%210%
ObtenerResumenes()100%210%
get_PeriodoId()100%210%
get_Version()100%210%

File(s)

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

#LineLine coverage
 1using FAU.API.Security;
 2using FAU.Logica.DTOs;
 3using FAU.Logica.Services;
 4using Microsoft.AspNetCore.Authorization;
 5using Microsoft.AspNetCore.Mvc;
 6
 7namespace FAU.API.Controllers;
 8
 9[ApiController]
 10[Route("api/liquidacion/[controller]")]
 11[Authorize(Roles = "Administrador")]
 12public class LiquidacionesController : ControllerBase
 13{
 14    private readonly ILiquidacionService _liquidacionService;
 15    private readonly ILogger<LiquidacionesController> _logger;
 16
 017    public LiquidacionesController(ILiquidacionService liquidacionService, ILogger<LiquidacionesController> logger)
 18    {
 019        _liquidacionService = liquidacionService;
 020        _logger = logger;
 021    }
 22
 23    [HttpPost("generar")]
 24    public async Task<IActionResult> GenerarLiquidacion([FromBody] GenerarLiquidacionRequest request)
 25    {
 26        try
 27        {
 028            if (!ModelState.IsValid)
 29            {
 030                return BadRequest(ApiResponse<string>.ErrorResult("Solicitud de generación inválida"));
 31            }
 32
 033            var (success, error) = await _liquidacionService.GenerarLiquidacionAsync(request.PeriodoId, request.Version)
 034            if (!success)
 35            {
 036                return BadRequest(ApiResponse<string>.ErrorResult(error ?? "Error al generar la liquidación"));
 37            }
 38
 039            return Ok(ApiResponse<object>.SuccessResult(new { request.PeriodoId, request.Version }, "Liquidación generad
 40        }
 041        catch (Exception ex)
 42        {
 043            _logger.LogError(ex, "Error al generar liquidación para periodo {PeriodoId} version {Version}", request.Peri
 044            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 45        }
 046    }
 47
 48    [HttpGet("estados")]
 49    public async Task<IActionResult> ObtenerEstados([FromQuery] long periodoId, [FromQuery] int version)
 50    {
 51        try
 52        {
 053            var estados = await _liquidacionService.ObtenerEstadosAsync(periodoId, version);
 054            return Ok(ApiResponse<IEnumerable<CalculoEstadoDto>>.SuccessResult(estados, "Estados de liquidación obtenido
 55        }
 056        catch (Exception ex)
 57        {
 058            _logger.LogError(ex, "Error al obtener estados de liquidación para periodo {PeriodoId} version {Version}", p
 059            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 60        }
 061    }
 62
 63    [HttpGet("items")]
 64    public async Task<IActionResult> ObtenerItems([FromQuery] long periodoId, [FromQuery] int version)
 65    {
 66        try
 67        {
 068            var items = await _liquidacionService.ObtenerItemsAsync(periodoId, version);
 069            return Ok(ApiResponse<IEnumerable<CalculoItemDto>>.SuccessResult(items, "Items de liquidación obtenidos"));
 70        }
 071        catch (Exception ex)
 72        {
 073            _logger.LogError(ex, "Error al obtener items de liquidación para periodo {PeriodoId} version {Version}", per
 074            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 75        }
 076    }
 77
 78    [HttpGet("resumenes")]
 79    public async Task<IActionResult> ObtenerResumenes([FromQuery] long periodoId, [FromQuery] int version)
 80    {
 81        try
 82        {
 083            var resumenes = await _liquidacionService.ObtenerResumenAsync(periodoId, version);
 084            return Ok(ApiResponse<IEnumerable<LiquidacionResumenDto>>.SuccessResult(resumenes, "Resumen de liquidación o
 85        }
 086        catch (Exception ex)
 87        {
 088            _logger.LogError(ex, "Error al obtener resumen de liquidación para periodo {PeriodoId} version {Version}", p
 089            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 90        }
 091    }
 92
 93    public class GenerarLiquidacionRequest
 94    {
 095        public long PeriodoId { get; set; }
 096        public int Version { get; set; }
 97    }
 98}