<?php
$strModulo = 'docElectronicos';

$arrCT = array();
//$url = 'https://www.solerpalau.mx/plantasyp/datosPlanta.php';
$url = 'https://www.solerpalau.mx/plantasyp/datosPlanta.php';
$opciones = array('http' =>
    array(
        'method' => 'GET',
        'max_redirects' => '0',
        'ignore_errors' => '1'
    )
);

$contexto = stream_context_create($opciones);
$flujo = fopen($url, 'r', false, $contexto);
$arrResultadoPeticion = json_decode(stream_get_contents($flujo), true);

$arrCT[0]['idCT'] = 'todos';
$arrCT[0]['name'] = 'Todos';
$contadorCT = 1;
foreach ($arrResultadoPeticion['datosRespuesta'] as $clave => $valor){
    $arrCT[$contadorCT]['idCT'] = $clave;
    $arrCT[$contadorCT]['name'] = $clave;
    $contadorCT++;
}

$jsonCentrosT = json_encode($arrCT);

$arrCentrosTrabajo = array();
$arrCentrosTrabajo['315'] = 'docs/315/Rechazadora ZENN-200/';
$arrCentrosTrabajo['316'] = '';
$arrCentrosTrabajo['559'] = '';
$arrCentrosTrabajo['606'] = '';
$arrCentrosTrabajo['613'] = 'docs/613/Salvagnini/';
$arrCentrosTrabajo['023'] = 'docs/023/Punzonadora CUPRA/';


$CT_recibido = '';
if($_SERVER['REQUEST_METHOD'] == "POST"){
    $CT_recibido = $_POST['select_CentroTrabajo'];
    if($CT_recibido != 'todos'){
        foreach ($arrCentrosTrabajo as $claveCT => $carpetaPdfs){
            if($claveCT != $CT_recibido){
                unset($arrCentrosTrabajo[$claveCT]);
            }
        }
    }
}


// Creamos los elementos para Documentos Electrónicos
$tbodyPdfs = '';
$contadorArchivos = 1;
foreach ($arrCentrosTrabajo as $claveCT => $carpetaPdfs){
    if(!empty($carpetaPdfs)){
        if(file_exists($carpetaPdfs)){
            if($directorio = opendir($carpetaPdfs)){
                while ($archivo = readdir($directorio)){
                    if (!is_dir($archivo)){
                        if (($archivo != ".") && ($archivo != "..")) {
                            //echo $archivo.'<br>';
                            $tbodyPdfs .= '<tr>';
                            $tbodyPdfs .= '<td class="celdaTabla">&nbsp;</td>';
                            $tbodyPdfs .= '<td class="celdaTabla">'.$contadorArchivos.'</td>';
                            $tbodyPdfs .= '<td class="celdaTabla">'.$claveCT.'</td>';
                            $tbodyPdfs .= '<td class="celdaTabla">'.$archivo.'</td>';

                            $tbodyPdfs .= '<td class="celdaTabla">';
                            $rutaPDF = $carpetaPdfs.$archivo;
                            $tbodyPdfs .= '<button id="btnP' . $contadorArchivos . '" data-dojo-type="dijit/form/Button" type="button" ';
                            $tbodyPdfs .= 'data-dojo-props="showLabel:true,iconClass:\'dijitIttecPdf\'" ';
                            $tbodyPdfs .= 'onclick="descargar(\'' . base64_encode($rutaPDF) . '\', \'PDF\')">Descargar PDF</button>';
                            $tbodyPdfs .= '</td>';

                            $tbodyPdfs .= '<td class="celdaTabla">&nbsp;</td>';
                            $tbodyPdfs .= '</tr>';
                            $contadorArchivos++;
                        }
                    }
                }
            }
        }
    }
}

