<?php

//require_once(dirname(__FILE__). '/../phpmailer/class.phpmailer.php');

class envioAlertasTask extends sfBaseTask {

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

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

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

  [php symfony comisiones:envioAlertas|INFO]
EOF;
    }

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


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

        $custom_logger->info("[alertas:envio|INFO] Envio de Alarmas\n");
        
        $dias_alerta = 5;

        $custom_logger->info("[*********************] Antes de envioEmails\n");

        /* Pruebas
          $arrayRes=array();
          array_push($arrayRes, SqlTablePeer::fechaSistema());
          $urlEjecucion = "http://localhost/comisiones/web/frontend_dev.php/comisionados/cronAlertas";
          $parametros_post = array();
          //Se inicializa con la URL el cURL
          $sesion = curl_init($urlEjecucion);
          //Define el tipo de ejecución, en este caso POST
          curl_setopt ($sesion, CURLOPT_POST, true);
          //Se ingresan los parametos estabelcidos
          curl_setopt ($sesion, CURLOPT_POSTFIELDS, $parametros_post);
          //Parametros de retorno en cURL
          curl_setopt($sesion, CURLOPT_HEADER, false);
          curl_setopt($sesion, CURLOPT_RETURNTRANSFER, true);
          curl_setopt($sesion, CURLOPT_TIMEOUT_MS, 0.1);
          curl_setopt($sesion, CURLOPT_NOSIGNAL, 0.1);
          //Ejecuta la petición
          $respuesta = curl_exec($sesion);
          //Se cierra la conexión
          curl_close($sesion);
          //Retorna la respuesta que genero el cURL
          array_push($arrayRes, "Respuesta de la llamada en cURL Crea Nuevo Mes CON: ".$respuesta); */

        //envioEmail($subject, $from, $address, $body, $addReplyTo, $ruta = null, $attachment = null)
        //$return = $this->envioEmail('prueba', 'alerta', $address, 'envio de correo', false, null, null);

        /* Ejemplo funcional
          $address = array(
          '0' => array(
          'username'=>'websafi',
          'correo'=>'websafi@sgc.gov.co'
          ),
          '1' => array(
          'username' => 'lavila',
          'correo' => 'lavila@sofhouse.net'
          )
          );
          $return = SqlTablePeer::envioEmailTaks('prueba', 'alerta', $address, 'envio de correo', false, null, null);
         */


        /*
         * Consulta y creacion de correo alertas - 20160926
         */
        $custom_logger->info("[INFO] Consulta y creacion de correo alertas\n");
        
        /**
         * ALERTA 0 :: La alerta se genera 30 días calendario despues de la fecha de Salida de la Comisión, 
         * Un día antes de la fecha de terminación de la comisión y/o desplazamiento..
         * Incidente #4711, se unifica en las otras alertas 1 al 3  - 20161024
         */
        $sql = <<<EOD
select
case when cie.rn is not null then 'Legalizado' else 'Pendiente' end as estado_leg,
comis.fecha_salida + 30 as fecha_dias,
trim(to_char(comis.fecha_salida + 30,'dd')) || ' de ' || trim(to_char(comis.fecha_salida + 30,'Month','nls_date_language=spanish')) || ' de ' || trim(to_char(comis.fecha_salida + 30,'yyyy')) AS FECHA_DIAS_TEXTO,
case when COM.INTERRUPCION is not null then 'SI' else 'NO' end as estado_interruccion,
resol.resolucion,
prrpc.ID as ID_PR_RP_COMIS,
prrpc.FECHA_PROCESO as FECHA_REGISTRO,
prrpc.ID_TERCERO,
comis.id_comision,
terv.tipter,
comis.nitocc,
terv.razsoc,
terv.email,
to_char(comis.fecha_salida, 'dd-mm-yyyy') as fecha_salida,
comis.dias,
to_char(comis.fecha_regreso, 'dd-mm-yyyy') as fecha_regreso,
comis.nitocc_jefe,
terv_jefe.razsoc as razon_soc_jefe,
terv_jefe.email as email_jefe,
com.* ,
tipco.DESCOMI as DESCOMI

from COMISIONES com

JOIN TIPOS_COMISION tipco ON com.TIPCOMI = tipco.TIPCOMI

left join(
    select 
    cont.* 
    from comisionados_contrato cont
    union
    select 
    plant.* 
    from comisionados_planta plant
)comis
on comis.vigencia = com.vigencia
and comis.id_comision = com.id

left join terceros terv on terv.nitocc = to_char(comis.nitocc)

left join terceros terv_jefe on terv_jefe.nitocc = to_char(comis.nitocc_jefe)

