<?php

require_once 'HTMLPurifier.auto.php';
require 'HTMLPurifier.autoload.php';

class alarmasEnvioTask 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'),
            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 = 'alarmas';
        $this->name = 'envio';
        $this->briefDescription = '';
        $this->detailedDescription = <<<EOF
The [alarmas:envio|INFO] task does things.
Call it with:

  [php symfony alarmas:envio|INFO]
EOF;
    }

    /*public function execute($arguments = array(), $options = array()) {

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

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


        $logPath = sfConfig::get('sf_log_dir') . '/alarmas.log';
        $custom_logger = new sfFileLogger(new sfEventDispatcher(), array('file' => $logPath));
        $custom_logger->info("The [alarmas:envio|INFO] task does things.\n");

        //Mensaje
        if (!isset($request["mensaje"])) {
            $request["mensaje"] = "Alarma para el registro de la version 1";
        }

        //Email Envio
        if (!isset($request["email_envio"])) {
            $request["email_envio"] = "modulocontratacion@sgc.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 = '';
        } else {
            $progress_key = $request['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'];

        //HAGO LA CONSULTA PARA TRAER LAS ALARMAS QUE SON DE TIPO 2

        $sql = "select tab0.* from co_alarma tab0 where tab0.id_tipo_alarma = 2 order by tab0.numero";
//        $sql = "select tab0.* from co_alarma tab0 where tab0.id_tipo_alarma = 2 and tab0.id_alarma = 17 order by tab0.numero";
        $results = $conn->execute($sql)->fetchAll();


        foreach ($results as $alarmas) {

            $numero_alarma = $alarmas['NUMERO'];
            $id_alarma = $alarmas['ID_ALARMA'];
            $subject = $alarmas['DESCRIPCION'];
            $adjunto = false;

            switch ($numero_alarma):

                case 1:
                    $custom_logger->info("[alarmas:envio|INFO] Alerta Pendiente Primera Version.\n");
                    //Alerta Pendiente Primera Version

                    $sql = "select tab0.* from co_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_ESTUDIOS_PREVIOS, FECHA_ALARMA, FECHA_COMPA
                        from(
                        SELECT tab0.ID_ESTUDIOS_PREVIOS,tab0.fecha_creacion + interval '$dias' day AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA
                        from co_estudios_previos tab0
                        where tab0.estado = 1 and tab0.version = 0 and tab0.activo = 1 and tab0.id_anhos = to_char(sysdate,'yyyy')
                        )tab0
                        where FECHA_ALARMA <= FECHA_COMPA";

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

                        $custom_logger->info("[alarmas:envio|INFO] Id Rol::" . $id_rol . " - Dias por Vencer::" . $dias . "\n");
                        $custom_logger->info("[alarmas:envio|INFO] SQL Alarma::" . $sql . "\n");
                        foreach ($results as $estudios) {

                            $id_estudios_previos = $estudios['ID_ESTUDIOS_PREVIOS'];

                            $sql = "select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos";


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

                            $responsable = $records[0]['NOMBRE_RESPONSABLE'];
                            $id_responsable = $records[0]['RESPONSABLE'];
                            $area = $records[0]['AREA'];
                            $valor = $records[0]['VALOR'];
                            $valor = number_format($valor);
                            $modalidad = $records[0]['MODALIDAD'];
                            $version = $records[0]['VERSION'];
                            $objeto = $this->htmlClear($purifier->purify($records[0]['OBJETO']));

                            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'modulocontratacion@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_alarma = $id_alarma and tab4.id_rol = $id_rol and tab1.id_mae_ter is not null
EOD;

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

                            foreach ($records as $correos) {

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

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

                                $datos_usuario = array();

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

//CUERPO DEL MENSAJE
                                //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/>
                Por medio del presente correo se le recuerda que el dia de hoy se vence el plazo para generar la version 1 del proceso detallado a continuacion        
                <br/>        
                <b>Area:</b> $area<br/><br/>
                <b>Modalidad de Seleccion:</b> $modalidad<br/><br/>
                <b>Valor:</b> $valor<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Objeto:</b> $objeto<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:

                    $custom_logger->info("[alarmas:envio|INFO] Alerta Pendiente Reparto.\n");
                    //Alerta Pendiente Reparto

                    $sql = "select tab0.* from co_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_ESTUDIOS_PREVIOS, FECHA_ALARMA, FECHA_COMPA
                        from(
                        SELECT tab0.ID_ESTUDIOS_PREVIOS,tab0.fecha_creacion + interval '$dias' day AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA
                        from co_estudios_previos tab0
                        where tab0.estado = 1 and tab0.version = 1 and tab0.activo= 1 and tab0.id_abogado is null and tab0.id_anhos = to_char(sysdate,'yyyy')
                        )tab0
                        where FECHA_ALARMA <= FECHA_COMPA";

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

                        $custom_logger->info("[alarmas:envio|INFO] Id Rol::" . $id_rol . " - Dias por Vencer::" . $dias . "\n");
                        $custom_logger->info("[alarmas:envio|INFO] SQL Alarma::" . $sql . "\n");
                        foreach ($results as $estudios) {

                            $id_estudios_previos = $estudios['ID_ESTUDIOS_PREVIOS'];

                            $sql = "select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos";


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

                            $responsable = $records[0]['NOMBRE_RESPONSABLE'];
                            $id_responsable = $records[0]['RESPONSABLE'];
                            $area = $records[0]['AREA'];
                            $valor = $records[0]['VALOR'];
                            $valor = number_format($valor);
                            $modalidad = $records[0]['MODALIDAD'];
                            $version = $records[0]['VERSION'];
                            $objeto = $this->htmlClear($purifier->purify($records[0]['OBJETO']));

                            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'modulocontratacion@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_alarma = $id_alarma and tab4.id_rol = $id_rol and tab1.id_mae_ter is not null
EOD;

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

                            foreach ($records as $correos) {

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

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

                                $datos_usuario = array();

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

//CUERPO DEL MENSAJE
                                //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/>
                Por medio del presente correo se le recuerda que el dia de hoy se vence el plazo para asignar el abogado a la version 1 del proceso detallado a continuacion        
                <br/>        
                <b>Area:</b> $area<br/><br/>
                <b>Modalidad de Seleccion:</b> $modalidad<br/><br/>
                <b>Valor:</b> $valor<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Objeto:</b> $objeto<br/><br/>
                <br/><br/>
                </body></html>
EOD;


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



                    break;

                case 3:

                    $custom_logger->info("[alarmas:envio|INFO] Alerta Pendiente Segunda Version.\n");
                    //Alerta Pendiente Segunda Version

                    $sql = "select tab0.* from co_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'];

                        // Incidente #3350 <-> En caso de que se encuentre APROBADO el Estudio Previo, NO se deben generar estas Alertas. - 20160511
                         
                        $sql = "SELECT tab0.ID_ESTUDIOS_PREVIOS, FECHA_ALARMA, FECHA_COMPA
                        from(
                        SELECT tab0.ID_ESTUDIOS_PREVIOS,tab1.fecha_modificacion + interval '$dias' day AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA
                        from co_estudios_previos tab0
                        join co_actualiza_abogado tab1 ON tab1.id_estudios_previos = tab0.id_estudios_previos and tab0.id_anhos = to_char(sysdate,'yyyy')
                        where tab0.estado = 1 and tab0.version = 1 and tab0.activo=1
                        and tab0.id_estudios_previos not in ( select distinct id_estudios_previos from co_aprueba_ep )
                        )tab0
                        where FECHA_ALARMA <= FECHA_COMPA";

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

                        $custom_logger->info("[alarmas:envio|INFO] Id Rol::" . $id_rol . " - Dias por Vencer::" . $dias . "\n");
                        $custom_logger->info("[alarmas:envio|INFO] SQL Alarma::" . $sql . "\n");
                        foreach ($results as $estudios) {

                            $id_estudios_previos = $estudios['ID_ESTUDIOS_PREVIOS'];

                            $sql = "select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos";


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

                            $responsable = $records[0]['NOMBRE_RESPONSABLE'];
                            $id_responsable = $records[0]['RESPONSABLE'];
                            $area = $records[0]['AREA'];
                            $valor = $records[0]['VALOR'];
                            $valor = number_format($valor);
                            $modalidad = $records[0]['MODALIDAD'];
                            $version = $records[0]['VERSION'];
                            $abogado = $records[0]['ABOGADO'];
                            
                            $custom_logger->info("[alarmas:envio|INFO] Id_estudios_previos::".$id_estudios_previos.".\n");
                            $custom_logger->info("[alarmas:envio|INFO] Abogado::".$abogado.".\n");
                            $custom_logger->info("[alarmas:envio|INFO] Valor::".$valor.".\n");
                            
                            $objeto = $this->htmlClear($purifier->purify($records[0]['OBJETO']));
                            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'modulocontratacion@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_alarma = $id_alarma and tab4.id_rol = $id_rol and tab1.id_mae_ter is not null
EOD;

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

                            foreach ($records as $correos) {

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

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

                                $datos_usuario = array();

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

//CUERPO DEL MENSAJE
                                //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/>
                Por medio del presente correo se le recuerda que el dia de hoy se vence el plazo para generar la version No. 2 del proceso detallado a continuacion        
                <br/>        
                <b>Area:</b> $area<br/><br/>
                <b>Modalidad de Seleccion:</b> $modalidad<br/><br/>
                <b>Valor:</b> $valor<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Abogado:</b> $abogado<br/><br/>
                <b>Objeto:</b> $objeto<br/><br/>
                <br/><br/>
                </body></html>
EOD;


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

                    break;

                case 4:

                    $custom_logger->info("[alarmas:envio|INFO] Alerta Pendiente Tercera Version.\n");
                    //Alerta Pendiente Tercera Version

                    $sql = "select tab0.* from co_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'];

           
                        // Incidente #3350 <-> En caso de que se encuentre APROBADO el Estudio Previo, NO se deben generar estas Alertas. - 20160511
                         
                        $sql = "SELECT tab0.ID_ESTUDIOS_PREVIOS, FECHA_ALARMA, FECHA_COMPA
                        from(
                        SELECT tab0.ID_ESTUDIOS_PREVIOS,tab1.fecha_creacion + interval '$dias' day AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA
                        from co_estudios_previos tab0
                        left join co_versiones_ep tab1 ON tab1.id_version_hijo = tab0.id_estudios_previos and tab0.id_anhos = to_char(sysdate,'yyyy')
                        where tab0.estado = 1 and tab0.version = 2 and tab0.activo = 1
                        and tab0.id_estudios_previos not in ( select distinct id_estudios_previos from co_aprueba_ep )
                        )tab0
                        where FECHA_ALARMA <= FECHA_COMPA";

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

                        $custom_logger->info("[alarmas:envio|INFO] Id Rol::" . $id_rol . " - Dias por Vencer::" . $dias . "\n");
                        $custom_logger->info("[alarmas:envio|INFO] SQL Alarma::" . $sql . "\n");
                        foreach ($results as $estudios) {

                            $id_estudios_previos = $estudios['ID_ESTUDIOS_PREVIOS'];

                            $sql = "select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos";


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

                            $responsable = $records[0]['NOMBRE_RESPONSABLE'];
                            $id_responsable = $records[0]['RESPONSABLE'];
                            $area = $records[0]['AREA'];
                            $valor = $records[0]['VALOR'];
                            $valor = number_format($valor);
                            $modalidad = $records[0]['MODALIDAD'];
                            $version = $records[0]['VERSION'];
                            $abogado = $records[0]['ABOGADO'];
                            $objeto = $this->htmlClear($purifier->purify($records[0]['OBJETO']));
                            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'modulocontratacion@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_alarma = $id_alarma and tab4.id_rol = $id_rol and tab1.id_mae_ter is not null
EOD;

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

                            foreach ($records as $correos) {

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

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

                                $datos_usuario = array();

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

//CUERPO DEL MENSAJE
                                //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/>
                Por medio del presente correo se le recuerda que el dia de hoy se vence el plazo para generar la version 3 del proceso detallado a continuacion        
                <br/>        
                <b>Area:</b> $area<br/><br/>
                <b>Modalidad de Seleccion:</b> $modalidad<br/><br/>
                <b>Valor:</b> $valor<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Abogado:</b> $abogado<br/><br/>
                <b>Objeto:</b> $objeto<br/><br/>
                <br/><br/>
                </body></html>
EOD;


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

                    break;

                case 5:

                    $custom_logger->info("[alarmas:envio|INFO] Alerta Pendiente Aprobación Abogado.\n");
                    //Alerta Pendiente Aprobación Abogado

                    $sql = "select tab0.* from co_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_ESTUDIOS_PREVIOS, FECHA_ALARMA, FECHA_COMPA
                        from(
                        SELECT tab0.ID_ESTUDIOS_PREVIOS,tab3.fecha_creacion + interval '$dias' day AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA
                        from co_estudios_previos tab0
                        left join co_aprueba_ep tab1 ON tab1.id_estudios_previos = tab0.id_estudios_previos
                        left join co_versiones_ep tab3 ON tab3.id_version_hijo = tab0.id_estudios_previos
                        where tab0.estado = 1 and tab1.id_aprueba_ep is null and tab0.activo = 1 and tab0.version>=3 and tab3.id_maeter=tab0.responsable and tab0.id_anhos = to_char(sysdate,'yyyy')
                        )tab0
                        where FECHA_ALARMA <= FECHA_COMPA";

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

                        $custom_logger->info("[alarmas:envio|INFO] Id Rol::" . $id_rol . " - Dias por Vencer::" . $dias . "\n");
                        $custom_logger->info("[alarmas:envio|INFO] SQL Alarma::" . $sql . "\n");
                        foreach ($results as $estudios) {

                            $id_estudios_previos = $estudios['ID_ESTUDIOS_PREVIOS'];

                            $sql = "select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos";


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

                            $responsable = $records[0]['NOMBRE_RESPONSABLE'];
                            $id_responsable = $records[0]['RESPONSABLE'];
                            $area = $records[0]['AREA'];
                            $valor = $records[0]['VALOR'];
                            $valor = number_format($valor);
                            $modalidad = $records[0]['MODALIDAD'];
                            $version = $records[0]['VERSION'];
                            $abogado = $records[0]['ABOGADO'];
                            $objeto = $this->htmlClear($purifier->purify($records[0]['OBJETO']));
                            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'modulocontratacion@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_alarma = $id_alarma and tab4.id_rol = $id_rol and tab1.id_mae_ter is not null
EOD;

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

                            foreach ($records as $correos) {

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

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

                                $datos_usuario = array();

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

//CUERPO DEL MENSAJE
                                //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/>
                Por medio del presente correo se le recuerda que el dia de hoy se vence el plazo para registrar la aprobación del proceso detallado a continuacion        
                <br/>        
                <b>Area:</b> $area<br/><br/>
                <b>Modalidad de Seleccion:</b> $modalidad<br/><br/>
                <b>Valor:</b> $valor<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Abogado:</b> $abogado<br/><br/>
                <b>Objeto:</b> $objeto<br/><br/>
                <br/><br/>
                </body></html>
EOD;


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


                    break;

                case 6:

                    $custom_logger->info("[alarmas:envio|INFO] Alerta Pendiente Aprobación Comite.\n");
                    //Alerta Pendiente Aprobación Comite

                    $sql = "select tab0.* from co_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_ESTUDIOS_PREVIOS, FECHA_ALARMA, FECHA_COMPA
                        from(
                        SELECT tab0.ID_ESTUDIOS_PREVIOS,tab0.fecha_aprueba + interval '$dias' day AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA
                        from co_aprueba_ep tab0
                        left join co_aprueba_comite tab1 ON tab1.id_estudios_previos = tab0.id_estudios_previos
                        left join co_estudios_previos tab2 ON tab2.id_estudios_previos = tab0.id_estudios_previos
                        where tab1.id_aprueba_comite is null and tab2.estado = 1 and tab2.activo = 1 and tab2.id_modalidad_sel!=21 and tab2.id_anhos = to_char(sysdate,'yyyy')
                        )tab0
                        where FECHA_ALARMA <= FECHA_COMPA";

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

                        $custom_logger->info("[alarmas:envio|INFO] Id Rol::" . $id_rol . " - Dias por Vencer::" . $dias . "\n");
                        $custom_logger->info("[alarmas:envio|INFO] SQL Alarma::" . $sql . "\n");
                        foreach ($results as $estudios) {

                            $id_estudios_previos = $estudios['ID_ESTUDIOS_PREVIOS'];

                            $sql = "select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos";


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

                            $responsable = $records[0]['NOMBRE_RESPONSABLE'];
                            $id_responsable = $records[0]['RESPONSABLE'];
                            $area = $records[0]['AREA'];
                            $valor = $records[0]['VALOR'];
                            $valor = number_format($valor);
                            $modalidad = $records[0]['MODALIDAD'];
                            $version = $records[0]['VERSION'];
                            $abogado = $records[0]['ABOGADO'];
                            $objeto = $this->htmlClear($purifier->purify($records[0]['OBJETO']));
                            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'modulocontratacion@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_alarma = $id_alarma and tab4.id_rol = $id_rol and tab1.id_mae_ter is not null
EOD;

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

                            foreach ($records as $correos) {

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

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

                                $datos_usuario = array();

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

//CUERPO DEL MENSAJE
                                //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/>
                Por medio del presente correo se le recuerda que el dia de hoy se vence el plazo para registrar la aprobacion del comite del proceso detallado a continuacion        
                <br/>        
                <b>Area:</b> $area<br/><br/>
                <b>Modalidad de Seleccion:</b> $modalidad<br/><br/>
                <b>Valor:</b> $valor<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Abogado:</b> $abogado<br/><br/>
                <b>Objeto:</b> $objeto<br/><br/>
                <br/><br/>
                </body></html>
EOD;


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

                    break;

                case 7:

                    $custom_logger->info("[alarmas:envio|INFO] Alerta Pendiente Cierre Proceso.\n");
                    //Alerta Pendiente Cierre Proceso

                    $sql = "select tab0.* from co_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_ESTUDIOS_PREVIOS, FECHA_ALARMA, FECHA_COMPA
                        from(
                        SELECT tab0.ID_ESTUDIOS_PREVIOS,tab0.fecha_aprueba + interval '$dias' day AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA
                        from co_aprueba_ep tab0
                        left join co_estudios_previos tab1 ON tab1.id_estudios_previos = tab0.id_estudios_previos
                        left join co_seleccion_ep tab2 ON tab2.id_estudios_previos = tab1.id_estudios_previos
                        where tab1.estado = 1 and tab1.activo = 1 and tab1.fecha_cierre is null  and tab1.id_anhos = to_char(sysdate,'yyyy') and tab2.id_seleccion_ep is null
			)tab0
                        where FECHA_ALARMA <= FECHA_COMPA";

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

                        $custom_logger->info("[alarmas:envio|INFO] Id Rol::" . $id_rol . " - Dias por Vencer::" . $dias . "\n");
                        $custom_logger->info("[alarmas:envio|INFO] SQL Alarma::" . $sql . "\n");
                        foreach ($results as $estudios) {

                            $id_estudios_previos = $estudios['ID_ESTUDIOS_PREVIOS'];

                            $sql = "select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos";


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

                            $responsable = $records[0]['NOMBRE_RESPONSABLE'];
                            $id_responsable = $records[0]['RESPONSABLE'];
                            $area = $records[0]['AREA'];
                            $valor = $records[0]['VALOR'];
                            $valor = number_format($valor);
                            $modalidad = $records[0]['MODALIDAD'];
                            $version = $records[0]['VERSION'];
                            $abogado = $records[0]['ABOGADO'];
                            $objeto = $this->htmlClear($purifier->purify($records[0]['OBJETO']));
                            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'modulocontratacion@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_alarma = $id_alarma and tab4.id_rol = $id_rol and tab1.id_mae_ter is not null
EOD;

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

                            foreach ($records as $correos) {

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

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

                                $datos_usuario = array();

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

//CUERPO DEL MENSAJE
                                //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/>
                Por medio del presente correo se le recuerda que el dia de hoy se vence el plazo para registrar el cierre del proceso detallado a continuacion        
                <br/>        
                <b>Area:</b> $area<br/><br/>
                <b>Modalidad de Seleccion:</b> $modalidad<br/><br/>
                <b>Valor:</b> $valor<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Abogado:</b> $abogado<br/><br/>
                <b>Objeto:</b> $objeto<br/><br/>
                <br/><br/>
                </body></html>
EOD;


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

                case 8:

                    $custom_logger->info("[alarmas:envio|INFO] Alerta Pendiente Inicio Proceso.\n");
                    //Alerta Pendiente Inicio Proceso

                    $sql = "select tab0.* from co_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_ESTUDIOS_PREVIOS, FECHA_ALARMA, FECHA_COMPA
                        from(
                        SELECT tab0.ID_ESTUDIOS_PREVIOS,tab0.fecha_cierre + interval '$dias' day AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA
                        from co_estudios_previos tab0
                        LEFT JOIN co_seleccion_ep tab1 ON tab1.id_estudios_previos = tab0.id_estudios_previos
                        where tab0.estado = 1 and tab0.activo = 0 and tab1.id_seleccion_ep is null and tab0.id_modalidad_sel!=46 and tab0.id_anhos = to_char(sysdate,'yyyy')
                        )tab0
                        where FECHA_ALARMA <= FECHA_COMPA";

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

                        $custom_logger->info("[alarmas:envio|INFO] Id Rol::" . $id_rol . " - Dias por Vencer::" . $dias . "\n");
                        $custom_logger->info("[alarmas:envio|INFO] SQL Alarma::" . $sql . "\n");
                        foreach ($results as $estudios) {

                            $id_estudios_previos = $estudios['ID_ESTUDIOS_PREVIOS'];

                            $sql = "select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos";


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

                            $responsable = $records[0]['NOMBRE_RESPONSABLE'];
                            $id_responsable = $records[0]['RESPONSABLE'];
                            $area = $records[0]['AREA'];
                            $valor = $records[0]['VALOR'];
                            $valor = number_format($valor);
                            $modalidad = $records[0]['MODALIDAD'];
                            $version = $records[0]['VERSION'];
                            $abogado = $records[0]['ABOGADO'];
                            $no_proceso = $records[0]['PROCESO'];
                            $objeto = $this->htmlClear($purifier->purify($records[0]['OBJETO']));
                            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'modulocontratacion@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_alarma = $id_alarma and tab4.id_rol = $id_rol and tab1.id_mae_ter is not null
EOD;

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

                            foreach ($records as $correos) {

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

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

                                $datos_usuario = array();

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

//CUERPO DEL MENSAJE
                                //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/>
                Por medio del presente correo se le recuerda que el dia de hoy se vence el plazo para registrar el inicio del proceso de seleccion detallado a continuacion        
                <br/>        
                <b>Proceso No.:</b> $no_proceso<br/><br/>
                <b>Area:</b> $area<br/><br/>
                <b>Modalidad de Seleccion:</b> $modalidad<br/><br/>
                <b>Valor:</b> $valor<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Abogado:</b> $abogado<br/><br/>
                <b>Objeto:</b> $objeto<br/><br/>
                <br/><br/>
                </body></html>
EOD;


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


                    break;

                case 9:

                    $custom_logger->info("[alarmas:envio|INFO] Alerta Vencimiento Seguimiento Etapas.\n");
                    //Alerta Vencimiento Seguimiento Etapas

                    $sql = "select tab0.* from co_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_ESTUDIOS_PREVIOS,tab0.descripcion as ETAPA, FECHA_ALARMA, FECHA_COMPA
                        from(
                                 SELECT tab4.descripcion, tab1.id_estudios_previos,tab0.fecha_limite - interval '$dias' day AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA
                        from co_alerta_etapa tab0
                        LEFT JOIN co_seleccion_ep tab1 ON tab1.id_seleccion_ep = tab0.id_seleccion_ep
                        left join co_seleccion_etapa tab2 ON tab2.id_seleccion_ep = tab0.id_seleccion_ep and tab0.id_etapa_modalidad = tab2.id_etapa_modalidad
                        left join co_etapa_modalidad tab3 ON tab3.id_etapa_modalidad = tab0.id_etapa_modalidad
                        left join co_etapa tab4 ON tab4.id_etapa = tab3.id_etapa
			join co_estudios_previos tab5 ON tab5.id_estudios_previos = tab1.id_estudios_previos  and tab5.id_anhos = to_char(sysdate,'yyyy')
                        where tab2.id_seleccion_etapa is null)tab0
                        where FECHA_ALARMA <= FECHA_COMPA";

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

                        $custom_logger->info("[alarmas:envio|INFO] Id Rol::" . $id_rol . " - Dias por Vencer::" . $dias . "\n");
                        $custom_logger->info("[alarmas:envio|INFO] SQL Alarma::" . $sql . "\n");
                        foreach ($results as $estudios) {

                            $id_estudios_previos = $estudios['ID_ESTUDIOS_PREVIOS'];
                            $etapa = $estudios['ETAPA'];

                            $sql = "select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos";


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

                            $responsable = $records[0]['NOMBRE_RESPONSABLE'];
                            $id_responsable = $records[0]['RESPONSABLE'];
                            $area = $records[0]['AREA'];
                            $valor = $records[0]['VALOR'];
                            $valor = number_format($valor);
                            $modalidad = $records[0]['MODALIDAD'];
                            $version = $records[0]['VERSION'];
                            $abogado = $records[0]['ABOGADO'];
                            $no_proceso = $records[0]['PROCESO'];
                            $objeto = $this->htmlClear($purifier->purify($records[0]['OBJETO']));
                            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'modulocontratacion@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_alarma = $id_alarma and tab4.id_rol = $id_rol and tab1.id_mae_ter is not null
EOD;

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

                            foreach ($records as $correos) {

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

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

                                $datos_usuario = array();

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

//CUERPO DEL MENSAJE
                                //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/>
                Por medio del presente correo se le recuerda que en $dias dia(s) se vence el plazo para la etapa de <b>$etapa</b>       
                <br/>        
                <b>Proceso No.:</b> $no_proceso<br/><br/>
                <b>Area:</b> $area<br/><br/>
                <b>Modalidad de Seleccion:</b> $modalidad<br/><br/>
                <b>Valor:</b> $valor<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Abogado:</b> $abogado<br/><br/>
                <b>Objeto:</b> $objeto<br/><br/>
                <br/><br/>
                </body></html>
EOD;


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

                    break;

                case 10:
                    $custom_logger->info("[alarmas:envio|INFO] Alerta Pendiente Legalizacion Contratos.\n");

                    //Alerta Pendiente Legalizacion Contratos	
                    //Actualización 11 de Mayo de 2015
                    //Se modifica la consulta para que no genere alerta para los contratos que se encuentran 
                    //anulados o cuyo valor es 0 y por tanto no require poliza

                    $sql = "select tab0.* from co_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_contrato, FECHA_ALARMA, FECHA_COMPA
                        from(
                        SELECT tab0.id_contrato,tab0.fecha_contrato + interval '$dias' day AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA
                        from co_contrato tab0
                        LEFT JOIN co_legaliza_contrato tab1 ON tab1.id_contrato = tab0.id_contrato
                        where tab1.id_legaliza_contrato is null and tab0.estado = 1 and tab0.valor != 0
                        )tab0
                        where FECHA_ALARMA <= FECHA_COMPA";



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

                        $custom_logger->info("[alarmas:envio|INFO] Id Rol::" . $id_rol . " - Dias por Vencer::" . $dias . "\n");
                        $custom_logger->info("[alarmas:envio|INFO] SQL Alarma::" . $sql . "\n");
                        foreach ($results as $estudios) {

                            $id_contrato = $estudios['ID_CONTRATO'];

                            $sql = <<<EOD
select tab0.no_contrato,tab0.id_anhos as vigencia, tab0.valor, tab0.objeto, tab0.tipo, tab0.completo_contra, tab0.completo_supervisor, tab1.id_estudios_previos

from co_contrato_v tab0
join co_seleccion_ep tab1 ON tab1.id_seleccion_ep = tab0.id_seleccion_ep
where tab0.id_contrato = $id_contrato
EOD;

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

                            $no_contrato = $records[0]['no_contrato'];
                            $vigencia = $records[0]['vigencia'];
                            $tipo = $records[0]['tipo'];
                            $contratista = $records[0]['completo_contra'];
                            $supervisor = $records[0]['completo_supervisor'];
                            $id_estudios_previos = $records[0]['id_estudios_previos'];

                            $sql = "select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos";


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

                            $responsable = $records[0]['NOMBRE_RESPONSABLE'];
                            $id_responsable = $records[0]['RESPONSABLE'];
                            $area = $records[0]['AREA'];
                            $valor = $records[0]['VALOR'];
                            $valor = number_format($valor);
                            $modalidad = $records[0]['MODALIDAD'];
                            $version = $records[0]['VERSION'];
                            $abogado = $records[0]['ABOGADO'];
                            $objeto = $this->htmlClear($purifier->purify($records[0]['OBJETO']));
                            $no_proceso = $records[0]['PROCESO'];

                            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'modulocontratacion@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_alarma = $id_alarma and tab4.id_rol = $id_rol and tab1.id_mae_ter is not null
EOD;

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

                            foreach ($records as $correos) {

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

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

                                $datos_usuario = array();

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

                                //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/>
                Por medio del presente correo se le recuerda que el dia de hoy se vence el plazo para registrar la legalizacion del contrato detallado a continuacion        
                <br/>        
                <b>DATOS DEL CONTRATO:</b><br/>
                <b>Contrato No.</b> $no_contrato del $vigencia<br/><br/>
                <b>Contratista.</b> $contratista<br/><br/>
                <b>Supervisor:</b> $supervisor<br/><br/>
                <b>Tipo de Contrato:</b> $tipo<br/><br/>
                <b>Valor del Contrato:</b> $valor<br/><br/>
                <b>Objeto:</b> $objeto<br/><br/>
                <br></br>
                <b>Proceso No.:</b> $no_proceso<br/><br/>
                <b>Area:</b> $area<br/><br/>
                <b>Modalidad de Seleccion:</b> $modalidad<br/><br/>
                <b>Valor:</b> $valor<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Abogado:</b> $abogado<br/><br/>
                <br/><br/>
                </body></html>
EOD;


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

                    break;

                case 12:

                    $custom_logger->info("[alarmas:envio|INFO] Alerta de Terminacion.\n");
                    //Alerta de Terminacion

                    $sql = "select tab0.* from co_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'];
                        $id_administra_alarma = $administra['ID_ADMINISTRA_ALARMA'];


                        $sql = "SELECT tab0.id_contrato, FECHA_ALARMA, FECHA_COMPA                            
                          from(                                                                                                                                    
                          SELECT tab0.id_contrato, tab0.fecha_terminacion - interval '$dias' day AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA  
                          from co_legaliza_contrato tab0   
                          )tab0                                                                                                                                    
                          where FECHA_ALARMA = FECHA_COMPA
                          ";



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

                        $custom_logger->info("[alarmas:envio|INFO] Id Rol::" . $id_rol . " - Dias por Vencer::" . $dias . "\n");
                        $custom_logger->info("[alarmas:envio|INFO] SQL Alarma::" . $sql . "\n");
                        foreach ($results as $estudios) {

                            $id_contrato = $estudios['ID_CONTRATO'];


                            $sql = <<<EOD
select tab0.no_contrato,tab0.id_anhos as vigencia, tab0.valor, tab0.objeto, tab0.tipo, tab0.completo_contra, tab0.completo_supervisor, tab1.id_estudios_previos

from co_contrato_v tab0
join co_seleccion_ep tab1 ON tab1.id_seleccion_ep = tab0.id_seleccion_ep
where tab0.id_contrato = $id_contrato
EOD;

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

                            $no_contrato = $records[0]['no_contrato'];
                            $vigencia = $records[0]['vigencia'];
                            $tipo = $records[0]['tipo'];
                            $contratista = $records[0]['completo_contra'];
                            $supervisor = $records[0]['completo_supervisor'];
                            $id_estudios_previos = $records[0]['id_estudios_previos'];

                            $sql = "select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos";


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

                            $responsable = $records[0]['NOMBRE_RESPONSABLE'];
                            $id_responsable = $records[0]['RESPONSABLE'];
                            $area = $records[0]['AREA'];
                            $valor = $records[0]['VALOR'];
                            $valor = number_format($valor);
                            $modalidad = $records[0]['MODALIDAD'];
                            $version = $records[0]['VERSION'];
                            $abogado = $records[0]['ABOGADO'];
                            $no_proceso = $records[0]['PROCESO'];
                            $objeto = $this->htmlClear($purifier->purify($records[0]['OBJETO']));


                            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'modulocontratacion@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_administra_alarma = $id_administra_alarma
EOD;

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

                            foreach ($records as $correos) {

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

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

                                $datos_usuario = array();

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

//CUERPO DEL MENSAJE
                                //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/>
                Por medio del presente correo se le recuerda que dentro de $dias dia(s) se cumple el plazo de terminacion del Contrato No. $no_contrato de $vigencia       
                <br/>        
                <b>DATOS DEL CONTRATO:</b><br/>
                <b>Contrato No.</b> $no_contrato del $vigencia<br/><br/>
                <b>Contratista.</b> $contratista<br/><br/>
                <b>Supervisor:</b> $supervisor<br/><br/>
                <b>Tipo de Contrato:</b> $tipo<br/><br/>
                <b>Valor del Contrato:</b> $valor<br/><br/>
                <b>Objeto:</b> $objeto<br/><br/>
                <br></br>
                <b>Proceso No.:</b> $no_proceso<br/><br/>
                <b>Area:</b> $area<br/><br/>
                <b>Modalidad de Seleccion:</b> $modalidad<br/><br/>
                <b>Valor:</b> $valor<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Abogado:</b> $abogado<br/><br/>
                <br/><br/>
                </body></html>
EOD;


                                $currentUri = "";

                                $progress_key = "";

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

                    break;

                case 13:

                    $custom_logger->info("[alarmas:envio|INFO] Alerta de Liquidacion.\n");
                    //Alerta de Liquidacion

                    $sql = "select tab0.* from co_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'];
                        $id_administra_alarma = $administra['ID_ADMINISTRA_ALARMA'];

                        if ($dias <= 60) {
                            $sql = "SELECT tab0.id_contrato, FECHA_ALARMA, FECHA_COMPA                            
                          from(                                                                                                                                    
                          SELECT tab0.id_contrato, tab0.fecha_liquidacion - interval '$dias' day AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA  
                          from co_legaliza_contrato tab0  
                          where fecha_liquidacion is not null
                          )tab0                                                                                                                                    
                          where FECHA_ALARMA = FECHA_COMPA
                          ";
                        } else {

                            
                            // * Se quita month ṕor day, y se colocam los dias, segun meses de 30 - 20150907
                            // * SELECT tab0.id_contrato, tab0.fecha_liquidacion - interval '$mes' month AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA 
                            // * La resta de intervalo no permite mas de 99 dias, toca separado, para esto dividimos en 2 - 20150908
                             
                            //$mes = $dias / 30;
                            $mes = $dias / 2;
                            $sql = "SELECT tab0.id_contrato, FECHA_ALARMA, FECHA_COMPA                            
                          from(                                                                                                                                    
                          SELECT tab0.id_contrato, (tab0.fecha_liquidacion - interval '$mes' day) - interval '$mes' day AS FECHA_ALARMA, 
                              TRUNC(SYSDATE) AS FECHA_COMPA  
                          from co_legaliza_contrato tab0  
                          where fecha_liquidacion is not null
                          )tab0                                                                                                                                    
                          where FECHA_ALARMA = FECHA_COMPA
                          ";
                        }



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

                        $custom_logger->info("[alarmas:envio|INFO] Id Rol::" . $id_rol . " - Dias por Vencer::" . $dias . "\n");
                        $custom_logger->info("[alarmas:envio|INFO] SQL Alarma::" . $sql . "\n");
                        foreach ($results as $estudios) {

                            $id_contrato = $estudios['ID_CONTRATO'];


                            $sql = <<<EOD
select tab0.no_contrato,tab0.id_anhos as vigencia, tab0.valor, tab0.objeto, tab0.tipo, tab0.completo_contra, tab0.completo_supervisor, tab1.id_estudios_previos

from co_contrato_v tab0
join co_seleccion_ep tab1 ON tab1.id_seleccion_ep = tab0.id_seleccion_ep
where tab0.id_contrato = $id_contrato
EOD;

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

                            $no_contrato = $records[0]['no_contrato'];
                            $vigencia = $records[0]['vigencia'];
                            $tipo = $records[0]['tipo'];
                            $contratista = $records[0]['completo_contra'];
                            $supervisor = $records[0]['completo_supervisor'];
                            $id_estudios_previos = $records[0]['id_estudios_previos'];

                            $sql = "select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos";


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

                            $responsable = $records[0]['NOMBRE_RESPONSABLE'];
                            $id_responsable = $records[0]['RESPONSABLE'];
                            $area = $records[0]['AREA'];
                            $valor = $records[0]['VALOR'];
                            $valor = number_format($valor);
                            $modalidad = $records[0]['MODALIDAD'];
                            $version = $records[0]['VERSION'];
                            $abogado = $records[0]['ABOGADO'];
                            $objeto = $this->htmlClear($purifier->purify($records[0]['OBJETO']));
                            $no_proceso = $records[0]['PROCESO'];

                            $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'modulocontratacion@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_administra_alarma = $id_administra_alarma
EOD;

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

                            foreach ($records as $correos) {

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

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

                                $datos_usuario = array();

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

//CUERPO DEL MENSAJE
                                //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/>
                Por medio del presente correo se le recuerda que dentro de $dias dia(s) se cumple el plazo de liquidación del Contrato No. $no_contrato de $vigencia       
                <br/>        
                <b>DATOS DEL CONTRATO:</b><br/>
                <b>Contrato No.</b> $no_contrato del $vigencia<br/><br/>
                <b>Contratista.</b> $contratista<br/><br/>
                <b>Supervisor:</b> $supervisor<br/><br/>
                <b>Tipo de Contrato:</b> $tipo<br/><br/>
                <b>Valor del Contrato:</b> $valor<br/><br/>
                <b>Objeto:</b> $objeto<br/><br/>
                <br></br>
                <b>Proceso No.:</b> $no_proceso<br/><br/>
                <b>Area:</b> $area<br/><br/>
                <b>Modalidad de Seleccion:</b> $modalidad<br/><br/>
                <b>Valor:</b> $valor<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Abogado:</b> $abogado<br/><br/>
                <br/><br/>
                </body></html>
EOD;


                                $currentUri = "";

                                $progress_key = "";

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

                    break;
                case 14:
                    $custom_logger->info("[alarmas:envio|INFO] ESTUDIO PREVIO 30 DIAS EN VERSION 0 .\n");
                    //Alerta Pendiente Primera Version

                    $sql = "select tab0.* from co_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_repeticion = $administra['DIAS_REPETICION'];
                        
                        if(dias > 0){
                            //Anulamos EP vencidos
                            $intervalo = $dias + $dias_repeticion;
                            $sql = <<<EOD
update co_estudios_previos set estado = 0, fecha_anu=sysdate, motivo_anu='ANULADO AUTOMATICO, EN VERSION 0' 
where tab0.fecha_creacion + interval '$intervalo' day = TRUNC(SYSDATE) and  version = 0  and estado = 1  and activo = 1               
EOD;
                            $this->conn->execute($sql);
                            //Notificamos EP por vencer

                            $sql = "SELECT tab0.ID_ESTUDIOS_PREVIOS, FECHA_ALARMA, FECHA_COMPA
                            from(
                            SELECT tab0.ID_ESTUDIOS_PREVIOS,tab0.fecha_creacion + interval '$dias' day AS FECHA_ALARMA, TRUNC(SYSDATE) AS FECHA_COMPA
                            from co_estudios_previos tab0
                            where tab0.estado = 1 and tab0.version = 0 and tab0.activo = 1
                            )tab0
                            where FECHA_ALARMA = FECHA_COMPA";

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

                            $custom_logger->info("[alarmas:envio|INFO] Id Rol::" . $id_rol . " - Dias por Vencer::" . $dias . "\n");
                            $custom_logger->info("[alarmas:envio|INFO] SQL Alarma::" . $sql . "\n");
                            foreach ($results as $estudios) {

                                $id_estudios_previos = $estudios['ID_ESTUDIOS_PREVIOS'];

                                $sql = "select tab0.* from co_estudios_previos_v tab0 where tab0.id_estudios_previos = $id_estudios_previos";


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

                                $responsable = $records[0]['NOMBRE_RESPONSABLE'];
                                $id_responsable = $records[0]['RESPONSABLE'];
                                $area = $records[0]['AREA'];
                                $valor = $records[0]['VALOR'];
                                $valor = number_format($valor);
                                $modalidad = $records[0]['MODALIDAD'];
                                $version = $records[0]['VERSION'];
                                $objeto = $this->htmlClear($purifier->purify($records[0]['OBJETO']));

                                $sql = <<<EOD
select tab2.num_doc, tab2.id_tipo_doc, tab2.razon_soc, nvl(tab3.mail,'modulocontratacion@sgc.gov.co') email, tab4.descripcion as rol
from co_administra_alarma tab0
join co_rol_proceso_v tab1 ON tab1.id_rol = tab0.id_rol and tab1.id_estudios_previos = $id_estudios_previos
join interceros_v tab2 ON tab2.id_mae_ter = tab1.id_mae_ter
join interceros_du_dir_v tab3 ON tab3.id_mae_ter = tab2.id_mae_ter
join co_rol tab4 ON tab4.id_rol = tab0.id_rol                        
where tab0.id_alarma = $id_alarma and tab4.id_rol = $id_rol and tab1.id_mae_ter is not null
EOD;

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

                                foreach ($records as $correos) {

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

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

                                    $datos_usuario = array();

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

    //CUERPO DEL MENSAJE
                                    //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/>
                    Por medio del presente correo se le Se informa que el Estudio Previo $id_estudios_previos lleva 30 días en versión 0, 
                    a partir de hoy si en 10 días el proceso no presenta modificaciones en la versión será anulado automáticamente.
                    <br/>        
                    <b>Area:</b> $area<br/><br/>
                    <b>Modalidad de Seleccion:</b> $modalidad<br/><br/>
                    <b>Valor:</b> $valor<br/><br/>
                    <b>Responsable:</b> $responsable<br/><br/>
                    <b>Objeto:</b> $objeto<br/><br/>
                    <br/><br/>
                    </body></html>
EOD;


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


            endswitch;
        }

        $custom_logger->info("[alarmas:envio|INFO] Fin envio de Alarmas\n");
    }*/
    
    protected function execute($arguments = array(), $options = array()) {

        $parametros_post = array();
        
        $sesion = curl_init("http://localhost/contratacion/web/api_dev.php/api/envio_alarmas/list.json?");
        //Define el tipo de ejecución, en este caso POST
        curl_setopt($sesion, CURLOPT_POST, true);
        //Se ingresan los parametos estabelcidos 
        curl_setopt($sesion, CURLOPT_POSTFIELDS, http_build_query($parametros_post));
        //Parametros de retorno en cURL
        curl_setopt($sesion, CURLOPT_HEADER, false);
        curl_setopt($sesion, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($sesion, CURLOPT_TIMEOUT_MS, 0.1);
        curl_setopt($sesion, CURLOPT_NOSIGNAL, 0.1);
        //Ejecuta la petición
        $respuesta = curl_exec($sesion);
        //Se cierra la conexión
        curl_close($sesion);
    }
    

    /**
     * Metodo de envio correo alarmas
     * 
     * @param type $report_params
     * @param type $datos_usuario
     * @param type $subject
     * @param type $currentUri
     * @param type $ruta
     * @param type $adjunto
     * @param type $progress_key
     * @param type $array_adjuntos
     * @param type $body
     */
    public static function envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body) {


        /**
         * Registro de log - 20150909
         */
        $logPath = sfConfig::get('sf_log_dir') . '/alarmas.log';
        $custom_logger = new sfFileLogger(new sfEventDispatcher(), array('file' => $logPath));
        $custom_logger->info("The [alarmas:envioCorreo|INFO] Metodo de envio correo alarmas.\n");

        /**
         * 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
         */


        //Actualización 20 de Marzo de 2015
        //Se relizó actualización en la forma de enviar el correo segun especificacion del SCG

        /*
         * Cambio de configuracion servidor correo - 20150911
         * Servidor Granate
          IP: 172.25.1.3
          Puertos: el 465 o el 587
          SMTPSecure = "tsl"
          SMTPAuth = false
         * Servidor Gmail - Google
          IP: smtp.gmail.com
          Puertos: el 465
          SMTPSecure = "ssl"
          SMTPAuth = true
         */

        $mail->IsSMTP(); // telling the class to use SMTP
        $mail->SMTPSecure = "ssl"; //tsl o ssl
        $mail->Host = "smtp.gmail.com";      // 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 = "websafi@sgc.gov.co";              // SMTP account username
        $mail->Password = '0pennms$KApp.+';           // SMTP account password
        //$report_params["email_envio"] = 'websafi@sgc.gov.co';
        $mail->SetFrom($report_params["email_envio"], utf8_decode('Contratación Websafi')); //Correo desde el que se envia


        $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";
            //$report_params["email"] = "websafi@sgc.gov.co";
            $nombre_completo = $report_params["nombre_completo"] = $datos[3];

            //Log de datos usuario - 20150909
            $custom_logger->info("The [alarmas:envioCorreo|INFO] NumDoc:: " . $report_params["num_doc"] . " - Email:: " . $report_params["email"] . "\n");

            //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"]);
                //Correos de copia Seguimiento
                $mail->AddAddress("websafi@sgc.gov.co", "Seguimiento Contratos websafi");
                $mail->AddAddress("contratos@sofhouse.net", "Seguimiento Contratos");

                /**
                 * 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;
                    $custom_logger->info("The [alarmas:envioCorreo|INFO] Mailer Error: " . $mail->ErrorInfo . "\n");
                } else {
//                        echo "Message sent! ";
                    $custom_logger->info("The [alarmas:envioCorreo|INFO] Message sent!\n");
                }

                /*
                 * 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);
        $custom_logger->info("The [alarmas:envioCorreo|INFO] Fin Envio correo alarma.\n");
    }

    /**
     *
     * Metodo que reemplaza las etiquetas html para modificar el formato de tamaño y alineación de los textos
     */
    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 rowspan="2">', '<td rowspan="2" align="justify">', $string);

        //El formato de tamaño de fuente no se debe ejecutar en el envío de correos

        /* $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="1"', 'size="10"', $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('amp;', '', $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('valign', 'align', $string);
        $string = str_replace('width=', '', $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);
    }

}