if(empty($tbodyPdfs)){
    $tbodyPdfs = '<td width="100%" colspan="20" class="celdaTabla" style="text-align:center;font-weight:bold;padding:8px;">Usted no cuenta con los permisos necesarios.</td>';
}

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta http-equiv="imagetoolbar" content="no" />
    <link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Poppins:400,500,700,300,600">
    <link rel="stylesheet" type="text/css" href="//fonts.googleapis.com/css?family=Open+Sans">
    <link media="screen" rel="stylesheet" type="text/css" href="css/principal.css" />
    <link media="screen" rel="stylesheet" type="text/css" href="css/pagination.css"  /> <!--Paginador-->
    <link rel="shortcut icon" type="image/x-icon" href="css/layout/global/sp.ico" />

    <link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/dojo/1.14.1/dijit/themes/claro/claro.css">
    <script src="//ajax.googleapis.com/ajax/libs/dojo/1.14.1/dojo/dojo.js" data-dojo-config="async: true, parseOnLoad:true"></script>

    <script type="application/javascript">
        // Cargamos los complementos de dojo
        require(["dojo/dom", "dojo/_base/fx", "dojo/_base/array", "dojo/query", "dojo/dom-construct", "dijit/registry", "dojo/dom-style", "dojo/ready", "dojo/on", "dojo/window",
                "dojo/store/Memory", "dijit/form/FilteringSelect", "dijit/form/Button", "dojo/dom-class", "dijit/Dialog",
                "dojo/_base/lang", "dojox/grid/DataGrid", "dojo/data/ItemFileWriteStore", "dojox/grid/enhanced/plugins/DnD", "dojox/grid/EnhancedGrid", "dojox/grid/enhanced/plugins/Selector", "dojox/grid/enhanced/plugins/IndirectSelection", "dojox/grid/enhanced/plugins/NestedSorting",
                "dijit/ProgressBar", "dijit/ConfirmDialog", "dojo/dom-style", "dijit/form/ComboButton", "dijit/Menu", "dijit/MenuItem", "dijit/MenuSeparator", "dijit/Tooltip", "dijit/form/Form", "dijit/form/TextBox",
                "dojox/grid/enhanced/plugins/Filter", "dijit/form/ValidationTextBox", "dijit/form/NumberSpinner", "dojo/request", "dojo/parser"],
            function(dom, fx, array, query, domConstruct, dijit, style, ready, on, win,
                     Memory, FilteringSelect, Button, domClass, Dialog,
                     lang, DataGrid, ItemFileWriteStore, DnDConfig, EnhancedGrid, Selector, indirectSelection, nestedSorting,
                     ProgressBar, ConfirmDialog, style, ComboButton, Menu, MenuItem, MenuSeparator, Tooltip, Form, TextBox, filter, ValidationTextBox, NumberSpinner, request) {

                const idModulo = "<?php echo($strModulo);?>";
                const arrCentrosT = <?php echo($jsonCentrosT); ?>;
                const CT_recibido = "<?php echo($CT_recibido); ?>";

                // Para Mostrar de Mensajes de "error o éxito"
                var dgEjecuta = new Dialog({title: 'Procesando...', style: 'width:300px'});
                var pbMarcar = new ProgressBar({value: Number.POSITIVE_INFINITY, layoutAlign: 'left'});
                dgEjecuta.setContent(pbMarcar);
                dgResultadoError = new ConfirmDialog({ title:"<b>Error</b>", style: "min-width:300px; heigth; auto" });
                style.set(dgResultadoError.cancelButton.domNode, 'display', 'none');
                dgResultadoExito = new ConfirmDialog({ title:"<b>Éxito</b>", style: "min-width:300px; heigth; auto" });
                style.set(dgResultadoExito.cancelButton.domNode, 'display', 'none');

                /****************************************************************** Inputs ******************************************************************/
                new FilteringSelect({
                    id: "select_CentroTrabajo",
                    name: "select_CentroTrabajo",
                    store: new Memory({ idProperty: "idCT", data: arrCentrosT }),
                    autoComplete: true,
                    maxHeight: 300,
                    style: "width: 100%;",
                    placeHolder: "Seleccione una opción",
                    onChange: function(idCt){
                    }
                }, "select_CentroTrabajo");

                /****************************************************************** Botones ******************************************************************/
                new Button({
                    id: "btn_Buscar",
                    label: "Buscar",
                    iconClass: "dijitIconSearch",
                    showLabel: false,
                    onClick: function(){
                        let centroT = dijit.byId('select_CentroTrabajo').value;
                        if(centroT != ""){
                            dijit.byId("frm").submit();
                        }
                    }
                }, "btn_Buscar").startup();

                descargar = function (ruta, opcion) {
                    dgEjecuta.set("title", "Descargando...");
                    dgEjecuta.show();

                    accion = "descargarArchivo";

                    request.post('descargarArchivos.php', {
                        data: {
                            accion: accion,
                            idModulo: idModulo,
                            ruta: ruta
                        }
                    }).then(
                        function(response) {
                            var objResponse = JSON.parse(response);
                            if(objResponse['estatus'] == "ERROR"){
                                dgEjecuta.hide();
                                dgResultadoError.setContent(objResponse['errorDescripcion']);
                                dgResultadoError.show();
                            }else{
                                var data = objResponse['data'];
                                var type = objResponse['type'];
                                var datosArchivoSalida = objResponse['type'] + objResponse['data'];
                                var nombreArchivoSalida = objResponse['fileName'];

                                if(navigator.msSaveBlob){ // Adaptación para IE
                                    var blob = new Blob([s2ab(atob(data))],{
                                        type: type
                                    });
                                    navigator.msSaveBlob(blob, nombreArchivoSalida);
                                    dgEjecuta.hide();
                                }else{
                                    // Creamos los elementos para descargar
                                    var spanDescarga = domConstruct.toDom('<span>Para recuperar el archivo, haz click en el siguiente enlace: </span>');
                                    domConstruct.place(spanDescarga, 'contenidoDescarga');

                                    var tipo = accion;
                                    var idElemento = "elementoA_"+tipo;
                                    var linkDescarga = domConstruct.toDom('<a href="' + datosArchivoSalida + '" id="'+idElemento+'" download="' + nombreArchivoSalida + '">'+nombreArchivoSalida+'</a>');
                                    domConstruct.place(linkDescarga, 'contenidoDescarga');

                                    // Evento requerido para cuando no se ejecuta el evento click automáticamente (especialmente en dispositivos móviles)
                                    var clickEjecutado = false;
                                    on(linkDescarga, "click", function (evt) {
                                        clickEjecutado = true;
                                        spanDescarga.remove();
                                        linkDescarga.remove();
                                        divDescargas.hide();

                                    });

                                    linkDescarga.click();
                                    dgEjecuta.hide();

                                    if(clickEjecutado == false){
                                        var tituloDescarga = "<b>Descarga</b>";
                                        divDescargas.set("title", tituloDescarga);
                                        divDescargas.show();
                                    }
                                }
                            }
                        }
                    );

                };

                ready(function() {
                    // Actualizar el tamaño del TabContainer en función del tamaño de página
                    var ventana = win.getBox();
                    var strVentana = (ventana.h-75-50)+"px";
                    style.set(dijit.byId("djTab").id, { height:strVentana });
                    dijit.byId("djTab").resize();

                    // Actualizar el tamaño del TabContainer en función del tamaño de página
                    on(window, "resize", function() {
                        var ventana = win.getBox();
                        var strVentana = (ventana.h-75-50)+"px";
                        style.set(dijit.byId("djTab").id, { height:strVentana });
                        dijit.byId("djTab").resize();
                    });
                    // Eliminar la cortina de entrada
                    fx.fadeOut({node: dom.byId("loadingOverlay"), duration: 1}).play();
                    setTimeout(function () {
                        domConstruct.destroy("loadingOverlay");
                    }, 1);

                    // Para cuando cierran el divisor que contiene las descargas
                    divDescargas.on("Cancel", function (evt) {
                        var contenido = document.getElementById("contenidoDescarga");
                        while (contenido.firstChild) {
                            contenido.removeChild(contenido.firstChild);
                        }
                    });

                    if(CT_recibido != ""){
                        dijit.byId('select_CentroTrabajo').set("value", CT_recibido);
                    }

                });
            });

        // Función para convertir string a un array buffer (Necesario para descargar en IE)
        function s2ab(s) {
            var buf = new ArrayBuffer(s.length);
            var view = new Uint8Array(buf);
            for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
            return buf;
        }
    </script>

    <style type="text/css">
        .dijitIttecPdf {
            background-image: url("css/layout/site/lsPDF.gif");
            background-position: 1px;
            background-repeat: no-repeat;
            width: 14px;
            height: 14px;
        }
    </style>