left join PR_RP_COMIS prrpc
ON prrpc.vigencia = com.vigencia 
AND prrpc.id_comision = com.id
AND prrpc.id_tercero = comis.nitocc

left join pr_resol_comis resol
on resol.id_comision = com.id
and resol.vigencia = com.vigencia
AND resol.id_vigencia = prrpc.id_vigencia
AND resol.tipo_comisionado != terv.tipter

left join (
  SELECT
   aut.*,
   ROW_NUMBER() OVER (
    partition by aut.id_rp_comis, aut.id_vigencia, aut.vigencia
    ORDER BY aut.id_rp_comis, aut.id_vigencia, aut.vigencia, aut.id_tipo_nov_comis desc
   ) AS rn
  from pr_cierre_comision aut
)cie
on cie.id_rp_comis = prrpc.id
and cie.id_vigencia = prrpc.id_vigencia
and cie.vigencia = prrpc.vigencia

where
com.estado = 1 --activas
and com.activo = 0 --cerradas
and com.vigencia in ( to_char(sysdate,'yyyy') , to_char(sysdate,'yyyy')-1 ) 
and comis.nitocc is not null
--filtro de fecha
and trunc(comis.fecha_salida + 30) = dias_habiles( trunc(sysdate) , 1)
and cie.rn is null
and COM.INTERRUPCION is not null 

order by
comis.fecha_regreso desc,
com.id desc 
EOD;
        //$custom_logger->info($sql);
        $result = SqlTablePeer::executeOCI_SQL_List_Task($sql);
        /*
          $con = Propel::getConnection();
          $sentencia = $con->prepareStatement($sql);
          $result = $sentencia->executeQuery(); */

        $custom_logger->info("[envioAlertasTask] INICIO-Alerta 0\n");
        //Incidente #4711
        /*foreach ($result as $value) {

            $resolucion = $value['RESOLUCION'];
            $id_comision = $value['ID_COMISION'];
            $estado_interruccion = $value['ESTADO_INTERRUCCION'];
            $id_pr_rp_comis = $value['ID_PR_RP_COMIS'];
            $objetivo = $value['OBJETIVO'];
            $fecha_salida = $value['FECHA_SALIDA'];
            $fecha_regreso = $value['FECHA_REGRESO'];
            $fecha_dias_texto = $value['FECHA_DIAS_TEXTO'];

            $nitocc = $value['NITOCC'];
            $email = $value['EMAIL'];
            $nitocc_jefe = $value['NITOCC_JEFE'];
            $email_jefe = $value['EMAIL_JEFE'];

            $subject = "RECORDATORIO LEGALIZACIÓN DE COMISIÓN Y/O DESPLAZAMIENTO";
            $from = "Comisiones";

            $custom_logger->info("[envioAlertasTask] Tercero::$nitocc\n");
            if (is_null($email_jefe)) {
                $address = array(
                    '0' => array(
                        'username' => $nitocc,
                        'correo' => $email
                    )
                );
            } else {
                $custom_logger->info("[envioAlertasTask] Entro con jefe inmediato::$nitocc_jefe\n");
                $address = array(
                    '0' => array(
                        'username' => $nitocc,
                        'correo' => $email
                    ),
                    '1' => array(
                        'username' => $nitocc_jefe,
                        'correo' => $email_jefe
                    )
                );
            }


            $body = <<<EOD
<html><body>                     
Buen día,
<br/><br/>    
La comisión y/o desplazamiento que se relaciona a continuación términa el día de mañana y se debe legalizar a más tardar 
el día $fecha_dias_texto ( 30 días calendario despues de la fecha de Salida de la sede habitual) y radicarse en la Unidad de Recursos Financieros.
Presupuesto General de la Nación (PGN). 
<br/><br/>                    
<b>No. Resolución:</b> $resolucion<br/>
<b>No. Comisión:</b> $id_comision<br/>             
<b>Comisión y/o desplazamiento con Interrupcion:</b> $estado_interruccion<br/>
<b>No. RP:</b> $id_pr_rp_comis<br/>
<b>Objeto de la comisión y/o desplazamiento:</b> $objetivo<br/>
<b>Fecha de Salida:</b> $fecha_salida<br/>
<b>Fecha de Regreso:</b> $fecha_regreso<br/>
<br/><br/> 
</body></html>                    
EOD;

            $return = SqlTablePeer::envioEmailTaks($subject, $from, $address, $body, true, null, null);
        }
        $custom_logger->info("[envioAlertasTask] FIN-Alerta 0\n");
        */
        
        /**
         * ALERTA 1 :: Un día antes de la fecha de terminación de la comisión y/o desplazamiento.
         */
        $sql = <<<EOD
select
case when cie.rn is not null then 'Legalizado' else 'Pendiente' end as estado_leg,

