<?php

class alertaComisionTask extends sfBaseTask {

    protected function configure() {
        // // add your own arguments here
        // $this->addArguments(array(
        //   new sfCommandArgument('my_arg', sfCommandArgument::REQUIRED, 'My argument'),
        // ));

        $this->addOptions(array(
            new sfCommandOption('application', null, sfCommandOption::PARAMETER_REQUIRED, 'The application name', 'api'),
            new sfCommandOption('env', null, sfCommandOption::PARAMETER_REQUIRED, 'The environment', 'dev'),
            new sfCommandOption('connection', null, sfCommandOption::PARAMETER_REQUIRED, 'The connection name', 'doctrine'),
                // add your own options here
        ));

        $this->namespace = 'alerta';
        $this->name = 'comision';
        $this->briefDescription = '';
        $this->detailedDescription = <<<EOF
The [alerta:comision|INFO] task does things.
Call it with:

  [php symfony alerta:comision|INFO]
EOF;
    }

    protected function execute($arguments = array(), $options = array()) {

        // initialize the database connection
        $databaseManager = new sfDatabaseManager($this->configuration);
        $conn = Doctrine_Manager::connection();

        //Mensaje
        if (!isset($request["mensaje"])) {
            $request["mensaje"] = "Alarma de Registro de Cumplido";
        }

        //Email Envio
        if (!isset($request["email_envio"])) {
            $request["email_envio"] = "viaticoscolciencias@colciencias.gov.co";
        }

        //Email Para
        if (!isset($request["email"])) {
            $request["email"] = $request["email_envio"];
        } else {
            if ($request["email"] == null || $request["email"] == '' || $request["email"] == 'null') {
                $request["email"] = $request["email_envio"];
            }
        }


        if (!isset($request['progress_key'])) {
            $request['progress_key'] = 'progress_key';
        }

        if (!isset($request['username'])) {
            $request['username'] = 'sofhouse';
        }

        if (!isset($request['ruta'])) {
            $ruta = '';
        }

        if (!isset($request['array_adjuntos'])) {
            $array_adjuntos = '';
        }

        if (!isset($request['progress_key'])) {
            $progress_key = '';
        }

        $sql = "
        SELECT tab0.dia_sistema||' de '||tab0.mes_sistema||' del '||anho_sistema AS FECHA_SISTEMA
           from(
            select LPAD(to_char(sysdate,'dd'),2,'0') as dia_sistema,
            trim(initcap(to_char(sysdate,'MONTH','nls_date_language=spanish'))) as mes_sistema,
            TO_CHAR(sysdate,'yyyy') as anho_sistema
            from dual
        )tab0
        ";

        $records = $conn->execute($sql)->fetchAll();
        $fecha_creacion = $records[0]['FECHA_SISTEMA'];

        //SE CONSULTAN LAS ALARMAS QUE EXISTEN
        
        
        $sql = "select tab0.* from com_alarma tab0 where tab0.id_tipo_alarma = 2 order by tab0.numero";
        $results = $conn->execute($sql)->fetchAll();

        foreach ($results as $alarmas) {

            $numero_alarma = $alarmas['NUMERO'];
            $id_alarma = $alarmas['ID_ALARMA'];
            
            $adjunto = false;
            switch ($numero_alarma):

                case 1:

                    // Alerta Legalizacion Vencida


                    $sql = "select tab0.* from com_administra_alarma tab0 where tab0.id_alarma = $id_alarma";
                    $administra = $conn->execute($sql)->fetchAll();

                    foreach ($administra as $administra) {

                        $id_rol = $administra['ID_ROL'];
                        $dias = $administra['DIAS_POR_VENCER'];



                       /*$sql = "select tab0.id_comision,to_char(tab0.fecha_alarma,'dd/mm/yyyy') as fecha_alarma,tab0.fecha_compa - fecha_alarma as dias_vencidos

        from(

        select tab0.id_comision,
        tab4.cumplido,
        tab0.FECHA_FIN + interval '$dias' day as fecha_alarma, TRUNC(SYSDATE) AS FECHA_COMPA

        from com_comision tab0
        left join com_resolucion tab1 ON tab1.id_comision = tab0.id_comision
        left join com_cuenta tab2 ON tab2.id_resolucion = tab1.id_resolucion
        left join com_pago_egreso tab3 ON tab3.id_cuenta = tab2.id_cuenta
        left join com_estado_cump tab4 ON tab4.id_pago_egreso = tab3.id_pago_egreso
        where tab3.estado = 1
        order by tab0.no_comision

        )tab0

        where FECHA_ALARMA < FECHA_COMPA and tab0.cumplido=0 and fecha_alarma >= to_date('12-05-2015','DD-MM-YYYY')";*/
                        
        // 20170621 se toma en cuenta para la alarma dias habiles ticket #6550                
                      $sql = "select tab0.id_comision,to_char(tab0.fecha_alarma,'dd/mm/yyyy') as fecha_alarma,tab0.fecha_compa - fecha_alarma as dias_vencidos

        from(

        select tab0.id_comision,
        tab4.cumplido,
        DIAS_HABILES(tab0.FECHA_FIN,$dias) as fecha_alarma, TRUNC(SYSDATE) AS FECHA_COMPA

        from com_comision tab0
        left join com_resolucion tab1 ON tab1.id_comision = tab0.id_comision
        left join com_cuenta tab2 ON tab2.id_resolucion = tab1.id_resolucion
        left join com_pago_egreso tab3 ON tab3.id_cuenta = tab2.id_cuenta
        left join com_estado_cump tab4 ON tab4.id_pago_egreso = tab3.id_pago_egreso
        where tab3.estado = 1
        order by tab0.no_comision

        )tab0

        where FECHA_ALARMA < FECHA_COMPA and tab0.cumplido=0 and fecha_alarma >= to_date('12-05-2015','DD-MM-YYYY')";

                        $results = $conn->execute($sql)->fetchAll();

                        foreach ($results as $comisiones) {
                            
                            $id_comision = $comisiones['ID_COMISION'];
                            $dias_vencidos = $comisiones['DIAS_VENCIDOS'];
                            $fecha_alarma = $comisiones['FECHA_ALARMA'];
                            
                            $sql = <<<EOD
select tab1.id_tercero,tab2.num_doc, tab2.id_tipo_doc, tab2.nombre, nvl(tab2.email,'viaticoscolciencias@colciencias.gov.co') email, tab3.descripcion as rol
from com_administra_alarma tab0
join com_rol_comision_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_comision = $id_comision
join com_tercero tab2 ON tab2.id_tercero = tab1.id_tercero
join com_rol tab3 ON tab3.id_rol = tab0.id_rol                        
where tab0.id_alarma = $id_alarma and tab3.id_rol = $id_rol and tab1.id_tercero is not null
EOD;


                            $records = CN_TABLE::executeSQL($sql);

                            foreach ($records as $correos) {



                                $id_tercero = $correos['id_tercero'];
                                $documento = $correos['num_doc'];
                                $tipo_doc = $correos['id_tipo_doc'];
                                $nombre = $correos['nombre'];
                                $email = $correos['email'];
                                $rol = $correos['rol'];


                                $parametros = $documento . ";$tipo_doc;" . $email . ";" . $nombre . ";Envio notificacion";

                                $datos_usuario = array();

                                if ($parametros != "") {
                                    $datos_usuario = explode('/', $parametros);
                                }


                              /*  $sql = "select to_char(tab0.fecha_salida,'dd-mm-yyyy') AS FECHA_SALIDA,to_char(tab0.fecha_regreso,'dd-mm-yyyy') AS FECHA_REGRESO, tab1.NO_COMISION,tab1.ID_ANHOS,tab2.NUM_DOC,tab2.NOMBRE,tab2.EMAIL,tab3.DESCRIPCION,
                tab1.OBJETO,tab4.valor AS VALOR,tab5.DESCRIPCION as AREA,tab6.DESCRIPCION as tipo_destino

                from COM_COMISIONADO tab0
                join com_comision tab1 ON tab1.id_comision = tab0.id_comision
                join com_tercero tab2 ON tab2.ID_TERCERO = tab0.id_tercero
                join PROYECTOS tab3 ON tab3.ID = tab1.ID_PROYECTO
                
                LEFT JOIN(
                select gasto.id_comision,gasto.id_tercero,sum(gasto.valor) as VALOR
                
                from com_comisionado_obj gasto 
                
                group by gasto.id_comision, gasto.id_tercero
                               
                
                )tab4 ON tab4.id_tercero = tab0.id_tercero and tab4.id_comision = tab0.id_comision
                
                left join area tab5 ON tab5.ID_AREA = tab1.id_area
                left join com_tipo_destino tab6 ON tab6.id_tipo_destino = tab1.id_tipo_destino
                where tab0.id_comision =" . $id_comision ;//*/
                                //20170531 se actualizo la consulta para obtener los destinos,la resolucion y fecha de resolucion
                                $sql = "select to_char(tab0.fecha_salida,'dd-mm-yyyy') AS FECHA_SALIDA,to_char(tab0.fecha_regreso,'dd-mm-yyyy') AS FECHA_REGRESO, 
                                    tab1.NO_COMISION,cr.no_resolucion,cr.fecha_resolucion,tab1.ID_ANHOS,tab2.NUM_DOC,tab2.NOMBRE,tab2.EMAIL,tab3.DESCRIPCION,
                tab1.OBJETO,tab4.valor AS VALOR,tab5.DESCRIPCION as AREA,tab6.DESCRIPCION as tipo_destino,dest.DESTINOS

                from COM_COMISIONADO tab0
                join com_comision tab1 ON tab1.id_comision = tab0.id_comision
                join com_tercero tab2 ON tab2.ID_TERCERO = tab0.id_tercero
                join PROYECTOS tab3 ON tab3.ID = tab1.ID_PROYECTO
                
                LEFT JOIN(
                select gasto.id_comision,gasto.id_tercero,sum(gasto.valor) as VALOR
                
                from com_comisionado_obj gasto 
                
                group by gasto.id_comision, gasto.id_tercero
                               
                
                )tab4 ON tab4.id_tercero = tab0.id_tercero and tab4.id_comision = tab0.id_comision
                
                left join com_resolucion cr on cr.ID_COMISION=tab1.id_comision 
                
                left join area tab5 ON tab5.ID_AREA = tab1.id_area
                left join com_tipo_destino tab6 ON tab6.id_tipo_destino = tab1.id_tipo_destino
                
                left join (select listagg(MUNICIPIO,', ') WITHIN GROUP (ORDER BY CODMUN) DESTINOS,
                cd.ID_TERCERO,cd.ID_COMISION from com_destino cd join municipios m on cd.DESTINO_FIN=m.CODMUN 
                group by cd.ID_COMISION,cd.ID_TERCERO)dest 
                on dest.ID_COMISION=tab1.id_comision and dest.ID_TERCERO=tab0.ID_TERCERO
                
                where tab0.id_comision =" . $id_comision ;

                                $records = $conn->execute($sql)->fetchAll();

                                $no_comision = $records[0]['NO_COMISION'];
                                $tipo_destino = $records[0]['TIPO_DESTINO'];
                                $caja = $records[0]['DESCRIPCION'];
                                $objeto = $records[0]['OBJETO'];
                                $area = $records[0]['AREA'];
                                $fecha_salida = $records[0]['FECHA_SALIDA'];
                                $fecha_regreso = $records[0]['FECHA_REGRESO'];
                                $valor = $records[0]['VALOR'];
                                $valor = number_format($valor);
                                $no_resolucion=$records[0]['no_resolucion'];
                                $fecha_resolucion=$records[0]['fecha_resolucion'];
                                $destinos=$records[0]['destinos'];
                                
                                $subject = $alarmas['DESCRIPCION'] ." - Comision No. ".$no_comision;
                                
                                    $mensaje = "Por medio de la presente se informa que se venció el plazo para la entrega del formato del cumplido de comisión.  Vencimiento ".$fecha_alarma;
                                    
                                
                                //CUERPO DEL MENSAJE

                                $body = "<html><body> </body></html>";
                                //Body
                                $body = <<<EOD
                <html><body> 
                <br/>
                Bogotá, $fecha_creacion
                <br/>
                <br/>
                Señor(a)<br/>
                $nombre<br/>
                $rol        
                <br/><br/>
                $mensaje     
                <br/>  <br/>       
                <b>Area :</b> $area<br/>
                <b>Comision No. :</b> $no_comision<br/>
                <b>Resolucion No. :</b> $no_resolucion<br/>
                <b>Fecha Resolucion :</b> $fecha_resolucion<br/> 
                <b>Tipo de Destino. :</b> $tipo_destino<br/>
                <b>Destinos :</b> $destinos<br/> 
                <b>Caja Menor:</b> $caja<br/>
                <b>Objeto:</b> $objeto<br/>
                <b>Fecha Salida:</b> $fecha_salida<br/>
                <b>Fecha Regreso:</b> $fecha_regreso<br/>
                <b>Valor:</b> $valor<br/><br/>
                <br/><br/>
                </body></html>
EOD;




                                $currentUri = "";


                                $this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                            }
                        }
                    }

                    break;
                    
                    
                    case 2:

                    // Alerta Comisión por Legalizar


                    $sql = "select tab0.* from com_administra_alarma tab0 where tab0.id_alarma = $id_alarma";
                    $administra = $conn->execute($sql)->fetchAll();

                    foreach ($administra as $administra) {

                        $id_rol = $administra['ID_ROL'];
                        $dias = $administra['DIAS_POR_VENCER'];
                        $dias_maximo = $administra['DIAS_REPETICION'];



                        $sql = "select tab0.id_comision,TO_CHAR(tab0.fecha_alarma,'dd/mm/yyyy')fecha_alarma,TO_CHAR(tab0.fecha_maxima,'dd/mm/yyyy')fecha_maxima,tab0.fecha_compa - fecha_alarma as dias_vencidos

        from(

select tab0.id_comision,
        tab4.cumplido,
        tab0.FECHA_FIN,
        tab0.FECHA_FIN + interval '$dias' day as fecha_alarma, 
        tab0.FECHA_FIN + interval '$dias_maximo' day as fecha_maxima, 
        TRUNC(SYSDATE) AS FECHA_COMPA

        from com_comision tab0
        left join com_resolucion tab1 ON tab1.id_comision = tab0.id_comision
        left join com_cuenta tab2 ON tab2.id_resolucion = tab1.id_resolucion
        left join com_pago_egreso tab3 ON tab3.id_cuenta = tab2.id_cuenta
        left join com_estado_cump tab4 ON tab4.id_pago_egreso = tab3.id_pago_egreso
        where tab3.estado = 1
        order by tab0.no_comision
        
        
        )tab0

 where FECHA_ALARMA <= FECHA_COMPA and FECHA_MAXIMA>=FECHA_COMPA and tab0.cumplido=0
 and fecha_alarma";

                        $results = $conn->execute($sql)->fetchAll();

                        foreach ($results as $comisiones) {
                            
                            $id_comision = $comisiones['ID_COMISION'];
                            $dias_vencidos = $comisiones['DIAS_VENCIDOS'];
                            $fecha_alarma = $comisiones['FECHA_ALARMA'];
                            $fecha_maxima = $comisiones['FECHA_MAXIMA'];
                            
                            $sql = <<<EOD
select tab1.id_tercero,tab2.num_doc, tab2.id_tipo_doc, tab2.nombre, nvl(tab2.email,'viaticoscolciencias@colciencias.gov.co') email, tab3.descripcion as rol
from com_administra_alarma tab0
join com_rol_comision_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_comision = $id_comision
join com_tercero tab2 ON tab2.id_tercero = tab1.id_tercero
join com_rol tab3 ON tab3.id_rol = tab0.id_rol                        
where tab0.id_alarma = $id_alarma and tab3.id_rol = $id_rol and tab1.id_tercero is not null
EOD;


                            $records = CN_TABLE::executeSQL($sql);

                            foreach ($records as $correos) {



                                $id_tercero = $correos['id_tercero'];
                                $documento = $correos['num_doc'];
                                $tipo_doc = $correos['id_tipo_doc'];
                                $nombre = $correos['nombre'];
                                $email = $correos['email'];
                                $rol = $correos['rol'];


                                $parametros = $documento . ";$tipo_doc;" . $email . ";" . $nombre . ";Envio notificacion";

                                $datos_usuario = array();

                                if ($parametros != "") {
                                    $datos_usuario = explode('/', $parametros);
                                }


                                $sql = "select to_char(tab0.fecha_salida,'dd-mm-yyyy') AS FECHA_SALIDA,to_char(tab0.fecha_regreso,'dd-mm-yyyy') AS FECHA_REGRESO, tab1.NO_COMISION,tab1.ID_ANHOS,tab2.NUM_DOC,tab2.NOMBRE,tab2.EMAIL,tab3.DESCRIPCION,
                tab1.OBJETO,tab4.valor AS VALOR,tab5.DESCRIPCION as AREA,tab6.DESCRIPCION as tipo_destino

                from COM_COMISIONADO tab0
                join com_comision tab1 ON tab1.id_comision = tab0.id_comision
                join com_tercero tab2 ON tab2.ID_TERCERO = tab0.id_tercero
                join PROYECTOS tab3 ON tab3.ID = tab1.ID_PROYECTO
                
                LEFT JOIN(
                select gasto.id_comision,gasto.id_tercero,sum(gasto.valor) as VALOR
                
                from com_comisionado_obj gasto 
                
                group by gasto.id_comision, gasto.id_tercero
                               
                
                )tab4 ON tab4.id_tercero = tab0.id_tercero and tab4.id_comision = tab0.id_comision
                
                left join area tab5 ON tab5.ID_AREA = tab1.id_area
                left join com_tipo_destino tab6 ON tab6.id_tipo_destino = tab1.id_tipo_destino
                where tab0.id_comision =" . $id_comision ;

                                $records = $conn->execute($sql)->fetchAll();

                                $no_comision = $records[0]['NO_COMISION'];
                                $tipo_destino = $records[0]['TIPO_DESTINO'];
                                $caja = $records[0]['DESCRIPCION'];
                                $objeto = $records[0]['OBJETO'];
                                $area = $records[0]['AREA'];
                                $fecha_salida = $records[0]['FECHA_SALIDA'];
                                $fecha_regreso = $records[0]['FECHA_REGRESO'];
                                $valor = $records[0]['VALOR'];
                                $valor = number_format($valor);
                                
                                $subject = $alarmas['DESCRIPCION'] ." - Comision No. ".$no_comision;
                                
                                
                                    $mensaje = "Por medio de la presente se informa que la entrega del formato del cumplido de comisión vence el ".$fecha_maxima.".";
                                    
                                

                                //CUERPO DEL MENSAJE

                                $body = "<html><body> </body></html>";
                                //Body
                                $body = <<<EOD
                <html><body> 
                <br/>
                Bogotá, $fecha_creacion
                <br/>
                <br/>
                Señor(a)<br/>
                $nombre<br/>
                $rol        
                <br/><br/>
                $mensaje     
                <br/>  <br/>       
                <b>Area :</b> $area<br/>
                <b>Comision No. :</b> $no_comision<br/>
                <b>Tipo de Destino. :</b> $tipo_destino<br/>
                <b>Caja Menor:</b> $caja<br/>
                <b>Objeto:</b> $objeto<br/>
                <b>Fecha Salida:</b> $fecha_salida<br/>
                <b>Fecha Regreso:</b> $fecha_regreso<br/>
                <b>Valor:</b> $valor<br/>
                <br/><br/>
                </body></html>
EOD;




                                $currentUri = "";


                                $this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                            }
                        }
                    }

                    break;
                    
                    
            endswitch;
        }
    }