</head>

<body class="claro">
<div id="loadingOverlay" class="loadingOverlay pageOverlay">
    <div class="loadingMessage">Espere...</div>
</div>

<!-- Divisor para guardar las descargas -->
<div data-dojo-type="dijit/Dialog" data-dojo-id="divDescargas" title="Descarga" style="top:0; position: absolute">
    <div id="contenidoDescarga" style="min-width:200px; min-height: 100px"></div>
</div>

<div id="wrapper_container_module">
    <div id="wrapper_table" style="position:relative;">
        <div data-dojo-type="dijit/form/Form" id="frm" data-dojo-id="frm" encType="multipart/form-data"
             action="<?php echo($_SERVER['PHP_SELF']); ?>" method="post" style="position:relative;">

            <script type="dojo/on" data-dojo-event="submit">return true;</script>

            <div id="wrapper_table_head">Documentos Electrónicos</div>
            <div id="wrapper_table_body_mod_app">
                <table width="100%" height="auto" border="0" style="border-spacing: 5px;">
                    <tr>
                        <td width="10%" colspan="2" class="etiquetaFormulario">
                            <label class="noTopPadding">Centro de Trabajo:</label>
                        </td>
                        <td width="20%" colspan="4">
                            <input id="select_CentroTrabajo" name="select_CentroTrabajo"/>
                        </td>
                        <td width="70%" colspan="14">
                            <button id="btn_Buscar" type="button"></button>
                        </td>
                    </tr>
                </table>


                <div id="djTab" data-dojo-type="dijit/layout/TabContainer" data-dojo-props="tabPosition:'top'" style="width:100%;">
                    <div data-dojo-type="dijit/layout/ContentPane" title="Lista de Documentos" data-dojo-props="selected:true">

                        <table width="100%" height="auto" cellpadding="0" cellspacing="0">
                            <thead>
                            <tr>
                                <td width="3%" class="encabezadoTabla"> &nbsp; </td>
                                <td width="10%" class="encabezadoTabla"> # </td>
                                <td width="20%" class="encabezadoTabla">Centro de Trabajo</td>
                                <td width="39%" class="encabezadoTabla"> Nombre Archivo </td>
                                <td width="25%" class="encabezadoTabla"> Acciones </td>
                                <td width="3%" class="encabezadoTabla"> &nbsp; </td>
                            </tr>
                            </thead>

                            <tbody id="TBPDFS">
                            <?php echo($tbodyPdfs); ?>
                            </tbody>
                        </table>

                    </div>
                </div>

            </div>
        </div>
    </div>
</div>

</body>