case when COM.INTERRUPCION is not null 
then comis.fecha_salida + 30 
else DIAS_HABILES( comis.fecha_regreso, $dias_alerta) end as fecha_dias,
comis.fecha_salida + 30  as fecha_a,
DIAS_HABILES( comis.fecha_regreso, $dias_alerta)  as fecha_b,

trim(to_char( case when COM.INTERRUPCION is not null then comis.fecha_salida + 30 else DIAS_HABILES( comis.fecha_regreso, $dias_alerta) end,'dd')) 
|| ' de ' || trim(to_char( case when COM.INTERRUPCION is not null then comis.fecha_salida + 30 else DIAS_HABILES( comis.fecha_regreso, $dias_alerta) end,'Month','nls_date_language=spanish')) 
|| ' de ' || trim(to_char( case when COM.INTERRUPCION is not null then comis.fecha_salida + 30 else DIAS_HABILES( comis.fecha_regreso, $dias_alerta) end,'yyyy')) AS FECHA_DIAS_TEXTO,

case when COM.INTERRUPCION is not null then 'SI' else 'NO' end as estado_interruccion,
resol.resolucion,
prrpc.ID as ID_PR_RP_COMIS,
prrpc.FECHA_PROCESO as FECHA_REGISTRO,
prrpc.ID_TERCERO,
comis.id_comision,
terv.tipter,
comis.nitocc,
terv.razsoc,
terv.email,
to_char(comis.fecha_salida, 'dd-mm-yyyy') as fecha_salida,
comis.dias,
comis.dias as dias_comision,
to_char(comis.fecha_regreso, 'dd-mm-yyyy') as fecha_regreso,
comis.nitocc_jefe,
terv_jefe.razsoc as razon_soc_jefe,
terv_jefe.email as email_jefe,
com.* ,
tipco.DESCOMI as DESCOMI

from COMISIONES com

JOIN TIPOS_COMISION tipco ON com.TIPCOMI = tipco.TIPCOMI

left join(
    select 
    cont.* 
    from comisionados_contrato cont
    union
    select 
    plant.* 
    from comisionados_planta plant
)comis
on comis.vigencia = com.vigencia
and comis.id_comision = com.id

left join terceros terv on terv.nitocc = to_char(comis.nitocc)

left join terceros terv_jefe on terv_jefe.nitocc = to_char(comis.nitocc_jefe)

left join PR_RP_COMIS prrpc
ON prrpc.vigencia = com.vigencia 
AND prrpc.id_comision = com.id
AND prrpc.id_tercero = comis.nitocc

left join pr_resol_comis resol
on resol.id_comision = com.id
and resol.vigencia = com.vigencia
AND resol.id_vigencia = prrpc.id_vigencia
AND resol.tipo_comisionado != terv.tipter

left join (
  SELECT
   aut.*,
   ROW_NUMBER() OVER (
    partition by aut.id_rp_comis, aut.id_vigencia, aut.vigencia
    ORDER BY aut.id_rp_comis, aut.id_vigencia, aut.vigencia, aut.id_tipo_nov_comis desc
   ) AS rn
  from pr_cierre_comision aut
)cie
on cie.id_rp_comis = prrpc.id
and cie.id_vigencia = prrpc.id_vigencia
and cie.vigencia = prrpc.vigencia

where
com.estado = 1 --activas
and com.activo = 0 --cerradas
and com.vigencia in ( to_char(sysdate,'yyyy') , to_char(sysdate,'yyyy')-1 ) 
and comis.nitocc is not null

--filtro de fecha
--and trunc(DIAS_HABILES( comis.fecha_regreso, $dias_alerta)) = dias_habiles( trunc(sysdate) , 1)
and 
case when COM.INTERRUPCION is not null 
then comis.fecha_salida + 30
else trunc(DIAS_HABILES( comis.fecha_regreso, $dias_alerta)) 
end = dias_habiles( trunc(sysdate) , 1)

and cie.rn is null
and prrpc.ID is not null -- Incidente #4711 Solo para comisiones con RP
and prrpc.estado != -1 -- Incidente #4711 Solo RP activos

