<?php

ob_start(); // Limpia el buffer por errores de salida
// Permite un mayor tiempo de respuesta del socket
ini_set('memory_limit', '-1');

$strModulo = $_POST['idModulo'];
if(empty($strModulo)){
    $strModulo = 'ERR';
}

// Variables de respuesta
$estatus = 'EXITO';
$errorDescripcion = '';
$datosRecibidos = array();

if($_SERVER["REQUEST_METHOD"] == "POST") {
    // Variables Recibidas
    $accion = $_POST['accion'];
    // Acciones Válidas
    $arrAccionesValidas = array('descargarArchivo');

    if(in_array($accion, $arrAccionesValidas)){
        switch ($accion){
            case 'descargarArchivo':
                $ruta = $_POST['ruta'];
                if(!empty($ruta)){
                    $nombreArchivo = 'archivo.pdf';
                    $archivoParaDescargar = base64_decode($ruta);

                    if(file_exists($archivoParaDescargar)){
                        $arrDatosRuta = explode('/', $archivoParaDescargar);
                        $nombreArchivo = array_pop($arrDatosRuta);

                        $rData = file_get_contents($archivoParaDescargar);
                        $data = base64_encode($rData);
                        $type = 'data:application/octet-stream;base64,';

                        // Enviamos los datos de respuesta
                        $jsonResponse = array(
                            'fileName' => $nombreArchivo,
                            'data' => $data,
                            'type' => $type
                        );
                        echo json_encode($jsonResponse);
                        exit;
                    }else{
                        $estatus = 'ERROR';
                        $errorDescripcion = 'SPS003 (' . $strModulo . ') - El archivo solicitado no existe.';
                        goto fin;
                    }
                }else{
                    $estatus = 'ERROR';
                    $errorDescripcion = 'SPS003 (' . $strModulo . ') - Ocurrió un problema al descargar el archivo.';
                    goto fin;
                }
                break;
        }
    }else{
        $estatus = 'ERROR';
        $errorDescripcion = 'SPS001 (' . $strModulo . ') - La acción solicitada no es válida.';
        goto fin;
    }
}else{
    $estatus = 'ERROR';
    $errorDescripcion = 'SPS002 (' . $strModulo . ') - Ocurrió un error al procesar la petición.';
    goto fin;
}

fin :
$jsonResponse = array(
    'estatus' => $estatus,
    'errorDescripcion' => $errorDescripcion,
    'datosRecibidos' => $datosRecibidos
);
echo json_encode($jsonResponse);
