<?php

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

/**
 * envio_alarma actions.
 * 
 * Link: http://soporte14.sofhouse.net/contratacion/web/api_dev.php/api/envio_alarmas/list.json?id_alarma=5
 *
 * @package    cobro_coactivo
 * @subpackage envio_alarma
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class envio_alarmasActions extends sfActions {

    private $custom_logger;
    private $service_url = null;

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

        //Log especifico de procesos completos
        /* $logPath = sfConfig::get('sf_log_dir') . '/alarmas.log';
          $this->custom_logger = new sfFileLogger(new sfEventDispatcher(), array('file' => $logPath));
          $this->custom_logger->info("---BEGIN Logging request--- (Revisar log alarmas.log)");
          foreach ($request->getPostParameters() as $key => $value) {
          $this->custom_logger->info("[envio_alarmas] request[$key] = $value\n");
          }
          $this->custom_logger->info("--------------------------------------------------/  Ip: " . $_SERVER['REMOTE_ADDR']);
          foreach ($request->getGetParameters() as $key => $value) {
          $this->custom_logger->info("[envio_alarmas] request[$key] = $value");
          }
          $this->custom_logger->info("---END Logging request"); */

        //Abrir nueva conexion con la Base de Datos
        //$this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
        //$this->conn->beginTransaction();
        //formato de envio
        //$format = 'PDF';
        //$array_jasper = array();

        try {

            //$email_envio = sfConfig::get('app_email_envio');
            //$this->logMessage("email_envio: " . $email_envio);

            $array = sfYaml::load(dirname(__FILE__) . '/../../../config/app-gwt.yml');
            $int = 0;
            $correoEnvio = "";
            $service_url = "";
            foreach ($array as $routeName => $routeData) {
                if ('service_url_local' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        if ($key == 'value') {
                            $service_url = $value;
                            $this->service_url = $service_url;
                        }
                    }
                }
                if ('correoEnvio' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $correoEnvio = $value;
                        }
                    }
                }
                $int++;
            }
            //URL de servicio correo
            $url_envio_correo = $service_url . "curl_envio_correo/list.json";
            $id_username = $request['id_username'];
            $username = $request['username'];
            $tabla = "CO_ESTUDIOS_PREVIOS";

            //obtener id maestro tabla
            //$id_mae_bd = CN_TABLE::consultarIdTablaBD('CBR_PLANIFICA_FP');
            //id_alarma
            $config = HTMLPurifier_Config::createDefault();
            $purifier = new HTMLPurifier($config);

            // initialize the database connection
            //$databaseManager = Doctrine_Manager::getInstance();
            //$conn = Doctrine_Manager::connection();


            $logPath = sfConfig::get('sf_log_dir') . '/alarmas.log';
            $this->custom_logger = new sfFileLogger(new sfEventDispatcher(), array('file' => $logPath));
            $this->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 = CN_TABLE::executeSQL($sql);
            $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 = CN_TABLE::executeSQL($sql);
            $this->custom_logger->info("The [alarmas:envio|INFO] $sql.\n");
            $this->custom_logger->info("The [alarmas:envio|INFO] Cantidad Alramas:" . count($results) . "\n");

            $params = Array();
            foreach ($results as $alarmas) {

                $numero_alarma = $alarmas['numero'];
                $id_alarma = $alarmas['id_alarma'];
                $subject = $alarmas['descripcion'];
                $adjunto = false;
                $params['subject'] = $alarmas['descripcion'];
                $params['adjunto'] = false;
                $params["email_envio"] = $correoEnvio;
                #$numero_alarma = 1;
                $this->custom_logger->info("The [alarmas:envio|INFO] Numero Alrama $numero_alarma.\n");
                switch ($numero_alarma):

                    case 1:
                        $this->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 = CN_TABLE::executeSQL($sql);

                        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 = CN_TABLE::executeSQL($sql);

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

                                $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 = CN_TABLE::executeSQL($sql);

                                $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'];
                                    $params['num_doc_usu'] = $documento;
                                    $params['id_tipo_doc_usu'] = $tipo_doc;
                                    $params['razon_social_usu'] = $nombre;
                                    $params['correo_usu'] = $email;


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

                                    $datos_usuario = array();

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

//CUERPO DEL MENSAJE
                                    //CUERPO DEL MENSAJE

                                    $params['body'] = "<html><body> </body></html>";
                                    //Body
                                    $params['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;

                                    $params['mensaje'] = $params['body'];
                                    $params['currentUri'] = "";
                                    $this->custom_logger->info("[alarmas:envio|INFO] Enviar Correo::" . $email . "\n");
                                    $this->enviarCorreo($url_envio_correo, $params, $tabla, $id_username);
                                    //$this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                                }
                            }
                        }



                        break;

                    case 2:

                        $this->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 = CN_TABLE::executeSQL($sql);

                        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 = CN_TABLE::executeSQL($sql);

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

                                $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 = CN_TABLE::executeSQL($sql);

                                $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'];
                                    $params['num_doc_usu'] = $documento;
                                    $params['id_tipo_doc_usu'] = $tipo_doc;
                                    $params['razon_social_usu'] = $nombre;
                                    $params['correo_usu'] = $email;

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

                                    $params['datos_usuario'] = array();

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