    public static function envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body) {

        $ipServidorCorreo = "chiminigagua.colciencias.local";


        /**
         * Clase de log
         */
        /**
         * ipServidorCorreo
         */
        //$ipServidorCorreo = $report_params["ipServidorCorreo"];



        /**
         * Variables
         */
        $i = 0;




        /**
         * PHPMailer
         */
        // Instanciar PHPMailer una primera Vez
        $mail = new PHPMailer(); // defaults to using php "mail()"


        /*
         * Sofhouse
         */
         $mail->IsSMTP(); // telling the class to use SMTP
          $mail->SMTPSecure = "ssl";
          $mail->SetFrom($report_params["email_envio"], 'Sofhouse');
          $mail->AddReplyTo($report_params["email_envio"], 'Sofhouse');
          $mail->SMTPAuth = true;
          $ipServidorCorreo = "192.168.2.1";
          $mail->Host = $ipServidorCorreo;      // SMTP server
          $mail->Port = 465;                    // set the SMTP port for the GMAIL server
          $mail->Username = "alexia.velasquez";              // SMTP account username
          $mail->Password = "51s4em@s";           // SMTP account password 
        /*
         * INCI
         */
//        $mail->IsSMTP(); // telling the class to use SMTP
//        $mail->SMTPSecure = "ssl";
//        $mail->Host = $ipServidorCorreo;      // SMTP server
        //$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
        // 1 = errors and messages
        // 2 = messages only
//        $mail->SMTPAuth = true;                  // enable SMTP authentication
//        $mail->Port = 465;                    // set the SMTP port for the GMAIL server
//        $mail->Username = "inci";              // SMTP account username
//        $mail->Password = "Sistemas";           // SMTP account password
//        $mail->SetFrom($report_params["email_envio"], utf8_decode('Contratación Sofhouse'));
//        //$mail->AddReplyTo($report_params["email_envio"], utf8_decode('Nómina INCI'));
//        $mail->AddAddress($report_params["email_envio"], utf8_decode('Contratación Sofhouse'));


        /*
         * ANM
         */
//            $mail->IsSMTP(); // telling the class to use SMTP
//            $mail->SMTPSecure = "tls";
//            $mail->Host = $ipServidorCorreo;      // SMTP server
//            //$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
//            // 1 = errors and messages
//            // 2 = messages only
//            $mail->SMTPAuth = true;                  // enable SMTP authentication
//            $mail->Port = 25;                    // set the SMTP port for the GMAIL server
//            $mail->Username = "nomina";              // SMTP account username
//            $mail->Password = "Nominaanm";           // SMTP account password
//            $mail->SetFrom($report_params["email_envio"], 'Nómina ANM');
//            $mail->AddReplyTo($report_params["email_envio"], 'Nómina ANM');

        /*
         * SGC
         */
        /* $mail->IsSMTP(); // telling the class to use SMTP
          $mail->SMTPSecure = "tls";
          $mail->Host = "172.25.1.3";      // SMTP server
          $mail->SMTPDebug  = false;                     // enables SMTP debug information (for testing)
          // 1 = errors and messages
          // 2 = messages only
          $mail->SMTPAuth = false;                  // enable SMTP authentication
          $mail->Port = 587;                    // set the SMTP port for the GMAIL server
          $mail->Username = "websafi";              // SMTP account username
          $mail->Password = "wsaf0SGC$";           // SMTP account password
          $mail->SetFrom($report_params["email_envio"], utf8_decode('Contratación Websafi'));
         */
        //CORREGIR
        //$mail->AddReplyTo("alexia.velasquez@sofhouse.net", 'Contratación ANM');

        /*
         * COLCIENCIAS
         */
        /*$mail->IsSMTP(); // telling the class to use SMTP
        $mail->SMTPSecure = "";
        $mail->Host = $ipServidorCorreo;      // SMTP server
//            $mail->Host = "chiminigagua.colciencias.local";      // SMTP server
        //$mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
        // 1 = errors and messages
        // 2 = messages only
        $mail->SMTPAuth = false;                  // enable SMTP authentication
        $mail->Port = 25;                    // set the SMTP port for the GMAIL server
        $mail->Username = "safiweb";              // SMTP account username
        $mail->Password = "OSI%safi28";           // SMTP account password
        $mail->SetFrom($report_params["email_envio"], utf8_decode('Comisiones COL'));

*/

        $mail->Subject = $subject;

        /**
         * Recorre usuarios para envio de correo
         */
        $i_porcentaje = 1;
        $cantidad_array = count($datos_usuario);

        // Antes de inicar el proceso largo
        $brecha = 1;
        if ($cantidad_array > 100)
            $brecha = $cantidad_array - (0.99 * $cantidad_array);

        foreach ($datos_usuario as $value) {


//            // Guardar un valor en el proceso largo
//            if ($i_porcentaje % $brecha == 0) {
//                MemcacheHandler::getInstance()->set($progress_key, round(($i_porcentaje / $cantidad_array) * 100, 0));
//            }



            $datos = explode(';', $value);

            //Datos del funcionario para el envio del correo
            $report_params["num_doc"] = $datos[0];
            $report_params["id_tipo_doc"] = $datos[1];
            $report_params["email"] = $datos[2];
            //$report_params["email"] = "alexia.velasquez@sofhouse.net";
            $nombre_completo = $report_params["nombre_completo"] = $datos[3];

            //mensaje_extra
            if (isset($report_params["mensaje_extra"])) {
                $report_params["mensaje_extra"] = "<br/><br/>" . $datos[4];
            }

            //arrayadjuntos
            if (isset($report_params["arrayadjuntos"])) {
                $array_adjuntos = array();
                $cant_adjuntos = $report_params["arrayadjuntos"];
                for ($i = 1; $i <= $cant_adjuntos; $i++) {
                    $datos_adj = explode('+', $datos[3 + $i]);
                    $key_datos = $datos_adj[1];
                    $array_adjuntos[$key_datos] = str_replace("+", "/", $datos[3 + $i]);
                }
            }



            /*
             * Operacion con el archivo
             */
            if (true) {

                /*
                 * $mail->AddReplyTo($report_params["email"], $report_params["username"]);
                 */

                // Agregar El correo
                // Agregar el Attachment
                // Cambiar el body
                $address = $report_params["email"];
                //$mail->AddAddress($address, $report_params["num_doc"]);
                //$mail->AddAddress("viaticoscolciencias@colciencias.gov.co", "Seguimiento Comisiones");
                $mail->AddAddress("alexia.velasquez@sofhouse.net", "Seguimiento");
                /**
                 * Reemplazo de caracteres
                 */
                $subject = str_replace("ó", "&oacute;", $subject);
                $report_params["mensaje_extra"] = "";
                $report_params["mensaje_extra"] = str_replace("ó", "&oacute;", $report_params["mensaje_extra"]);
                $report_params["mensaje_extra"] = str_replace(",", "<br/>", $report_params["mensaje_extra"]);
                $report_params["mensaje_extra"] = str_replace("null", " ", $report_params["mensaje_extra"]);


                //$mail->AltBody = "This is the body in plain text for non-HTML mail clients"; // optional, comment out and test

                $body = str_replace("á", "&aacute;", $body);
                $body = str_replace("é", "&eacute;", $body);
                $body = str_replace("í", "&iacute;", $body);
                $body = str_replace("ó", "&oacute;", $body);
                $body = str_replace("ú", "&uacute;", $body);
                $body = str_replace("ñ", "&ntilde;", $body);
                $mail->MsgHTML($body);
                /**
                 * Si el envio es con adjunto de jasper
                 */
                if ($adjunto) {
//                    $mail->AddAttachment("$ruta/nivel/2- Competencias comunes.docx", "ManualNomina.pdf");      // attachment
//                    $mail->AddAttachment("images/phpmailer_mini.gif"); // attachment
                    foreach ($array_adjuntos as $key => $value) {
                        $mail->AddAttachment("$ruta/$value", $key);      // attachment                        
                    }
                }

                /*
                 *  Enviar el correo
                 */
                if (!$mail->Send()) {
                    echo "Mailer Error: " . $mail->ErrorInfo;
                } else {
                    echo "Message sent! ";
                }

                /*
                 * Limpiar datos del correo
                 */
                $mail->ClearAllRecipients();
                $mail->ClearAttachments();
            } else {
                header('Content-type: application/pdf');
                header('Content-Disposition: attachment; filename="ManualNomina.pdf"');
                readfile("$ruta/Comprobante$i.pdf");
            }

            //Contadores
            $i = $i + 1;
            $i_porcentaje = $i_porcentaje + 1;
//                echo 'Correo enviado por el usuario ' . $report_params["username"] . ' al funcionario ' .
//                $report_params["nombre_completo"] . ' al correo ' . $report_params["email"];
//                echo '<br/>';
        }

        //Actualizar el Memcache
        //MemcacheHandler::getInstance()->set($progress_key, 99);
    }

    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="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;amp;amp;nbsp;', ' ', $string);
        $string = str_replace('&amp;amp;amp;amp;nbsp;', ' ', $string);
        $string = str_replace('&amp;amp;amp;nbsp;', ' ', $string);
        $string = str_replace('&amp;amp;nbsp;', '', $string);
        $string = str_replace('&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;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">', '<span>', $string);
        $string = str_replace('<span lang="ES-COL">', '<span>', $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);
        $string = str_replace('<br clear="all">', '', $string);
        return trim($string);
    }

}
