<?php
/////////////////////////////////////
include("../../../assets/conn/conexion.php"); 
$bd_conn = new connexion($host_avanws,$user_avanws,$pass_avanws,$name_avanws,$port_avanws);
$bd_conn->query("SET NAMES 'utf8'");
date_default_timezone_set('Europe/Madrid');
include("funcUploadDocumentForSign.php");
/////////////////////////VARIABLES/////////////////////////////////////////////
define('TIME_TO_LIVE', '5000000');
define('COD_PARAM_DOMINIO', 'AWA_DOMINIO');
define('COD_PARAM_UPLOAD', 'URL_DOC_ANYWHERE');
define('COD_PARAM_SIGN', 'URL_SIGN_ANYWHERE');
define('URL_CONF_SIGN', 'https://dealerbest.serbanbiometrics.es:40300/SignAnyWhere.html?WorkstepId=');
define('URL_UPLOAD_PLANT', 'https://dealerbest.serbanbiometrics.es:47002/WorkstepController.Management.asmx');
$url_upload = consultarParametro($bd_conn, COD_PARAM_UPLOAD);
$url_upload = ($url_upload == '') ? URL_UPLOAD_PLANT : $url_upload;
$url_sign = consultarParametro($bd_conn, COD_PARAM_SIGN);
$url_sign = ($url_sign == '') ? URL_CONF_SIGN : $url_sign;
$json = trim(file_get_contents("php://input"));
$datos_firma = json_decode($json);
$data = array();
$reader = new XMLReader();
$doc = new DOMDocument;
$url = 'https://dealerbest.serbanbiometrics.es:47002/WorkstepController.Management.asmx';
$headers = array("Content-Type: text/xml; charset=utf-8");
$dominio = consultarParametro($bd_conn, COD_PARAM_DOMINIO);
//CARGO EL DOCUMENTO///////////////////////////////////////////////////////////
define('CLAVE_DOCUMENT',  $datos_firma->clave_doc);
define('TIPO_FIRMADO',  $datos_firma->sms);
define('PREF_LIT_FIRMANTE',  ', pincha aquí para firmar');
$datos_doc = consultarDocumento($bd_conn, CLAVE_DOCUMENT);
$doc_name = $datos_doc["NOMBRE"];
$doc_part = $datos_doc["PARTES"];
$doc_version = 0;
$file_binary = "";
for ($i=1; $i<=$doc_part; $i++) {
    $fichero = docContent($bd_conn, $datos_doc["SUFIJO"], CLAVE_DOCUMENT, $i, $doc_version);
    $file_binary .= base64_encode($fichero["FICHERO"]);
}
///////////////////////////////////////////////////////////////////////////////
$xml_upload ='<?xml version="1.0" encoding="utf-8"?>
        <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">   
          <soap12:Body>     
            <UploadDocument_v1 xmlns="http://com.xyzmo.server.workstepController.Management/">      
              <document>'.$file_binary.'</document>
              <fileName>'.$doc_name.'</fileName>
              <timeToLive>'.TIME_TO_LIVE.'</timeToLive>
            </UploadDocument_v1>\  
          </soap12:Body>
        </soap12:Envelope>';
/////////////////////ACCIONES//////////////////////////////////////////////////
$response_upload = curlPost(URL_UPLOAD_PLANT,$xml_upload,$headers);
//echo htmlentities($xml);
$reader->XML($response_upload);
while($reader->read()) {
  if ($reader->nodeType == XMLReader::ELEMENT && $reader->name == 'Body') {
    $node = simplexml_import_dom($doc->importNode($reader->expand(), true));
    $fail = (isset($node->Fault)) ? trim($node->Fault->Reason->Text) : 0;
    $status = 'fail';
    if ($fail !== 0) {
      $data[] = array ( 
        "status" => $status,
        "external_id" => $fail
    );
    }else {
      $result = (isset($node->UploadDocument_v1Response)) ? $node->UploadDocument_v1Response->UploadDocument_v1Result : '' ;     
      if (simplexml_load_string($result)->baseResult == 'ok') {
        $status = trim(simplexml_load_string($result)->baseResult);
        $document_id = trim(simplexml_load_string($result)->okInfo->DocumentId);
        
        $reader_workspace = new XMLReader();
        $doc_workspace = new DOMDocument;
        ///////////////////////////////////////////////////////////////////////
        //VALIDO EL TIPO DE FIRMADO A APLICAR//////////////////////////////////
        if (TIPO_FIRMADO == 0) {
          //SE APLICA FIRMA CON TRAZO//////////////////////////////////////////
          include("xmlUploadDocumentForSignTrazo.php");
        }elseif (TIPO_FIRMADO == 1) {
          //SE APLICA FIRMA CON SMS////////////////////////////////////////////
          include("xmlUploadDocumentForSignSms.php");
        }
         //////////////////////////////////////////////////////////////////////
         $xml_workstep ='<?xml version="1.0" encoding="utf-8"?>
         <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
         <soap12:Body>
             <CreateWorkstepAdobe_v1 xmlns="http://com.xyzmo.server.workstepController.Management/">
             <documentId>'.$document_id.'</documentId>
             <workstepConfiguration><![CDATA['.$xml_config_workstep.']]></workstepConfiguration>
             </CreateWorkstepAdobe_v1>
         </soap12:Body>
         </soap12:Envelope>';
         /////////////////////ACCIONES//////////////////////////////////////////
        $response_workstep = curlPost(URL_UPLOAD_PLANT,$xml_workstep,$headers);
        $reader_workspace->XML($response_workstep);
        while($reader_workspace->read()) {
            if ($reader_workspace->nodeType == XMLReader::ELEMENT && $reader_workspace->name == 'Body') {
                $node_workspace = simplexml_import_dom($doc_workspace->importNode($reader_workspace->expand(), true));
                $result_workspace = (isset($node_workspace->CreateWorkstepAdobe_v1Response->CreateWorkstepAdobe_v1Result)) ? trim($node_workspace->CreateWorkstepAdobe_v1Response->CreateWorkstepAdobe_v1Result) : 0;
                $workspace_id = trim(simplexml_load_string($result_workspace)->okInfo->WorkstepId);
            
            }
        }
        $reader_workspace->close();
        //VALIDO QUE SE HA GNERADO CORRECTAMENTE EL WORKSTEEP ID //////////////
        if ($workspace_id != '') {
          //CREO EL REGISTRO DEL WORKSTEEPID PARA RELACIONAR EL DOCUMENTO//////
          creaRegistroTablaInter($bd_conn, CLAVE_DOCUMENT, $workspace_id);
          //ENVIO MAIL DE NOTIFICACION DE FIRMA////////////////////////////////
          $vinculo_cliente = URL_CONF_SIGN . $workspace_id;
          include("mailUploadDocumentForSign.php");
          $data[] = array ( 
              "status" => $status,
              "WorkstepId" => $workspace_id,
              'documentId' => $document_id,
              'mailNotificacion' => $send_mail
          );
          
        }elseif ($workspace_id == '') {
          $data[] = array ( 
              "status" => 'error',
              "msg" => 'Sin WorksteepId, error en el esquema de firmado o el documento fue firmado anteriormente'
          );
        }
      }       
    }
  }
}
$reader->close();
header("Content-type: application/json; charset=utf-8");
echo json_encode($data);
?>