//CUERPO DEL MENSAJE
                                    //CUERPO DEL MENSAJE

                                    $params['body'] = "<html><body> </body></html>";
                                    //Body
                                    $params['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;


                                    $params['currentUri'] = "";
                                    $params['mensaje'] = $params['body'];
                                    $this->custom_logger->info("[alarmas:envio|INFO] Enviar Correo::" . $email . "\n");
                                    $this->enviarCorreo($url_envio_correo, $params, $tabla, $id_username);
                                    //$this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                                }
                            }
                        }



                        break;

                    case 3:

                        $this->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 = CN_TABLE::executeSQL($sql);

                        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 = CN_TABLE::executeSQL($sql);

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

                                $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 = CN_TABLE::executeSQL($sql);

                                $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'];

                                $this->custom_logger->info("[alarmas:envio|INFO] Id_estudios_previos::" . $id_estudios_previos . ".\n");
                                $this->custom_logger->info("[alarmas:envio|INFO] Abogado::" . $abogado . ".\n");
                                $this->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'];
                                    $params['num_doc_usu'] = $documento;
                                    $params['id_tipo_doc_usu'] = $tipo_doc;
                                    $params['razon_social_usu'] = $nombre;
                                    $params['correo_usu'] = $email;

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

                                    $params['datos_usuario'] = array();

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

//CUERPO DEL MENSAJE
                                    //CUERPO DEL MENSAJE

                                    $params['body'] = "<html><body> </body></html>";
                                    //Body
                                    $params['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;


                                    $params['currentUri'] = "";
                                    $params['mensaje'] = $params['body'];
                                    $this->custom_logger->info("[alarmas:envio|INFO] Enviar Correo::" . $email . "\n");
                                    $this->enviarCorreo($url_envio_correo, $params, $tabla, $id_username);
                                    //$this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                                }
                            }
                        }

                        break;

                    case 4:

                        $this->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 = CN_TABLE::executeSQL($sql);

                        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 = CN_TABLE::executeSQL($sql);

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

                                $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 = CN_TABLE::executeSQL($sql);

                                $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'];
                                    $params['num_doc_usu'] = $documento;
                                    $params['id_tipo_doc_usu'] = $tipo_doc;
                                    $params['razon_social_usu'] = $nombre;
                                    $params['correo_usu'] = $email;

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

                                    $params['datos_usuario'] = array();

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