order by
comis.fecha_regreso desc,
com.id desc 
EOD;
        //$custom_logger->info($sql);
        $result = SqlTablePeer::executeOCI_SQL_List_Task($sql);
        /*
          $con = Propel::getConnection();
          $sentencia = $con->prepareStatement($sql);
          $result = $sentencia->executeQuery(); */

        $custom_logger->info("[envioAlertasTask] INICIO-Alerta 1\n");
        foreach ($result as $value) {

            $resolucion = $value['RESOLUCION'];
            $id_comision = $value['ID_COMISION'];
            $estado_interruccion = $value['ESTADO_INTERRUCCION'];
            $id_pr_rp_comis = $value['ID_PR_RP_COMIS'];
            $objetivo = $value['OBJETIVO'];
            $dias_comision = $value['DIAS_COMISION'];
            $fecha_salida = $value['FECHA_SALIDA'];
            $fecha_regreso = $value['FECHA_REGRESO'];
            $fecha_dias_texto = $value['FECHA_DIAS_TEXTO'];

            $nitocc = $value['NITOCC'];
            $razon_soc = $records['RAZSOC'];
            $email = $value['EMAIL'];
            $nitocc_jefe = $value['NITOCC_JEFE'];
            $email_jefe = $value['EMAIL_JEFE'];

            $subject = "RECORDATORIO LEGALIZACIÓN DE COMISIÓN Y/O DESPLAZAMIENTO";
            $from = "Comisiones";

            $custom_logger->info("[envioAlertasTask] Tercero::$nitocc\n");
            if (is_null($email_jefe)) {
                $address = array(
                    '0' => array(
                        'username' => $nitocc,
                        'correo' => 'websafi@sgc.gov.co'
                    )
                );
            } else {
                $custom_logger->info("[envioAlertasTask] Entro con jefe inmediato::$nitocc_jefe\n");
                $address = array(
                    '0' => array(
                        'username' => $nitocc,
                        'correo' => 'websafi@sgc.gov.co'
                    )
                );
            }


            $body = <<<EOD
<html><body>                     
Buen día,<br/>
<br/>
Señor(a)<br/>
$razon_soc<br/>
<br/>
<br/><br/>    
La comisión y/o desplazamiento que se relaciona a continuación términa el día de mañana y se debe legalizar a más tardar 
el día $fecha_dias_texto (quinto día hábil siguiente del regreso a la sede habitual) y radicarse en la Unidad de Recursos Financieros.
Presupuesto General de la Nación (PGN). 
<br/><br/>                    
<b>No. Resolución:</b> $resolucion<br/>
<b>No. Comisión:</b> $id_comision<br/>             
<b>Comisión y/o desplazamiento con Interrupcion:</b> $estado_interruccion<br/>
<b>No. RP:</b> $id_pr_rp_comis<br/>
<b>Objeto de la comisión y/o desplazamiento:</b> $objetivo<br/>
<b>Días de Comisión:</b> $dias_comision<br/>
<b>Fecha de Salida:</b> $fecha_salida<br/>
<b>Fecha de Regreso:</b> $fecha_regreso<br/>
<br/><br/> 
</body></html>                    
EOD;

            $return = SqlTablePeer::envioEmailTaks($subject, $from, $address, $body, true, null, null);
        }
        $custom_logger->info("[envioAlertasTask] FIN-Alerta 1\n");

        /**
         * ALERTA 2 :: Inplementar Alerta de legalización de Comisión en la siguiente circunstancia:
         * El día en que se vence el plazo para legalizar. (quinto día hábil siguiente del 
         * regreso a la sede habitual de trabajo)
         */
        $sql = <<<EOD
select
case when cie.rn is not null then 'Legalizado' else 'Pendiente' end as estado_leg,

case when COM.INTERRUPCION is not null 
then comis.fecha_salida + 30 
else DIAS_HABILES( comis.fecha_regreso, $dias_alerta) end as fecha_dias,
comis.fecha_salida + 30  as fecha_a,
DIAS_HABILES( comis.fecha_regreso, $dias_alerta)  as fecha_b,

trim(to_char( case when COM.INTERRUPCION is not null then comis.fecha_salida + 30 else DIAS_HABILES( comis.fecha_regreso, $dias_alerta) end,'dd')) 
|| ' de ' || trim(to_char( case when COM.INTERRUPCION is not null then comis.fecha_salida + 30 else DIAS_HABILES( comis.fecha_regreso, $dias_alerta) end,'Month','nls_date_language=spanish')) 
|| ' de ' || trim(to_char( case when COM.INTERRUPCION is not null then comis.fecha_salida + 30 else DIAS_HABILES( comis.fecha_regreso, $dias_alerta) end,'yyyy')) AS FECHA_DIAS_TEXTO,

case when COM.INTERRUPCION is not null then 'SI' else 'NO' end as estado_interruccion,
resol.resolucion,
prrpc.ID as ID_PR_RP_COMIS,
prrpc.FECHA_PROCESO as FECHA_REGISTRO,
prrpc.ID_TERCERO,
comis.id_comision,
terv.tipter,
comis.nitocc,
terv.razsoc,
terv.email,
to_char(comis.fecha_salida, 'dd-mm-yyyy') as fecha_salida,
comis.dias,
comis.dias as dias_comision,
to_char(comis.fecha_regreso, 'dd-mm-yyyy') as fecha_regreso,
comis.nitocc_jefe,
terv_jefe.razsoc as razon_soc_jefe,
terv_jefe.email as email_jefe,
com.* ,
tipco.DESCOMI as DESCOMI

