Comenzando la implementación final de permisos y depuración. Se sigue...

This commit is contained in:
2025-06-03 18:42:56 -03:00
parent 062cc05fd0
commit 8fb94f8cef
46 changed files with 711 additions and 493 deletions

View File

@@ -38,6 +38,7 @@ namespace GestionIntegral.Api.Controllers.Distribucion
return null;
}
// GET: api/publicaciones
[HttpGet]
[ProducesResponseType(typeof(IEnumerable<PublicacionDto>), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status403Forbidden)]
@@ -48,6 +49,26 @@ namespace GestionIntegral.Api.Controllers.Distribucion
return Ok(publicaciones);
}
// GET: api/publicaciones/dropdown
[HttpGet("dropdown")]
[ProducesResponseType(typeof(IEnumerable<PublicacionDropdownDto>), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
// No se verifica permiso DP001, solo requiere autenticación general ([Authorize] del controlador)
public async Task<IActionResult> GetPublicacionesForDropdown([FromQuery] bool soloHabilitadas = true)
{
try
{
var publicaciones = await _publicacionService.ObtenerParaDropdownAsync(soloHabilitadas);
return Ok(publicaciones);
}
catch (Exception ex)
{
_logger.LogError(ex, "Error al obtener publicaciones para dropdown.");
return StatusCode(StatusCodes.Status500InternalServerError, "Error interno al obtener publicaciones para selección.");
}
}
// GET: api/publicaciones/{id}
[HttpGet("{id:int}", Name = "GetPublicacionById")]
[ProducesResponseType(typeof(PublicacionDto), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status403Forbidden)]
@@ -60,6 +81,7 @@ namespace GestionIntegral.Api.Controllers.Distribucion
return Ok(publicacion);
}
// POST: api/publicaciones
[HttpPost]
[ProducesResponseType(typeof(PublicacionDto), StatusCodes.Status201Created)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -77,6 +99,7 @@ namespace GestionIntegral.Api.Controllers.Distribucion
return CreatedAtRoute("GetPublicacionById", new { id = dto.IdPublicacion }, dto);
}
// PUT: api/publicaciones/{id}
[HttpPut("{id:int}")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -98,6 +121,7 @@ namespace GestionIntegral.Api.Controllers.Distribucion
return NoContent();
}
// DELETE: api/publicaciones/{id}
[HttpDelete("{id:int}")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
@@ -118,7 +142,7 @@ namespace GestionIntegral.Api.Controllers.Distribucion
return NoContent();
}
// Endpoint para obtener las configuraciones de días para una publicación
// Endpoint para obtener la configuración de días de publicación para una publicación específica
[HttpGet("{idPublicacion:int}/dias-semana")]
[ProducesResponseType(typeof(IEnumerable<PublicacionDiaSemanaDto>), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status403Forbidden)]

View File

@@ -71,6 +71,25 @@ namespace GestionIntegral.Api.Controllers.Impresion
}
}
// GET: api/plantas/dropdown
[HttpGet("dropdown")]
[ProducesResponseType(typeof(IEnumerable<PlantaDropdownDto>), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
// NO chequeo TienePermiso("IP001")(requiere autenticación)
public async Task<IActionResult> GetPlantasForDropdown()
{
try
{
var plantas = await _plantaService.ObtenerParaDropdownAsync();
return Ok(plantas);
}
catch (Exception ex)
{
_logger.LogError(ex, "Error al obtener plantas para dropdown.");
return StatusCode(StatusCodes.Status500InternalServerError, "Error interno al obtener plantas para selección.");
}
}
// GET: api/plantas/{id}
// Permiso: IP001 (Ver Plantas)
[HttpGet("{id:int}", Name = "GetPlantaById")]