Finalización de Reportes y arreglos varios de controles y comportamientos...

This commit is contained in:
2025-06-03 13:45:20 -03:00
parent 99532b03f1
commit 062cc05fd0
67 changed files with 4523 additions and 993 deletions

View File

@@ -83,7 +83,10 @@ namespace GestionIntegral.Api.Controllers.Distribucion
public async Task<IActionResult> UpdateMovimiento(int idParte, [FromBody] UpdateEntradaSalidaCanillaDto updateDto)
{
if (!TienePermiso(PermisoModificarMovimiento)) return Forbid();
if (!ModelState.IsValid) return BadRequest(ModelState);
// Esta línea es la que dispara la validación del modelo 'updateDto'
if (!ModelState.IsValid) return BadRequest(ModelState);
var userId = GetCurrentUserId();
if (userId == null) return Unauthorized();
@@ -91,7 +94,7 @@ namespace GestionIntegral.Api.Controllers.Distribucion
if (!exito)
{
if (error == "Movimiento no encontrado." || error == "No se puede modificar un movimiento ya liquidado.")
return NotFound(new { message = error }); // Podría ser 404 o 400 dependiendo del error
return NotFound(new { message = error });
return BadRequest(new { message = error });
}
return NoContent();

View File

@@ -117,5 +117,65 @@ namespace GestionIntegral.Api.Controllers.Distribucion
}
return NoContent();
}
// Endpoint para obtener las configuraciones de días para una publicación
[HttpGet("{idPublicacion:int}/dias-semana")]
[ProducesResponseType(typeof(IEnumerable<PublicacionDiaSemanaDto>), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status403Forbidden)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task<IActionResult> GetConfiguracionDiasPublicacion(int idPublicacion)
{
// Podrías usar el mismo permiso de ver publicaciones o uno específico
if (!TienePermiso(PermisoVer)) return Forbid();
var publicacion = await _publicacionService.ObtenerPorIdAsync(idPublicacion);
if (publicacion == null) return NotFound(new { message = "Publicación no encontrada." });
var configs = await _publicacionService.ObtenerConfiguracionDiasAsync(idPublicacion);
return Ok(configs);
}
// Endpoint para actualizar las configuraciones de días para una publicación
[HttpPut("{idPublicacion:int}/dias-semana")]
[ProducesResponseType(StatusCodes.Status204NoContent)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status403Forbidden)]
[ProducesResponseType(StatusCodes.Status404NotFound)]
public async Task<IActionResult> UpdateConfiguracionDiasPublicacion(int idPublicacion, [FromBody] UpdatePublicacionDiasSemanaRequestDto requestDto)
{
// Podrías usar el mismo permiso de modificar publicaciones o uno específico
if (!TienePermiso(PermisoModificar)) return Forbid();
if (!ModelState.IsValid) return BadRequest(ModelState);
var userId = GetCurrentUserId();
if (userId == null) return Unauthorized();
var (exito, error) = await _publicacionService.ActualizarConfiguracionDiasAsync(idPublicacion, requestDto, userId.Value);
if (!exito)
{
if (error == "Publicación no encontrada.") return NotFound(new { message = error });
return BadRequest(new { message = error });
}
return NoContent();
}
// Endpoint para obtener publicaciones por día de la semana (para el modal de canillitas)
[HttpGet("por-dia-semana")]
[ProducesResponseType(typeof(IEnumerable<PublicacionDto>), StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status400BadRequest)]
[ProducesResponseType(StatusCodes.Status403Forbidden)]
public async Task<IActionResult> GetPublicacionesPorDia([FromQuery] byte dia) // dia: 0=Domingo, 1=Lunes...
{
// Generalmente, este endpoint no necesitaría un permiso estricto si solo devuelve datos públicos
// pero puedes añadirlo si es necesario.
// if (!TienePermiso(PermisoVer)) return Forbid();
if (dia > 6) // byte no puede ser negativo
{
return BadRequest(new { message = "El día de la semana debe estar entre 0 (Domingo) y 6 (Sábado)." });
}
var publicaciones = await _publicacionService.ObtenerPublicacionesPorDiaSemanaAsync(dia);
return Ok(publicaciones);
}
}
}