from COMISIONES com

JOIN TIPOS_COMISION tipco ON com.TIPCOMI = tipco.TIPCOMI

left join(
    select 
    cont.* 
    from comisionados_contrato cont
    union
    select 
    plant.* 
    from comisionados_planta plant
)comis
on comis.vigencia = com.vigencia
and comis.id_comision = com.id

left join terceros terv on terv.nitocc = to_char(comis.nitocc)

left join terceros terv_jefe on terv_jefe.nitocc = to_char(comis.nitocc_jefe)

left join PR_RP_COMIS prrpc
ON prrpc.vigencia = com.vigencia 
AND prrpc.id_comision = com.id
AND prrpc.id_tercero = comis.nitocc

left join pr_resol_comis resol
on resol.id_comision = com.id
and resol.vigencia = com.vigencia
AND resol.id_vigencia = prrpc.id_vigencia
AND resol.tipo_comisionado != terv.tipter

left join (
  SELECT
   aut.*,
   ROW_NUMBER() OVER (
    partition by aut.id_rp_comis, aut.id_vigencia, aut.vigencia
    ORDER BY aut.id_rp_comis, aut.id_vigencia, aut.vigencia, aut.id_tipo_nov_comis desc
   ) AS rn
  from pr_cierre_comision aut
)cie
on cie.id_rp_comis = prrpc.id
and cie.id_vigencia = prrpc.id_vigencia
and cie.vigencia = prrpc.vigencia

where
com.estado = 1 --activas
and com.activo = 0 --cerradas
and com.vigencia in ( to_char(sysdate,'yyyy') , to_char(sysdate,'yyyy')-1 ) 
and comis.nitocc is not null

--filtro de fecha
--and trunc(DIAS_HABILES( comis.fecha_regreso, $dias_alerta)) = trunc(sysdate)
and 
case when COM.INTERRUPCION is not null 
then comis.fecha_salida + 30
else trunc(DIAS_HABILES( comis.fecha_regreso, $dias_alerta)) 
end = trunc(sysdate) 

and cie.rn is null
and prrpc.ID is not null -- Incidente #4711 Solo para comisiones con RP
and prrpc.estado != -1 -- Incidente #4711 Solo RP activos

order by
comis.fecha_regreso desc,
com.id desc 
EOD;
        //$custom_logger->info($sql);
        $result = SqlTablePeer::executeOCI_SQL_List_Task($sql);
        /*
          $con = Propel::getConnection();
          $sentencia = $con->prepareStatement($sql);
          $result = $sentencia->executeQuery(); */

        $custom_logger->info("[envioAlertasTask] INICIO-Alerta 2\n");
        foreach ($result as $value) {

            $resolucion = $value['RESOLUCION'];
            $id_comision = $value['ID_COMISION'];
            $estado_interruccion = $value['ESTADO_INTERRUCCION'];
            $id_pr_rp_comis = $value['ID_PR_RP_COMIS'];
            $objetivo = $value['OBJETIVO'];
            $dias_comision = $value['DIAS_COMISION'];
            $fecha_salida = $value['FECHA_SALIDA'];
            $fecha_regreso = $value['FECHA_REGRESO'];
            $fecha_dias_texto = $value['FECHA_DIAS_TEXTO'];

            $nitocc = $value['NITOCC'];
            $razon_soc = $records['RAZSOC'];
            $email = $value['EMAIL'];
            $nitocc_jefe = $value['NITOCC_JEFE'];
            $email_jefe = $value['EMAIL_JEFE'];

            $subject = "URGENTE LEGALIZACIÓN DE COMISIÓN Y/O DESPLAZAMIENTO";
            $from = "Comisiones";

            $custom_logger->info("[envioAlertasTask] Tercero::$nitocc\n");
            if (is_null($email_jefe)) {
                $address = array(
                    '0' => array(
                        'username' => $nitocc,
                        'correo' => $email
                    )
                );
            } else {
                $custom_logger->info("[envioAlertasTask] Entro con jefe inmediato::$nitocc_jefe\n");
                $address = array(
                    '0' => array(
                        'username' => $nitocc,
                        'correo' => $email
                    ),
                    '1' => array(
                        'username' => $nitocc_jefe,
                        'correo' => $email_jefe
                    )
                );
            }



            $body = <<<EOD
<html><body>                     
Buen día,<br/>
<br/>
Señor(a)<br/>
$razon_soc<br/>
<br/>
<br/><br/>   
Hoy vence el plazo para legalizar la comisión y/o desplazamiento que se relaciona a continuación, 
la cual debe ser radicada en la Unidad de Recursos Financieros.                    
Presupuesto General de la Nación (PGN). 
<br/><br/>                    
<b>No. Resolución:</b> $resolucion<br/>
<b>No. Comisión:</b> $id_comision<br/>             
<b>Comisión y/o desplazamiento con Interrupcion:</b> $estado_interruccion<br/>
<b>No. RP:</b> $id_pr_rp_comis<br/>
<b>Objeto de la comisión y/o desplazamiento:</b> $objetivo<br/>
<b>Días de Comisión:</b> $dias_comision<br/>
<b>Fecha de Salida:</b> $fecha_salida<br/>
<b>Fecha de Regreso:</b> $fecha_regreso<br/>
<br/><br/> 
</body></html>                    
EOD;

            //$return = SqlTablePeer::envioEmailTaks($subject, $from, $address, $body, true, null, null);
        }
        $custom_logger->info("[envioAlertasTask] FIN-Alerta 2\n");
        
        /**
         * ALERTA 3 :: Al día siguiente de vencerse el término para legalizar. (1 día hábil después de la segunda alerta).
         */
        $sql = <<<EOD