//CUERPO DEL MENSAJE
                                    //CUERPO DEL MENSAJE

                                    $params['body'] = "<html><body> </body></html>";
                                    //Body
                                    $params['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;


                                    $params['currentUri'] = "";
                                    $params['mensaje'] = $params['body'];
                                    $this->custom_logger->info("[alarmas:envio|INFO] Enviar Correo::" . $email . "\n");
                                    $this->enviarCorreo($url_envio_correo, $params, $tabla, $id_username);
                                    //$this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                                }
                            }
                        }

                        break;

                    case 5:

                        $this->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 = CN_TABLE::executeSQL($sql);

                        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 = CN_TABLE::executeSQL($sql);

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

                                $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 = CN_TABLE::executeSQL($sql);

                                $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'];
                                    $params['num_doc_usu'] = $documento;
                                    $params['id_tipo_doc_usu'] = $tipo_doc;
                                    $params['razon_social_usu'] = $nombre;
                                    $params['correo_usu'] = $email;

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

                                    $params['datos_usuario'] = array();

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

//CUERPO DEL MENSAJE
                                    //CUERPO DEL MENSAJE

                                    $params['body'] = "<html><body> </body></html>";
                                    //Body
                                    $params['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;


                                    $params['currentUri'] = "";
                                    $params['mensaje'] = $params['body'];
                                    $this->custom_logger->info("[alarmas:envio|INFO] Enviar Correo::" . $email . "\n");
                                    $this->enviarCorreo($url_envio_correo, $params, $tabla, $id_username);
                                    //$this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                                }
                            }
                        }


                        break;

                    case 6:

                        $this->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 = CN_TABLE::executeSQL($sql);

                        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 = CN_TABLE::executeSQL($sql);

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

                                $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 = CN_TABLE::executeSQL($sql);

                                $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'];
                                    $params['num_doc_usu'] = $documento;
                                    $params['id_tipo_doc_usu'] = $tipo_doc;
                                    $params['razon_social_usu'] = $nombre;
                                    $params['correo_usu'] = $email;

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

                                    $params['datos_usuario'] = array();

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

//CUERPO DEL MENSAJE
                                    //CUERPO DEL MENSAJE

                                    $params['body'] = "<html><body> </body></html>";
                                    //Body
                                    $params['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;


                                    $params['currentUri'] = "";
                                    $params['mensaje'] = $params['body'];
                                    $this->custom_logger->info("[alarmas:envio|INFO] Enviar Correo::" . $email . "\n");
                                    $this->enviarCorreo($url_envio_correo, $params, $tabla, $id_username);
                                    //$this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                                }
                            }
                        }

                        break;

                    case 7:

                        $this->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 = CN_TABLE::executeSQL($sql);

                        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 = CN_TABLE::executeSQL($sql);

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

                                $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 = CN_TABLE::executeSQL($sql);

                                $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'];
                                    $params['num_doc_usu'] = $documento;
                                    $params['id_tipo_doc_usu'] = $tipo_doc;
                                    $params['razon_social_usu'] = $nombre;
                                    $params['correo_usu'] = $email;

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

                                    $params['datos_usuario'] = array();

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

//CUERPO DEL MENSAJE
                                    //CUERPO DEL MENSAJE

                                    $params['body'] = "<html><body> </body></html>";
                                    //Body
                                    $params['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;


                                    $params['currentUri'] = "";
                                    $params['mensaje'] = $params['body'];
                                    $this->custom_logger->info("[alarmas:envio|INFO] Enviar Correo::" . $email . "\n");
                                    $this->enviarCorreo($url_envio_correo, $params, $tabla, $id_username);
                                    //$this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                                }
                            }
                        }
                        break;

                    case 8:

                        $this->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 = CN_TABLE::executeSQL($sql);

                        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 = CN_TABLE::executeSQL($sql);

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

                                $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 = CN_TABLE::executeSQL($sql);

                                $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'];
                                    $params['num_doc_usu'] = $documento;
                                    $params['id_tipo_doc_usu'] = $tipo_doc;
                                    $params['razon_social_usu'] = $nombre;
                                    $params['correo_usu'] = $email;

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

                                    $params['datos_usuario'] = array();

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

