< 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: 40
Coverable lines: 40
Total lines: 126
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%
ObtenerVersiones()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.Http;
 6using Microsoft.AspNetCore.Mvc;
 7
 8namespace FAU.API.Controllers;
 9
 10[ApiController]
 11[Route("api/liquidacion/[controller]")]
 12[Authorize(Roles = "Administrador")]
 13[Produces("application/json")]
 14public class LiquidacionesController : ControllerBase
 15{
 16    private readonly ILiquidacionService _liquidacionService;
 17    private readonly ILogger<LiquidacionesController> _logger;
 18
 019    public LiquidacionesController(ILiquidacionService liquidacionService, ILogger<LiquidacionesController> logger)
 20    {
 021        _liquidacionService = liquidacionService;
 022        _logger = logger;
 023    }
 24
 25    [HttpPost("generar")]
 26    [ProducesResponseType(typeof(ApiResponse<object>), StatusCodes.Status200OK)]
 27    [ProducesResponseType(typeof(ApiResponse<string>), StatusCodes.Status400BadRequest)]
 28    [ProducesResponseType(typeof(ApiResponse<string>), StatusCodes.Status500InternalServerError)]
 29    public async Task<IActionResult> GenerarLiquidacion([FromBody] GenerarLiquidacionRequest request)
 30    {
 31        try
 32        {
 033            if (!ModelState.IsValid)
 34            {
 035                return BadRequest(ApiResponse<string>.ErrorResult("Solicitud de generación inválida"));
 36            }
 37
 038            var (success, error, version) = await _liquidacionService.GenerarLiquidacionAsync(request.PeriodoId);
 039            if (!success)
 40            {
 041                return BadRequest(ApiResponse<string>.ErrorResult(error ?? "Error al generar la liquidación"));
 42            }
 43
 044            return Ok(ApiResponse<object>.SuccessResult(new { request.PeriodoId, Version = version }, "Liquidación gener
 45        }
 046        catch (Exception ex)
 47        {
 048            _logger.LogError(ex, "Error al generar liquidación para periodo {PeriodoId} version {Version}", request.Peri
 049            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 50        }
 051    }
 52
 53    [HttpGet("estados")]
 54    [ProducesResponseType(typeof(ApiResponse<IEnumerable<CalculoEstadoDto>>), StatusCodes.Status200OK)]
 55    [ProducesResponseType(typeof(ApiResponse<string>), StatusCodes.Status500InternalServerError)]
 56    public async Task<IActionResult> ObtenerEstados([FromQuery] long periodoId, [FromQuery] int? version = null)
 57    {
 58        try
 59        {
 060            var estados = await _liquidacionService.ObtenerEstadosAsync(periodoId, version);
 061            return Ok(ApiResponse<IEnumerable<CalculoEstadoDto>>.SuccessResult(estados, "Estados de liquidación obtenido
 62        }
 063        catch (Exception ex)
 64        {
 065            _logger.LogError(ex, "Error al obtener estados de liquidación para periodo {PeriodoId} version {Version}", p
 066            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 67        }
 068    }
 69
 70    [HttpGet("items")]
 71    [ProducesResponseType(typeof(ApiResponse<IEnumerable<CalculoItemDto>>), StatusCodes.Status200OK)]
 72    [ProducesResponseType(typeof(ApiResponse<string>), StatusCodes.Status500InternalServerError)]
 73    public async Task<IActionResult> ObtenerItems([FromQuery] long periodoId, [FromQuery] int? version = null, [FromQuer
 74    {
 75        try
 76        {
 077            var items = await _liquidacionService.ObtenerItemsAsync(periodoId, version, cedula);
 078            return Ok(ApiResponse<IEnumerable<CalculoItemDto>>.SuccessResult(items, "Items de liquidación obtenidos"));
 79        }
 080        catch (Exception ex)
 81        {
 082            _logger.LogError(ex, "Error al obtener items de liquidación para periodo {PeriodoId} version {Version}", per
 083            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 84        }
 085    }
 86
 87    [HttpGet("resumenes")]
 88    [ProducesResponseType(typeof(ApiResponse<IEnumerable<LiquidacionResumenDto>>), StatusCodes.Status200OK)]
 89    [ProducesResponseType(typeof(ApiResponse<string>), StatusCodes.Status500InternalServerError)]
 90    public async Task<IActionResult> ObtenerResumenes([FromQuery] long periodoId, [FromQuery] int? version = null)
 91    {
 92        try
 93        {
 094            var resumenes = await _liquidacionService.ObtenerResumenAsync(periodoId, version);
 095            return Ok(ApiResponse<IEnumerable<LiquidacionResumenDto>>.SuccessResult(resumenes, "Resumen de liquidación o
 96        }
 097        catch (Exception ex)
 98        {
 099            _logger.LogError(ex, "Error al obtener resumen de liquidación para periodo {PeriodoId} version {Version}", p
 0100            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 101        }
 0102    }
 103
 104    [HttpGet("versiones")]
 105    [ProducesResponseType(typeof(ApiResponse<IEnumerable<int>>), StatusCodes.Status200OK)]
 106    [ProducesResponseType(typeof(ApiResponse<string>), StatusCodes.Status500InternalServerError)]
 107    public async Task<IActionResult> ObtenerVersiones([FromQuery] long periodoId)
 108    {
 109        try
 110        {
 0111            var versiones = await _liquidacionService.ObtenerVersionesAsync(periodoId);
 0112            return Ok(ApiResponse<IEnumerable<int>>.SuccessResult(versiones, "Versiones de liquidación obtenidas"));
 113        }
 0114        catch (Exception ex)
 115        {
 0116            _logger.LogError(ex, "Error al obtener versiones de liquidación para periodo {PeriodoId}", periodoId);
 0117            return StatusCode(500, ApiResponse<string>.ErrorResult("Error interno del servidor"));
 118        }
 0119    }
 120
 121    public class GenerarLiquidacionRequest
 122    {
 0123        public long PeriodoId { get; set; }
 0124        public int Version { get; set; }
 125    }
 126}