select
case when cie.rn is not null then 'Legalizado' else 'Pendiente' end as estado_leg,

case when COM.INTERRUPCION is not null 
then comis.fecha_salida + 30 
else DIAS_HABILES( comis.fecha_regreso, $dias_alerta) end as fecha_dias,
comis.fecha_salida + 30  as fecha_a,
DIAS_HABILES( comis.fecha_regreso, $dias_alerta)  as fecha_b,

trim(to_char( case when COM.INTERRUPCION is not null then comis.fecha_salida + 30 else DIAS_HABILES( comis.fecha_regreso, $dias_alerta) end,'dd')) 
|| ' de ' || trim(to_char( case when COM.INTERRUPCION is not null then comis.fecha_salida + 30 else DIAS_HABILES( comis.fecha_regreso, $dias_alerta) end,'Month','nls_date_language=spanish')) 
|| ' de ' || trim(to_char( case when COM.INTERRUPCION is not null then comis.fecha_salida + 30 else DIAS_HABILES( comis.fecha_regreso, $dias_alerta) end,'yyyy')) AS FECHA_DIAS_TEXTO,

case when COM.INTERRUPCION is not null then 'SI' else 'NO' end as estado_interruccion,
resol.resolucion,
prrpc.ID as ID_PR_RP_COMIS,
prrpc.FECHA_PROCESO as FECHA_REGISTRO,
prrpc.ID_TERCERO,
comis.id_comision,
terv.tipter,
comis.nitocc,
terv.razsoc,
terv.email,
to_char(comis.fecha_salida, 'dd-mm-yyyy') as fecha_salida,
comis.dias,
comis.dias as dias_comision,
to_char(comis.fecha_regreso, 'dd-mm-yyyy') as fecha_regreso,
comis.nitocc_jefe,
terv_jefe.razsoc as razon_soc_jefe,
terv_jefe.email as email_jefe,
com.* ,
tipco.DESCOMI as DESCOMI

from COMISIONES com

JOIN TIPOS_COMISION tipco ON com.TIPCOMI = tipco.TIPCOMI

left join(
    select 
    cont.* 
    from comisionados_contrato cont
    union
    select 
    plant.* 
    from comisionados_planta plant
)comis
on comis.vigencia = com.vigencia
and comis.id_comision = com.id

left join terceros terv on terv.nitocc = to_char(comis.nitocc)

left join terceros terv_jefe on terv_jefe.nitocc = to_char(comis.nitocc_jefe)

left join PR_RP_COMIS prrpc
ON prrpc.vigencia = com.vigencia 
AND prrpc.id_comision = com.id
AND prrpc.id_tercero = comis.nitocc

left join pr_resol_comis resol
on resol.id_comision = com.id
and resol.vigencia = com.vigencia
AND resol.id_vigencia = prrpc.id_vigencia
AND resol.tipo_comisionado != terv.tipter

left join (
  SELECT
   aut.*,
   ROW_NUMBER() OVER (
    partition by aut.id_rp_comis, aut.id_vigencia, aut.vigencia
    ORDER BY aut.id_rp_comis, aut.id_vigencia, aut.vigencia, aut.id_tipo_nov_comis desc
   ) AS rn
  from pr_cierre_comision aut
)cie
on cie.id_rp_comis = prrpc.id
and cie.id_vigencia = prrpc.id_vigencia
and cie.vigencia = prrpc.vigencia