//CUERPO DEL MENSAJE
                                    //CUERPO DEL MENSAJE

                                    $params['body'] = "<html><body> </body></html>";
                                    //Body
                                    $params['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;


                                    $params['currentUri'] = "";
                                    $params['mensaje'] = $params['body'];
                                    $this->custom_logger->info("[alarmas:envio|INFO] Enviar Correo::" . $email . "\n");
                                    $this->enviarCorreo($url_envio_correo, $params, $tabla, $id_username);
                                    //$this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                                }
                            }
                        }


                        break;

                    case 9:

                        $this->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 = CN_TABLE::executeSQL($sql);

                        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 = CN_TABLE::executeSQL($sql);

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

                                $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 = CN_TABLE::executeSQL($sql);

                                $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'];
                                    $params['num_doc_usu'] = $documento;
                                    $params['id_tipo_doc_usu'] = $tipo_doc;
                                    $params['razon_social_usu'] = $nombre;
                                    $params['correo_usu'] = $email;

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

                                    $params['datos_usuario'] = array();

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

//CUERPO DEL MENSAJE
                                    //CUERPO DEL MENSAJE

                                    $params['body'] = "<html><body> </body></html>";
                                    //Body
                                    $params['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;


                                    $params['currentUri'] = "";
                                    $params['mensaje'] = $params['body'];
                                    $this->custom_logger->info("[alarmas:envio|INFO] Enviar Correo::" . $email . "\n");
                                    $this->enviarCorreo($url_envio_correo, $params, $tabla, $id_username);
                                    //$this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                                }
                            }
                        }

                        break;

                    case 10:
                        $this->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 = CN_TABLE::executeSQL($sql);

                        foreach ($administra as $administra) {
                            $this->renewConnection();

                            $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"; */

                            /**
                             * Contratos sin registro de legalizacion, estado activo con valor diferente a 0, no es convenio, ni tiene carta de aceptacion, ni orden de compra
                             * Y FECHA_ALARMA(fecha_contrato+dias) <= FECHA_COMPA(S(YSDATE)
                             */
                            $sql = <<<EOD
select 
tab1.*
from(
    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 and tab0.id_tipo_convenio is null
    and tab0.carta_aceptacion = 0 and tab0.orden_compra = 0
    )tab0
    where FECHA_ALARMA <= FECHA_COMPA
)tab0

join (
    select 
    tab0.id_contrato,
    tab0.no_contrato,
    tab0.id_anhos as vigencia, 
    tab0.valor as valor_contrato, 
    tab0.objeto as objeto_contrato, 
    tab0.tipo, 
    tab0.completo_contra, 
    tab0.completo_supervisor, 
    tab2.id_estudios_previos,
    tab2.nombre_responsable,
    tab2.responsable,
    tab2.area,
    tab2.valor,
    tab2.modalidad,
    tab2.version,
    tab2.abogado,
    tab2.objeto,
    tab2.proceso,
    tab3.num_doc, tab3.id_tipo_doc, tab3.razon_soc, tab3.email, tab3.rol
    
    from co_contrato_v tab0
    join co_seleccion_ep tab1 ON tab1.id_seleccion_ep = tab0.id_seleccion_ep
    join co_estudios_previos_v tab2 on tab2.ID_ESTUDIOS_PREVIOS = tab1.ID_ESTUDIOS_PREVIOS
    join (
        select 
        tab1.id_estudios_previos,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
        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
    )tab3 on tab3.id_estudios_previos = tab1.id_estudios_previos
)tab1 on tab1.id_contrato = tab0.id_contrato 

