<?php

/**
 * generar_documento actions.
 *
 * @package    cobro_coactivo
 * @subpackage aprueba_fp
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
require_once 'HTMLPurifier.auto.php';
require 'HTMLPurifier.autoload.php';

class generar_documentoActions extends sfActions {

    /**
     * Executes index action
     *
     * @param sfRequest $request A request object
     */
    public function executePdf(sfWebRequest $request) {

        //Revisar que sea post
        //$this->forward404Unless($request->isMethod('post'));
        //Guardar los parametros del request en el log
        $this->logMessage("---BEGIN Logging request");
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("--------------------------------------------------* Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");

        /**
         * HTMLPurifier_Config
         */
        $config = HTMLPurifier_Config::createDefault();
        $purifier = new HTMLPurifier($config);

        //Conexion a la base de datos
        $consul = Doctrine_Manager::getInstance()->connection();

        /**
         * Variables generales
         */
        $fecha = null;
        $documento = null;
        $version = null;

        $detalle_plantilla = "Sin detalle";


        //id_
        if (isset($request['id_'])) {

            $id_ = $request['id_'];
            $nombre_archivo = "archivo";

            //SQL de consulta
            $sql = <<<EOD
select * from dual
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
        }


        //id_plantilla
        if (isset($request['id_plantilla'])) {

            $id_plantilla = $request['id_plantilla'];
            $nombre_archivo = "documento_plantilla";

            //SQL de consulta
            $sql = <<<EOD
select * from cbr_plantilla 
where
id_plantilla = $id_plantilla     
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE'];
            $version = $datos[0]['VERSION'];
        }

        //id_registro_etapa
        if (isset($request['id_registro_etapa'])) {

            $id_registro_etapa = $request['id_registro_etapa'];
            $nombre_archivo = "actuacion_procesal";

            //SQL de consulta
            $sql = <<<EOD
select 
    
tab3.descripcion||' No. '|| tab0.numero AS DOCUMENTO, 
    to_char(tab0.fecha,'dd-mm-yyyy') AS FECHA, 
        tab0.detalle_plantilla, tab2.version 

from cbr_registro_etapa tab0 

left join cbr_actuacion_proc tab1 ON tab1.id_actuacion_proc = tab0.id_actuacion_proc 

left join cbr_plantilla tab2 ON tab2.id_plantilla = tab0.id_plantilla 

left join cbr_tipo_documento tab3 ON tab3.id_tipo_documento = tab1.id_tipo_documento

where 
tab0.id_registro_etapa = $id_registro_etapa  
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
            $documento = $datos[0]['DOCUMENTO'];
            $fecha = $datos[0]['FECHA'];
            $version = $datos[0]['VERSION'];
        }

        //id_adjudicacion
        if (isset($request['id_adjudicacion'])) {

            $id_adjudicacion = $request['id_adjudicacion'];
            $nombre_archivo = "Designacion Secuestre";

            //SQL de consulta
            $sql = <<<EOD
select tab0.* from cbr_adjudicacion tab0 
where tab0.id_adjudicacion = $id_adjudicacion
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
        }

        //id_aprueba_fp
        if (isset($request['id_aprueba_fp'])) {

            $id_aprueba_fp = $request['id_aprueba_fp'];
            $nombre_archivo = "aprobacion_facilidad_pago";

            //SQL de consulta
            $sql = <<<EOD
select 
tab0.* 
from cbr_aprueba_fp tab0 
where 
tab0.id_aprueba_fp = $id_aprueba_fp 
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
        }

        //id_aprueba_remate
        if (isset($request['id_aprueba_remate'])) {

            $id_aprueba_remate = $request['id_aprueba_remate'];
            $nombre_archivo = "aprobacion_remate";

            //SQL de consulta
            $sql = <<<EOD
select tab0.* from cbr_aprueba_remate tab0 
where tab0.id_aprueba_remate = $id_aprueba_remate
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
        }

        //id_auto_cierre
        if (isset($request['id_auto_cierre'])) {

            $id_auto_cierre = $request['id_auto_cierre'];
            $nombre_archivo = "auto_cierre";

            //SQL de consulta
            $sql = <<<EOD
select tab3.descripcion||' No. '|| tab0.no_auto AS DOCUMENTO, 
    to_char(tab0.fecha,'dd-mm-yyyy') AS FECHA, tab0.detalle, tab2.version  
from cbr_auto_cierre tab0 
left join cbr_plantilla tab2 ON tab2.id_plantilla = tab0.id_plantilla 
left join cbr_tipo_documento tab3 
    ON tab3.id_tipo_documento = tab0.id_tipo_documento 

where tab0.id_auto_cierre = $id_auto_cierre
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE'];
            $documento = $datos[0]['DOCUMENTO'];
            $fecha = $datos[0]['FECHA'];
            $version = $datos[0]['VERSION'];
        }

        //id_avaluo
        if (isset($request['id_avaluo'])) {

            $id_avaluo = $request['id_avaluo'];
            $nombre_archivo = "archivo avaluo";

            //SQL de consulta
            $sql = <<<EOD
select tab0.* from cbr_avaluo tab0 
where tab0.id_avaluo = $id_avaluo
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
        }

        //id_avoca_conoc
        if (isset($request['id_avoca_conoc'])) {

            $id_avoca_conoc = $request['id_avoca_conoc'];
            $nombre_archivo = "avoca_conocimiento";

            //SQL de consulta
            $sql = <<<EOD
select tab3.descripcion||' No. '|| tab0.no_auto AS DOCUMENTO, 
    to_char(tab0.fecha,'dd-mm-yyyy') AS FECHA, tab0.detalle, tab2.version  
from cbr_avoca_conoc tab0 
left join cbr_plantilla tab2 ON tab2.id_plantilla = tab0.id_plantilla 
left join cbr_tipo_documento tab3 ON tab3.id_tipo_documento = tab0.id_tipo_documento 

where tab0.id_avoca_conoc = $id_avoca_conoc 
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE'];
            $documento = $datos[0]['DOCUMENTO'];
            $fecha = $datos[0]['FECHA'];
            $version = $datos[0]['VERSION'];
        }

        //id_diligencia
        if (isset($request['id_diligencia'])) {

            $id_diligencia = $request['id_diligencia'];
            $nombre_archivo = "Designacion Secuestre";

            //SQL de consulta
            $sql = <<<EOD
select tab0.* from cbr_diligencia tab0 
where tab0.id_diligencia = $id_diligencia
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
        }

        //id_incumple_fp
        if (isset($request['id_incumple_fp'])) {

            $id_incumple_fp = $request['id_incumple_fp'];
            $nombre_archivo = "incumplimiento_facilidad_pago";

            //SQL de consulta
            $sql = <<<EOD
select tab0.* from cbr_incumple_fp tab0 
where tab0.id_incumple_fp =  $id_incumple_fp
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
        }

        //id_levanta_medida
        if (isset($request['id_levanta_medida'])) {

            $id_levanta_medida = $request['id_levanta_medida'];
            $nombre_archivo = "Levanta Medida Cautelar";

            //SQL de consulta
            $sql = <<<EOD
select tab0.* from cbr_levanta_medida tab0 
where tab0.id_levanta_medida = $id_levanta_medida
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
        }

        //id_medida_cautelar
        if (isset($request['id_medida_cautelar'])) {

            $id_medida_cautelar = $request['id_medida_cautelar'];
            $nombre_archivo = "medida_cautelar";

            //SQL de consulta
            $sql = <<<EOD
select tab0.* from cbr_medida_cautelar tab0 
where tab0.id_medida_cautelar = $id_medida_cautelar
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
        }

        //id_remate
        if (isset($request['id_remate'])) {

            $id_remate = $request['id_remate'];
            $nombre_archivo = "archivo remate";

            //SQL de consulta
            $sql = <<<EOD
select tab0.* from cbr_remate tab0 
where tab0.id_remate = $id_remate
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
        }

        //id_resultado_remate
        if (isset($request['id_resultado_remate'])) {

            $id_resultado_remate = $request['id_resultado_remate'];
            $nombre_archivo = "resultado_remate";

            //SQL de consulta
            $sql = <<<EOD
select tab0.* from cbr_resultado_remate tab0 
where tab0.id_resultado_remate = $id_resultado_remate
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
        }

        //id_secuestro
        if (isset($request['id_secuestro'])) {

            $id_secuestro = $request['id_secuestro'];
            $nombre_archivo = "secuestro";

            //SQL de consulta
            $sql = <<<EOD
select tab0.* from cbr_secuestro tab0 
where tab0.id_secuestro = $id_secuestro
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
        }

        //id_comite_ficha
        if (isset($request['id_comite_ficha'])) {

            $id_comite_ficha = $request['id_comite_ficha'];
            $nombre_archivo = "ficha comite cartera";

            //SQL de consulta
            $sql = <<<EOD
select tab0.* from cbr_comite_ficha tab0 
where tab0.id_comite_ficha = $id_comite_ficha
EOD;
            $st = $consul->execute($sql);
            $datos = $st->fetchAll();

            $detalle_plantilla = $datos[0]['DETALLE_PLANTILLA'];
        }


        /**
         * Purificar datos
         */
        $detalle = $purifier->purify($detalle_plantilla);

        /**
         * Lllamdo a libreria PDF
         */
        $pdf = new CDPDF('P', 'mm', 'letter');

        $pdf->SetFont('Times', '', 10);
        $pdf->SetFillColor(255);
        $pdf->SetTextColor(0);
        $pdf->setTipo(1);

        if ($fecha != null) {
            $pdf->setFecha($fecha);
        }
        if ($documento != null) {
            $pdf->setDocumento($documento);
        }
        if ($version != null) {
            $pdf->setVersion($version);
        }

        $pdf->setTitulo("OFICINA ASESORA JURÍDICA<br/>GRUPO COBRO COACTIVO");
        $pdf->AddPage();

        //$html='<table cellpadding="2"><tr><td>'.$this->htmlClear($detalle).'</td></tr></table>';//Se comenta ya que no genera datos por el metodo se usa htnlpurifier - 20200626
        $html = '<table cellpadding="2"><tr><td>' . $detalle . '</td></tr></table>';

        //echo $html;

        $pdf->writeHTML($html, true, false, true, false, '');
        //Generar archivo
        $pdf->Output($nombre_archivo . ".pdf", "D");

        die();
    }

    /**
     * Metodo para limpiar el HTML
     * 
     * @param type $string
     * @return type
     */
    private function htmlClear($string) {

        $string = str_replace('<p>', '<p align="justify">', $string);
        $string = str_replace('<br>', '<br/>', $string);
        $string = str_replace('class=', '', $string);
        $string = str_replace('<img', '', $string);
        $string = str_replace('<td>X</td>', '<td align="center">X</td>', $string);
        //$string = str_replace('<td align="top">', '<td align="justify">', $string);
        //$string = str_replace('<td align="justify">X</td>', '<td align="center">X</td>', $string);
        $string = str_replace('<td rowspan="2">', '<td rowspan="2" align="justify">', $string);

        $string = str_replace('<font size="2">', '<font size="10">', $string);
        $string = str_replace('<font size="3">', '<font size="12">', $string);
        $string = str_replace('<font size="4">', '<font size="14">', $string);
        $string = str_replace('<font size="5">', '<font size="18">', $string);
        $string = str_replace('<font size="6">', '<font size="24">', $string);
        $string = str_replace('<font size="7">', '<font size="36">', $string);
        $string = str_replace('<table ', '<center><table ', $string);
        $string = str_replace('</table> ', '</table></center>', $string);
        $string = str_replace('<table ', '<table border="1"', $string);

        $string = str_replace('size="2"', 'size="8"', $string);
        $string = str_replace('size="2"', 'size="10"', $string);
        $string = str_replace('size="3"', 'size="12"', $string);
        $string = str_replace('size="4"', 'size="14"', $string);
        $string = str_replace('size="5"', 'size="18"', $string);
        $string = str_replace('size="6"', 'size="24"', $string);
        $string = str_replace('size="7"', 'size="36"', $string);

        $string = str_replace('border="0"', 'border="1"', $string);


        $string = str_replace('<div>', '<div align="justify">', $string);
        $string = str_replace('&amp;amp;amp;nbsp;', ' ', $string);
        $string = str_replace('&amp;amp;nbsp;', '', $string);
        $string = str_replace('<style type="text/css">P { margin-bottom: 0.08in; direction: ltr; color: rgb(0, 0, 0); line-height: 100%; text-align: justify; widows: 2; orphans: 2; }P.western { font-family: "Tahoma",sans-serif; font-size: 11pt; }P.cjk { font-family: "Times New Roman",serif; font-size: 11pt; }P.ctl { font-family: "Tahoma",sans-serif; font-size: 11pt; }A:link { color: rgb(0, 0, 255); }</style>', ' ', $string);

        $string = str_replace('<td colspan="2">', '<td colspan="2" align="justify">', $string);
        $string = str_replace('<td rowspan="3">', '<td rowspan="3" align="justify">', $string);
        $string = str_replace('<td colspan="3">', '<td colspan="3" align="justify">', $string);
        $string = str_replace('<td rowspan="4">', '<td rowspan="4" align="justify">', $string);
        $string = str_replace('<td colspan="4">', '<td colspan="4" align="justify">', $string);
        $string = str_replace('  ', ' ', $string);
        $string = str_replace('   ', ' ', $string);
        $string = str_replace('    ', ' ', $string);
        $string = str_replace('	    ', ' ', $string);
        $string = str_replace('		    ', ' ', $string);
        $string = str_replace('<span lang="ES-TRAD">', '', $string);
        $string = str_replace('<span lang="ES-COL">', '', $string);
        $string = str_replace('<!-- @page { size: 21cm 29.7cm; margin: 2cm } P { margin-bottom: 0.21cm } -->', '', $string);
        $string = str_replace('<p lang="es-MX" align="justify">', '', $string);
        $string = str_replace('<span>', '', $string);
        //$string = str_replace('</span>', '', $string); #Este es el que MAS jode :::::::::::::::::
        $string = str_replace('valign', 'align', $string);
        ;
        $string = str_replace('width=', '', $string);
        //    $string = str_replace('&nbsp;', '', $string);
        //      $string = str_replace('cellspacing=', '', $string);
        //      $string = str_replace('cellpadding=', '', $string);
        $string = str_replace('bordercolor=', '', $string);
        $string = str_replace('<td>', '<td align="justify">', $string);
        $string = str_replace('<li>', '<li align="justify">', $string);
        $string = str_replace('style=', '', $string);

        return trim($string);
    }

}
