using bdAntifraude.clases;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using SwaggerAntifraude.Models;
using SwaggerAntifraude.Servicios;

namespace SwaggerAntifraude.Controllers
{
    [ApiController]
    [Route("api/[controller]")]
    public class AlmacenamientoController : ControllerBase
    {
        private readonly ServicioAlmacenamiento _servicio = new ServicioAlmacenamiento();

        [Authorize(Policy = "SupervisorPolicy")]
        [HttpPost("almacenar-fichero")]
        public IActionResult AlmacenarFichero([FromBody] AlmacenaFicheroAtransmitir solicitud)
        {
            if (solicitud == null || string.IsNullOrEmpty(solicitud.Fichero))
                return BadRequest("Solicitud inválida.");

            var resultado = _servicio.DevolverResultadoAlmacenaFicheroAtransmitir(
                solicitud.IdRegistro,
                solicitud.Tabla,
                solicitud.Fichero
            );

            if (resultado.Resultado == 0)
                return Ok(resultado);

            return StatusCode(500, resultado);
        }

        [Authorize(Policy = "SupervisorPolicy")]
        [HttpPost("obtener-fichero")]
        public IActionResult ObtenerFichero(PeticionFichero solicitud)
        {
            if (string.IsNullOrEmpty(solicitud.Tabla) || solicitud.IdRegistro <= 0)
                return BadRequest("Solicitud inválida. Asegúrese de enviar los parámetros requeridos.");

            var resultado = _servicio.DevolverObtenFicheroAtransmitir(solicitud.IdRegistro, solicitud.Tabla, solicitud.Nif);

            if (resultado.Resultado == 0)
            {
                // Devolver el archivo como un PDF descargable
                return Ok(resultado);
            }

            return StatusCode(500, resultado);
        }
        [Authorize(Policy = "SupervisorPolicy")]
        [HttpPost("eliminar-fichero")]
        public IActionResult EliminarFichero(PeticionFichero solicitud)
        {
            if (string.IsNullOrEmpty(solicitud.Tabla) || solicitud.IdRegistro <= 0)
                return BadRequest("Solicitud inválida. Asegúrese de enviar los parámetros requeridos.");

            var resultado = _servicio.EliminarFicheroAtransmitir(solicitud.IdRegistro, solicitud.Tabla, solicitud.Nif);

            if (resultado.Resultado == 0)
            {
                // Devolver el archivo como un PDF descargable
                return Ok(resultado);
            }

            return StatusCode(500, resultado);
        }
    }
}