order by
tab1.vigencia,
tab1.no_contrato
EOD;



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

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

                                $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']; */

                                $no_contrato = $estudios['no_contrato'];
                                $vigencia = $estudios['vigencia'];
                                $tipo = $estudios['tipo'];
                                $contratista = $estudios['completo_contra'];
                                $supervisor = $estudios['completo_supervisor'];
                                $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 = CN_TABLE::executeSQL($sql); */

                                /* $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']; */

                                $responsable = $estudios['nombre_responsable'];
                                $id_responsable = $estudios['responsable'];
                                $area = $estudios['area'];
                                $valor = $estudios['valor'];
                                $valor = number_format($valor);
                                $modalidad = $estudios['modalidad'];
                                $version = $estudios['version'];
                                $abogado = $estudios['abogado'];
                                $objeto = $this->htmlClear($purifier->purify($estudios['objeto']));
                                $no_proceso = $estudios['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']; */
                                $documento = $estudios['num_doc'];
                                $tipo_doc = $estudios['id_tipo_doc'];
                                $nombre = $estudios['razon_soc'];
                                $email = $estudios['email'];
                                $rol = $estudios['rol'];
                                $params['num_doc_usu'] = $documento;
                                $params['id_tipo_doc_usu'] = $tipo_doc;
                                $params['razon_social_usu'] = $nombre;
                                $params['correo_usu'] = $email;

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

                                $params['datos_usuario'] = array();

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

                                //CUERPO DEL MENSAJE

                                $params['body'] = "<html><body> </body></html>";
                                //Body
                                $params['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;


                                $params['currentUri'] = "";
                                $params['mensaje'] = $params['body'];
                                $this->custom_logger->info("[alarmas:envio|INFO] Enviar Correo::" . $email . "\n");
                                $this->enviarCorreo($url_envio_correo, $params, $tabla, $id_username);
                                //$this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                                //}
                            }
                        }

                        break;

                    case 12:

                        $this->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 = CN_TABLE::executeSQL($sql);

                        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 = CN_TABLE::executeSQL($sql);

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

                                $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 = CN_TABLE::executeSQL($sql);

                                $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'];
                                    $params['num_doc_usu'] = $documento;
                                    $params['id_tipo_doc_usu'] = $tipo_doc;
                                    $params['razon_social_usu'] = $nombre;
                                    $params['correo_usu'] = $email;

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

                                    $params['datos_usuario'] = array();

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

//CUERPO DEL MENSAJE
                                    //CUERPO DEL MENSAJE

                                    $params['body'] = "<html><body> </body></html>";
                                    //Body
                                    $params['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;


                                    $params['currentUri'] = "";
                                    $params['mensaje'] = $params['body'];

                                    $params['progress_key'] = "";
                                    $this->custom_logger->info("[alarmas:envio|INFO] Enviar Correo::" . $email . "\n");
                                    $this->enviarCorreo($url_envio_correo, $params, $tabla, $id_username);
                                    //$this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                                }
                            }
                        }

                        break;

                    case 13:

                        $this->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 = CN_TABLE::executeSQL($sql);

                        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 = CN_TABLE::executeSQL($sql);

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

                                $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 = CN_TABLE::executeSQL($sql);

                                $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'];
                                    $params['num_doc_usu'] = $documento;
                                    $params['id_tipo_doc_usu'] = $tipo_doc;
                                    $params['razon_social_usu'] = $nombre;
                                    $params['correo_usu'] = $email;

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

                                    $params['datos_usuario'] = array();

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