where
com.estado = 1 --activas
and com.activo = 0 --cerradas
and com.vigencia in ( to_char(sysdate,'yyyy') , to_char(sysdate,'yyyy')-1 ) 
and comis.nitocc is not null

--filtro de fecha
--and dias_habiles( trunc(dias_habiles( comis.fecha_regreso, $dias_alerta)) , 1) =  trunc(sysdate) 
and 
case when COM.INTERRUPCION is not null 
then dias_habiles( (comis.fecha_salida + 30) ,1)
else dias_habiles( trunc(dias_habiles( comis.fecha_regreso, $dias_alerta)) , 1)  
end = trunc(sysdate)  

and cie.rn is null
and prrpc.ID is not null -- Incidente #4711 Solo para comisiones con RP
and prrpc.estado != -1 -- Incidente #4711 Solo RP activos

order by
comis.fecha_regreso desc,
com.id desc 
EOD;
        //$custom_logger->info($sql);
        $result = SqlTablePeer::executeOCI_SQL_List_Task($sql);
        /*
          $con = Propel::getConnection();
          $sentencia = $con->prepareStatement($sql);
          $result = $sentencia->executeQuery(); */

        $custom_logger->info("[envioAlertasTask] INICIO-Alerta 3\n");
        foreach ($result as $value) {

            $resolucion = $value['RESOLUCION'];
            $id_comision = $value['ID_COMISION'];
            $estado_interruccion = $value['ESTADO_INTERRUCCION'];
            $id_pr_rp_comis = $value['ID_PR_RP_COMIS'];
            $objetivo = $value['OBJETIVO'];
            $dias_comision = $value['DIAS_COMISION'];
            $fecha_salida = $value['FECHA_SALIDA'];
            $fecha_regreso = $value['FECHA_REGRESO'];
            $fecha_dias_texto = $value['FECHA_DIAS_TEXTO'];

            $nitocc = $value['NITOCC'];
            $razon_soc = $records['RAZSOC'];
            $email = $value['EMAIL'];
            $nitocc_jefe = $value['NITOCC_JEFE'];
            $email_jefe = $value['EMAIL_JEFE'];

            $subject = "INCUMPLIMIENTO EN LEGALIZACIÓN";
            $from = "Comisiones";

            $custom_logger->info("[envioAlertasTask] Tercero::$nitocc\n");
            if (is_null($email_jefe)) {
                $address = array(
                    '0' => array(
                        'username' => $nitocc,
                        'correo' => $email
                    )
                );
            } else {
                $custom_logger->info("[envioAlertasTask] Entro con jefe inmediato::$nitocc_jefe\n");
                $address = array(
                    '0' => array(
                        'username' => $nitocc,
                        'correo' => $email
                    ),
                    '1' => array(
                        'username' => $nitocc_jefe,
                        'correo' => $email_jefe
                    )
                );
            }


            $body = <<<EOD
<html><body>                     
<html><body>                     
Buen día,<br/>
<br/>
Señor(a)<br/>
$razon_soc<br/>
<br/>
<br/><br/>     
De acuerdo con el Artículo 16° de la Resolución D-297 del 25 de junio de 2015, la legalización de la comisión que se relaciona 
a continuación debió realizarse dentro de los cinco ($dias_alerta) días hábiles siguientes al regreso a la sede habitual de trabajo y 
entregarse a la Unidad de Recursos Financieros.
<br/><br/>
El incumplimiento del plazo de legalización previsto en este artículo será reportado por la Unidad de Recursos Financieros 
a la Oficina de Control Interno y a la Secretaría General.
<br/><br/>                    
<b>No. Resolución:</b> $resolucion<br/>
<b>No. Comisión:</b> $id_comision<br/>             
<b>Comisión y/o desplazamiento con Interrupcion:</b> $estado_interruccion<br/>
<b>No. RP:</b> $id_pr_rp_comis<br/>
<b>Objeto de la comisión y/o desplazamiento:</b> $objetivo<br/>
<b>Días de Comisión:</b> $dias_comision<br/>
<b>Fecha de Salida:</b> $fecha_salida<br/>
<b>Fecha de Regreso:</b> $fecha_regreso<br/>
<br/><br/> 
</body></html>                    
EOD;

            //$return = SqlTablePeer::envioEmailTaks($subject, $from, $address, $body, true, null, null);
        }
        $custom_logger->info("[envioAlertasTask] FIN-Alerta 3\n");


        $custom_logger->info("[*********************] Despues de envioEmails\n");
    }

    /**
     * Metodo de envio de correo 
     * 
     * @param type $subject
     * @param type $from
     * @param type $address
     * @param type $body
     * @param type $ruta
     * @param type $attachment
     * @return boolean
     */
//    public static function envioEmail($subject, $from, $address, $body, $addReplyTo = false, $ruta = null, $attachment = null) {
//
//
//
//        $logPath = sfConfig::get('sf_log_dir') . '/alertas.log';
//        $custom_logger = new sfFileLogger(new sfEventDispatcher(), array('file' => $logPath));
//        $custom_logger->info("The [alarmas:envioCorreo|INFO] Metodo de envio correo alarmas.\n");
//
//        //echo "subject::".$subject;
//        //die();
//
//
//        /*
//         * Variables globales del proyecto
//         */
//        $array = sfYaml::load(dirname(__FILE__) . '/../../apps/frontend/config/app.yml');
//        $custom_logger->info("dirname:: \n" . dirname(__FILE__) . '/../phpmailer/class.pop3.php');
//        foreach ($array as $routeName => $routeData) {
//            foreach ($routeData as $keyData => $valueData) {
//                foreach ($valueData as $key => $value) {
//                    $custom_logger->info($key . "::val::" . $value);
//                    if ($key == 'sMTPSecure') {
//                        $sMTPSecure = $value;
//                    }
//                    if ($key == 'host') {
//                        $host = $value;
//                    }
//                    if ($key == 'sMTPAuth') {
//                        $sMTPAuth = $value;
//                    }
//                    if ($key == 'port') {
//                        $port = $value;
//                    }
//                    if ($key == 'username') {
//                        $username = $value;
//                    }
//                    if ($key == 'password') {
//                        $password = $value;
//                    }
//                    if ($key == 'email_envio') {
//                        $email_envio = $value;
//                    }
//                }
//            }
//        }
//
//        $custom_logger->info("sMTPSecure::" . $sMTPSecure);
//        $custom_logger->info("host::" . $host);
//        $custom_logger->info("sMTPAuth::" . $sMTPAuth);
//        $custom_logger->info("port::" . $port);
//        $custom_logger->info("username::" . $username);
//        $custom_logger->info("password::" . $password);
//        $custom_logger->info("email_envio::" . $email_envio);
//        //die();
//
//        /**
//         * PHPMailer
//         */
//        // Instanciar PHPMailer una primera Vez
//        $mail = new PHPMailer(); // defaults to using php "mail()"
//        /*
//         * SGC
//         */
//        $mail->IsSMTP(); // telling the class to use SMTP
//        $mail->SMTPSecure = $sMTPSecure; //tsl o ssl
//        $mail->Host = $host;      // SMTP server
////            $mail->SMTPDebug  = 2;                     // enables SMTP debug information (for testing)
//        // 1 = errors and messages
//        // 2 = messages only
//        $mail->SMTPAuth = $sMTPAuth;                  // enable SMTP authentication
//        $mail->Port = $port;                    // set the SMTP port for the GMAIL server
//        $mail->Username = $username;              // SMTP account username
//        $mail->Password = $password;           // SMTP account password
//        $custom_logger->info($from . "::email_envio::" . $email_envio);
//        //$mail->SetFrom($email_envio, utf8_decode($from));
//        $mail->SetFrom("websafi@sgc.gov.co");
//        //$mail->From = "websafi@sgc.gov.co";
//
//
//        if ($addReplyTo) {
//            //$mail->AddReplyTo($email_envio, utf8_decode($from));
//            $mail->AddAddress($email_envio, utf8_decode($from));
//        }
//
//        $mail->Subject = $subject;
//
//        /**
//         * Recorre las direcciones de correo del array $address
//         */
//        foreach ($address as $value) {
//            //$mail->AddAddress("websafi@sgc.gov.co", "websafi");
//            $mail->AddAddress($value["correo"], $value["username"]);
//        }
//
//        $body_html = <<<EOD
//<html>
//    <body> 
//        $body<br/><br/>
//    </body>
//</html> 
//EOD;
//
//        //$mail->AltBody = "This is the body in plain text for non-HTML mail clients"; // optional, comment out and test
//
//        $mail->MsgHTML($body_html);
//
//        /*
//         * Valida que si tiene $ruta
//         */
//        if (!is_null($ruta)) {
//            //$mail->AddAttachment("$ruta/FacturaVenta$factura.pdf", "Factura.pdf");      // attachment
//            $mail->AddAttachment($ruta . $attachment, $attachment);      // attachment
//        }
//
//        /*
//         *  Enviar el correo
//         */
//        if (!$mail->Send()) {
//            $custom_logger->info("Mailer Error: " . $mail->ErrorInfo . "<br/>");
//            return false;
//        } else {
//            $custom_logger->info("Correo enviado");
//        }
//
//        /*
//         * Limpiar datos del correo
//         */
//        $mail->ClearAllRecipients();
//        $mail->ClearAttachments();
//
//        return true;
//    }
}