//CUERPO DEL MENSAJE
                                    //CUERPO DEL MENSAJE

                                    $params['body'] = "<html><body> </body></html>";
                                    //Body
                                    $params['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;


                                    $params['currentUri'] = "";
                                    $params['mensaje'] = $params['body'];

                                    $params['progress_key'] = "";
                                    $this->custom_logger->info("[alarmas:envio|INFO] Enviar Correo::" . $email . "\n");
                                    $this->enviarCorreo($url_envio_correo, $params, $tabla, $id_username);
                                    //$this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                                }
                            }
                        }

                        break;
                    case 14:
                        $this->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 = CN_TABLE::executeSQL($sql);

                        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 = CN_TABLE::executeSQL($sql);

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

                                    $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 = CN_TABLE::executeSQL($sql);

                                    $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'];
                                        $params['num_doc_usu'] = $documento;
                                        $params['id_tipo_doc_usu'] = $tipo_doc;
                                        $params['razon_social_usu'] = $nombre;
                                        $params['correo_usu'] = $email;

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

                                        $params['datos_usuario'] = array();

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

                                        //CUERPO DEL MENSAJE
                                        //CUERPO DEL MENSAJE

                                        $params['body'] = "<html><body> </body></html>";
                                        //Body
                                        $params['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;


                                        $params['currentUri'] = "";
                                        $params['mensaje'] = $params['body'];
                                        $this->custom_logger->info("[alarmas:envio|INFO] Enviar Correo::" . $email . "\n");
                                        $this->enviarCorreo($url_envio_correo, $params, $tabla, $id_username);
                                        //$this->envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
                                    }
                                }
                            }
                        }
                        break;


                endswitch;
                #break;
            }

            $this->custom_logger->info("[alarmas:envio|INFO] Fin envio de Alarmas\n");

            $this->list_data = array(
                array(
                    'mensaje' => "Termino Correctamente."
                )
            );
            //$this->conn->commit();
        } catch (Exception $e) {

            //rollback de todas las transacciones en caso de que ocurra algun error
            //$this->conn->rollback();

            $mensaje = "[envio_notificacion] ROLLBACK ERROR al Generar envio de correos. !!!";
            $this->custom_logger->info($mensaje);
            $this->custom_logger->info("state 2");
            $this->custom_logger->info("Code " . $e->getCode());
            $this->custom_logger->info("Message " . $e->getMessage());

            $this->status = 2;
            $this->mensajeError = $mensaje;
            $this->list_data = array(
                array(
                    'Code' => $e->getCode(),
                    'Line' => $e->getLine(),
                    'mensaje' => $mensaje
                )
            );
        }
    }

    function enviarCorreo($url_envio_correo, $params, $tabla, $id_username) {
        $id_mae_bd = CN_TABLE::consultarIdTablaBD("$tabla");
        $this->custom_logger->info("[envio_alarmas]ENVIAR CORREO ALARMA");
        $this->custom_logger->info("[envio_alarmas] Obtener Datos para enviar notificacion");

        $record = $params;
        foreach ($record as $key => $value) {
            $params[$key] = $value;
        }
        //agregamos otros parametros
        $params['comando'] = "envio_alerta_contratacion";
        $params['id_mae_bd'] = $id_mae_bd;
        $params['id_username'] = $id_username;
        $params['id_tabla'] = "null";

        // $params['correo_usu'] = null;

        if ($this->service_url != null) {
            CN_TABLE::curlPostAsync($url_envio_correo, $params);
        }
        //$body = "Correo prueba";
        //$this->logMessage("Mensaje Correo: " . $body);
        $this->custom_logger->info("[envio_alarmas] Fin llamado  $url_envio_correo");
    }

    private function renewConnection() {
        $conn = Doctrine_Manager::connection();
        $conn->close();
        $conn->connect();
    }

    /**
     * Metodo para llamado Jasper y envio de correo
     * @param type $service_url
     * @param type $comando
     * @param type $format
     * @param type $array_jasper
     */
    public function llamadoJasper($service_url, $comando, $format, $array_jasper) {


        $url = $service_url;
        $url = $url . $comando . '&format=' . $format;

        //variables del informe
        foreach ($array_jasper as $key => $value) {
            $url = $url . '&PARAM_' . $key . '=' . $value;
        }

        //Para envio por correo
        $url = $url . '&PARAM_envio_correo=1';

        $this->custom_logger->info("[envio_notificacion] Url::" . $url);
        $ch = curl_init($url);

        //Parametros de retorno en cURL
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // Skip SSL Verification
        $rta = curl_exec($ch);
        $this->custom_logger->info("[envio_notificacion] Ejecuta llamado ");
        $this->custom_logger->info("[envio_notificacion] Parametriza sin tag_dias_ejecutar");
        curl_close($ch);

        $arrayRespuesta = json_decode($rta, true);
        //Verifica el status, si es diferente de 0, ocurrio un error al subir la interfaz y debe reportarlo
        if ($arrayRespuesta['response']['status'] == 1) {
            $mensajeError = "Error :: Al generar envio de correos.";
            $this->status = 1;
            $this->list_data = array();
            $this->mensajeError = $mensajeError;
            $this->logMessage("[envio_notificacion] " . $mensajeError);
        } else {
            $this->logMessage("[envio_notificacion] Genero envio de correos.");
        }
    }

    /**
     *
     * 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);
    }

}
