<?php

/**
 * acta_inicio_estado actions.
 *
 * @package    radicacionVirtualCuentas
 * @subpackage acta_inicio_estado
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class acta_inicio_estadoActions extends sfActions
{
 /**
     * 
     * @param sfWebRequest $request
     */
    public function executeList(sfWebRequest $request) {

        //Revisar que sea post
        //$this->forward404Unless($request->isMethod('post'));
        //Guardar los parametros del request en el log
        $this->logMessage("---function executeUpdate");
        $this->logMessage("---BEGIN Logging request");

        $status = 0;
        $response = array();
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("--------------------------------------------------* Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");

        $records = array();

        /**
         * Abrir nueva conexion con la Base de Datos
         */
        $this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
        $this->conn->beginTransaction();

        /*
         * Formato de fecha
         */
        //Sql
        $sql = <<<EOD
ALTER SESSION SET NLS_DATE_FORMAT = "YYYY-MM-DD HH24:MI:SS" 
EOD;
        //Ejecutar SQL
        CN_TABLE::executeSQL($sql);

        try {

           
            if ($status == 0) {
                $this->conn->commit();
                $this->status = 0;
                $this->list_data = $response;
                $this->logMessage("[acta_inicio_estado] Exitoso");
            } else {
                $this->conn->rollback();
                $this->status = 1;
                $this->mensajeError = $mensaje;
                $this->list_data = array();
                $this->logMessage("[acta_inicio_estado] ERROR!");
                $this->logMessage($mensaje);
            }
        } catch (Exception $e) {

            /*
             * ROLLBACK DE TODAS LAS TRANSACCIONES EN CASO DE QUE OCURRA ALGUN ERROR
             */
            $this->conn->rollback();
            $this->status = 1;
            $this->mensajeError = "[acta_inicio_estado] Ocurrio un error: " . $e->getMessage();
            $this->list_data = array();
            $this->logMessage("[acta_inicio_estado] ERROR!");
            $this->logMessage($e->getMessage());
        }
    }

    /**
     * Actualizar el estado del formato de pago
     * tipo_boton
     * 1-Firmado
     * 2-Revisado
     * 3-Autorizado
     * 4-Radicado
     * 5-Rechazado
     * 6-Aprobado
     * 7-Reactivacion
     * 
     * tipo_trans
     * 1-Contratista
     * 2-Apoyo Supervisor
     * 3-Supervisor
     * 4-Financiera
     *
     * @param sfRequest $request A request object
     */
    public function executeUpdate(sfWebRequest $request) {

        //Revisar que sea post
        //$this->forward404Unless($request->isMethod('post'));
        //Guardar los parametros del request en el log
        $this->logMessage("---function executeUpdate");
        $this->logMessage("---BEGIN Logging request");

        $status = 0;
        $response = array();
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("--------------------------------------------------* Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");

        $records = array();

        /**
         * Abrir nueva conexion con la Base de Datos
         */
        $this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
        $this->conn->beginTransaction();

        /*
         * Formato de fecha
         */
        //Sql
        $sql = <<<EOD
ALTER SESSION SET NLS_DATE_FORMAT = "YYYY-MM-DD HH24:MI:SS" 
EOD;
        //Ejecutar SQL
        CN_TABLE::executeSQL($sql);

        try {

            /*
             * variables por defecto para el registro de log
             */
            $id_tabla = $request['id_acta_inicio'];

            /*
             * obtener id maestro tabla
             */
            $id_mae_bd = CN_TABLE::consultarIdTablaBD('RVC_ACTA_INICIO');

            /**
              1	CONSULTAR
              2	ACTUALIZAR
              3	ADICIONAR
              4	ELIMINAR
              5	ANULAR
             */
            $id_ope_bd = 2;

            //id del maestro tercero
            $id_mae_ter = 1;
            if (isset($request['id_username'])) {
                $id_mae_ter = $request['id_username'];
            }

            //username
            $username = 'admin';
            if (isset($request['username'])) {
                if (!is_null($request['username']) && $request['username'] != '') {
                    $username = $request['username'];
                }
            }

            //comando de la funcionalidad
            $comando = 'sin comando';
            if (isset($request['comando'])) {
                $comando = $request['comando'];
            }

            //construir observacion
            $observacion_log = "'Se actualizo tabla de acta_inicio desde la funcionalidad: " . $comando . "'";
            $subject = "";

            /*
             * registro de consulta en tabla de log
             */
            $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $id_mae_ter, $username, $comando, $observacion_log);


            /*
             * Variables de filtro
             */
            $tipo_boton = $request['tipo_boton'];
            $tipo_trans = $request['tipo_trans'];
            $id_acta_inicio = $request['id_acta_inicio'];
            $anho_completo = date('Y'); //anho completo cuatro digitos

            $usuario_estado = $request['username'];
            $fecha_estado = CN_TABLE::fechaSistema();

            $observaciones_estado = '';
            if (isset($request['observaciones'])) {
                $observaciones_estado = $request['observaciones'];
            }
            $num_contrato = '';
            if (isset($request['num_contrato'])) {
                $num_contrato = $request['num_contrato'];
            }
            /*
             * (SGC-1, ANM-2, SGR-3, CYC-4, COL-5, INCI-6, LOCAL-7)
             */
            $array = sfYaml::load(dirname(__FILE__) . '/../../../config/app-gwt.yml');

            $int = 0;
            foreach ($array as $routeName => $routeData) {
                //echo $routeName . "\n";
                if ('entidad_cliente' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $entidadCliente = $value;
                        }
                    }
                }
                if ('entidad_nombre' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $entidadNombre = $value;
                        }
                    }
                }
                if ('correoEnvio' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $correoEnvio = $value;
                        }
                    }
                }
                if ('jasper_url_local' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $url_jasper = $value;
                        }
                    }
                }
                $int++;
            }

            //Opcion segun boton
            switch ($tipo_boton) {
                //FIRMADO
                case 1:
                    //actualizar como contratista
                    $sql = <<<EOD
update rvc_acta_inicio 
set firmado_acta_ini = 1,
fecha_firmado_acta_ini = SYSDATE,
usuario_firmado_acta_ini = '$usuario_estado',
estado = 1
where
id_acta_inicio = $id_acta_inicio
--and estado = 1
EOD;
                    $this->conn->execute($sql);

                    /**
                     * Envio correo al apoyo si tiene, sino al supervisor
                     */
                    $this->logMessage("Envio correo al apoyo si tiene, sino al supervisor");
                    //Consulta datos envio correo
                    //Sql
                    $sql = <<<EOD
select 
acta.id_acta_inicio,
con.id_anhos,
con.num_contrato,
contra.id_tipo_doc,
contra.num_doc,
contra.razon_social,
contra.correo as correo,
'$correoEnvio' as email_envio,
'Observacion: '||acta.OBS_AUT_acta_ini as mensaje_extra,
'' as mensaje_firma,
'Se realiza la firma del acta de inicio del contrato '|| con.num_contrato ||' por el contratista '|| contra.num_doc||' '||contra.razon_social ||' del supervisor ' || tersup.num_doc ||' '|| tersup.razon_soc || '.' as mensaje,
--datos de envio
contra.num_doc as num_doc_env,
contra.id_tipo_doc as id_tipo_doc_env,
contra.razon_social as razon_social_env,
contra.correo as correo_env,
                            
--Datos correo apoyo
nvl(terapo.num_doc,'') as num_doc_apoyo,
nvl(terapo.id_tipo_doc,'') as id_tipo_doc_apoyo,
nvl(terapo.razon_soc,'') as razon_soc_apoyo,
nvl(apo.correo,'') as correo_apoyo,

--Datos correo supervisor
nvl(tersup.num_doc,'') as num_doc_sup,
nvl(tersup.id_tipo_doc,'') as id_tipo_doc_sup,
nvl(tersup.razon_soc,'') as razon_soc_sup,
nvl(sup.correo,'') as correo_sup,
'Fueron Notificados:</br>
El contratista '||contra.num_doc||' '||contra.razon_social||'</br>
El Apoyo al Supervisor: '|| case when terapo.num_doc is not null then terapo.razon_soc else 'No aplica' end ||'</br>' as mensaje_extra_sup
                            
from rvc_acta_inicio acta

left join rvc_contrato con
on acta.id_contrato = con.id_contrato

left join rvc_contratista contra
on acta.id_contratista = contra.id_contratista

left join rvc_apoyo_supervisor apo
on acta.id_apoyo_supervisor = apo.id_apoyo_supervisor

left join interceros_v terapo
on terapo.id_mae_ter = apo.id_mae_ter

left join rvc_supervisor sup
on acta.id_supervisor = sup.id_supervisor

left join interceros_v tersup
on tersup.id_mae_ter = sup.id_mae_ter

where
acta.id_acta_inicio = $id_acta_inicio  
EOD;
                    //Ejecutar SQL
                    $records = CN_TABLE::executeSQL($sql);

                    $this->logMessage("Envio correo");

                    if (count($records) > 0) {

                        $report_params = $records[0];
                        $num_contrato = $records[0]['num_contrato'];
                        $num_doc = $records[0]['num_doc'];

                        //Ejemplo de la persona que se envia el correo: 
                        //123;1;pepito perez;correo@gmal.com
                        $num_doc_env = $records[0]['num_doc_env'];
                        $id_tipo_doc_env = $records[0]['id_tipo_doc_env'];
                        $razon_social_env = $records[0]['razon_social_env'];
                        $correo_env = $records[0]['correo_env'];
                        //DATOS APOYO - 20180620
                        $num_doc_apo = $records[0]['num_doc_apoyo'];
                        $id_tipo_doc_apo = $records[0]['id_tipo_doc_apoyo'];
                        $razon_social_apo = $records[0]['razon_social_apoyo'];
                        $correo_apo = $records[0]['correo_apoyo'];
                        //DATOS SUPERVISOR - 20180620
                        $num_doc_sup = $records[0]['num_doc_sup'];
                        $id_tipo_doc_sup = $records[0]['id_tipo_doc_sup'];
                        $razon_social_sup = $records[0]['razon_social_sup'];
                        $correo_sup = $records[0]['correo_sup'];

                        $datos_usuario = array(
                            '0' => $num_doc_env . ';' . $id_tipo_doc_env . ';' . $razon_social_env . ';' . $correo_env
                        );

                        $subject = "Firmado - Acta Inicio Contrato por Contratista:" . $num_doc . " del Contrato:" . $num_contrato;
                        $currentUri = '';
                        $ruta = '';
                        $adjunto = false;
                        $progress_key = $request['comando'] . $request['username'];
                        $array_adjuntos = array();
                        $entidad_cliente = $entidadCliente;
                        $entidad_nombre = $entidadNombre;
                        $addAddress = true;

                        $this->logMessage("Subject: " . $subject);

                        //CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);


                        //ENVIAMOS CORREO A APOYO - 20180620
                        if ($num_doc_apo != '') {
                            $datos_usuario = array(
                                '0' => $num_doc_apo . ';' . $id_tipo_doc_apo . ';' . $razon_social_apo . ';' . $correo_apo
                            );

                            $this->logMessage("Envio Apoyo: " . $num_doc_apo);
                            CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                        }

                        //ENVIAMOS CORREO A Supervisor - 20180620
                        $mensaje_extra_sup = $records[0]['mensaje_extra_sup'];

                        $datos_usuario = array(
                            '0' => $num_doc_sup . ';' . $id_tipo_doc_sup . ';' . $razon_social_sup . ';' . $correo_sup . ';' . $mensaje_extra_sup
                        );

                        $this->logMessage("Envio supervisor: " . $num_doc_sup);
                        CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                    }

                    $this->logMessage("FIN Envio correo");

                    //construir observacion
                    $observacion_log = "'Acta Inicio Contrato firmado del proceso del asunto: " . $subject . "'";

                    /*
                     * registro de consulta en tabla de log
                     */
                    $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $id_mae_ter, $username, $comando, $observacion_log);

                    break;

                //AUTORIZADO
                case 3:

                    $CODIGOTIMELOG = CN_TABLE::codigoTimeLog();
                    $id_supervisor = $request['id_supervisor'];
                    $nombre_reporte = "$num_contrato-Acta_inicio_$CODIGOTIMELOG.pdf";

                    //actualizar como supervisor
                    $sql = <<<EOD
update rvc_acta_inicio 
set autorizado_acta_ini = 1,
fecha_autorizado_acta_ini = SYSDATE,
obs_aut_acta_ini = '$observaciones_estado',
usuario_aut_acta_ini = '$id_supervisor',
adjunto_firmado = '$nombre_reporte'                           
where
id_acta_inicio = $id_acta_inicio
and estado = 1
EOD;
                    $this->conn->execute($sql);

                    $this->conn->commit();

                    $this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
                    $this->conn->beginTransaction();

                    /**
                     * Generar PDF por Jasper - 20181211
                     */
                    $this->logMessage("Generar PDF por Jasper");
                    //$url = sfConfig::get('app-gwt_jasper_url');
                    //echo $url;
                    //$ch = curl_init("http://www.sofhouse.net/");
                    /*
                     * $ch = curl_init("http://soporte14.sofhouse.net/jasperphp/whereExecuteReportCartera.php
                     * ?uri=%2Freports%2Fcartera%2Fnota_credito&PARAM_id_credito=33960&PARAM_valor=181480&format=HTML");
                     */

                    //URL de envio inicio
                    $url = $url_jasper;
                    $url = $url . 'registro_acta_inicio&format=PDF&PARAM_id_mod=24&PARAM_username=websafi&PARAM_nitocc=800189921&PARAM_id_username=946';
                    $url = $url . '&PARAM_id_acta_inicio=' . $id_acta_inicio;
                    $url = $url . '&PARAM_id_anhos=' . $anho_completo;
                    $url = $url . '&PARAM_envio_correo=false&PARAM_tag_adjunto_modulo=true';
                    $url = $url . '&PARAM_nombre_reporte=' . str_replace(' ', ':', $nombre_reporte);

                    $this->logMessage($url);
                    $ch = curl_init($url);

                    //Parametros de retorno en cURL
                    curl_setopt($ch, CURLOPT_HEADER, 0);
                    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
                    //Ejecuta la petición
                    $rta = curl_exec($ch);
                    //Se cierra la conexión
                    curl_close($ch);

//                $arrayRespuesta = json_decode($rta, true);
                    //Verifica el status, si es diferente de 0, ocurrio un error 
//                if ($arrayRespuesta['response']['status'] != 0) {
//                    $this->logMessage("[Error] Me llamo desde el CURL");
                    //echo "<h3>Me llamo desde el cURL</h3>";
//              $mensaje=$arrayRespuesta['response']['data'];
//              $this->status = 3;
//              $a = $mensaje[0]['mensaje'];
//              $b = htmlspecialchars($a, ENT_QUOTES);
//              $this->mensajeError = $b;
//              $this->list_data = array();
//                }
                    //URL de envio se limpia
                    $url = '';
                    /*
                     * FIN Generacion de PDFs
                     */


                    /**
                     * Envio correo al apoyo si tiene, sino al supervisor
                     */
                    $this->logMessage("Envio correo al contratista");
                    //Consulta datos envio correo
                    //Sql
                    $sql = <<<EOD
select 
acta.id_acta_inicio,
con.id_anhos,
con.num_contrato,
contra.id_tipo_doc,
contra.num_doc,
contra.razon_social,
contra.correo as correo,
'$correoEnvio' as email_envio,
'Observacion: '||acta.OBS_AUT_acta_ini as mensaje_extra,
'' as mensaje_firma,
'Se realiza la autorización del Acta de Inicio del contrato '|| con.num_contrato ||' asignado al contratista '|| contra.num_doc||' '||contra.razon_social ||' por el supervisor ' || tersup.num_doc ||' '|| tersup.razon_soc || '.' as mensaje,
--datos de envio
contra.num_doc as num_doc_env,
contra.id_tipo_doc as id_tipo_doc_env,
contra.razon_social as razon_social_env,
contra.correo as correo_env,
                            
--Datos correo apoyo
nvl(terapo.num_doc,'') as num_doc_apoyo,
nvl(terapo.id_tipo_doc,'') as id_tipo_doc_apoyo,
nvl(terapo.razon_soc,'') as razon_soc_apoyo,
nvl(apo.correo,'') as correo_apoyo,

--Datos correo supervisor
nvl(tersup.num_doc,'') as num_doc_sup,
nvl(tersup.id_tipo_doc,'') as id_tipo_doc_sup,
nvl(tersup.razon_soc,'') as razon_soc_sup,
nvl(sup.correo,'') as correo_sup,
'Fueron Notificados:</br>
El contratista '||contra.num_doc||' '||contra.razon_social||'</br>
El Apoyo al Supervisor: '|| case when terapo.num_doc is not null then terapo.razon_soc else 'No aplica' end ||'</br>' as mensaje_extra_sup
                            
from rvc_acta_inicio acta

left join rvc_contrato con
on acta.id_contrato = con.id_contrato

left join rvc_contratista contra
on acta.id_contratista = contra.id_contratista

left join rvc_apoyo_supervisor apo
on acta.id_apoyo_supervisor = apo.id_apoyo_supervisor

left join interceros_v terapo
on terapo.id_mae_ter = apo.id_mae_ter

left join rvc_supervisor sup
on acta.id_supervisor = sup.id_supervisor

left join interceros_v tersup
on tersup.id_mae_ter = sup.id_mae_ter

where
acta.id_acta_inicio = $id_acta_inicio  
EOD;
                    //Ejecutar SQL
                    $records = CN_TABLE::executeSQL($sql);

                    $this->logMessage("Envio correo");

                    if (count($records) > 0) {

                        $report_params = $records[0];
                        $num_contrato = $records[0]['num_contrato'];
                        $num_doc = $records[0]['num_doc'];
                        $mensaje_extra = $records[0]['mensaje_extra'];

                        //Ejemplo de la persona que se envia el correo: 
                        //123;1;pepito perez;correo@gmal.com
                        $num_doc_env = $records[0]['num_doc_env'];
                        $id_tipo_doc_env = $records[0]['id_tipo_doc_env'];
                        $razon_social_env = $records[0]['razon_social_env'];
                        $correo_env = $records[0]['correo_env'];
                        //DATOS APOYO - 20180620
                        $num_doc_apo = $records[0]['num_doc_apoyo'];
                        $id_tipo_doc_apo = $records[0]['id_tipo_doc_apoyo'];
                        $razon_social_apo = $records[0]['razon_social_apoyo'];
                        $correo_apo = $records[0]['correo_apoyo'];
                        //DATOS SUPERVISOR - 20180620
                        $num_doc_sup = $records[0]['num_doc_sup'];
                        $id_tipo_doc_sup = $records[0]['id_tipo_doc_sup'];
                        $razon_social_sup = $records[0]['razon_social_sup'];
                        $correo_sup = $records[0]['correo_sup'];

                        $datos_usuario = array(
                            '0' => $num_doc_env . ';' . $id_tipo_doc_env . ';' . $razon_social_env . ';' . $correo_env . ';' . $mensaje_extra
                        );

                        $subject = "Autorizado - Acta de Inicio por Supervisor:" . $num_doc . " del Contrato:" . $num_contrato;
                        $currentUri = '';
                        $ruta = getcwd() . "/uploads/acta_inicio";
                        $adjunto = true;
                        $progress_key = $request['comando'] . $request['username'];
                        $array_adjuntos = array(
                            $nombre_reporte => $nombre_reporte
                        );
                        $entidad_cliente = $entidadCliente;
                        $entidad_nombre = $entidadNombre;
                        $addAddress = true;

                        $this->logMessage("Subject: " . $subject);

                        CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);


                        //ENVIAMOS CORREO A APOYO - 20180620
                        if ($num_doc_apo != '') {
                            $datos_usuario = array(
                                '0' => $num_doc_apo . ';' . $id_tipo_doc_apo . ';' . $razon_social_apo . ';' . $correo_apo . ';' . $mensaje_extra
                            );

                            $this->logMessage("Envio Apoyo: " . $num_doc_apo);
                            CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                        }

                        //ENVIAMOS CORREO A Supervisor - 20180620
                        $mensaje_extra_sup = $records[0]['mensaje_extra_sup'];

                        //Se deja copia a luz.zapata@anm.gov.co, maria.peralta@anm.gov.co y yenny.saavedra@anm.gov.co
                        $datos_usuario = array(
                            '0' => $num_doc_sup . ';' . $id_tipo_doc_sup . ';' . $razon_social_sup . ';' . $correo_sup . ';' . $mensaje_extra_sup,
                            '1' => '0' . ';' . $id_tipo_doc_sup . ';' . 'CONTRATACION' . ';' . 'contratacion@anm.gov.co'
                        );

                        $this->logMessage("Envio supervisor: " . $num_doc_sup);
                        CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                    }

                    $this->logMessage("FIN Envio correo");

                    //construir observacion
                    $observacion_log = "'Acta Inicio autorizado del proceso del asunto: " . $subject . "'";

                    /*
                     * registro de consulta en tabla de log
                     */
                    $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $id_mae_ter, $username, $comando, $observacion_log);

                    break;
                //RECHAZADO
                case 5:

                    $id_supervisor = $request['id_supervisor'];
                    //$nombre_reporte = "Balance de Contrato.pdf";

                    //actualizar como supervisor
                    $sql = <<<EOD
update rvc_acta_inicio 
set estado = 0,
fecha_estado = SYSDATE,
observaciones_estado = '$observaciones_estado',
usuario_estado = '$id_supervisor',
firmado_acta_ini = 0,
autorizado_acta_ini = 0                            
where
id_acta_inicio = $id_acta_inicio
and estado = 1
EOD;
                    $this->conn->execute($sql);

                    $this->conn->commit();

                    $this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
                    $this->conn->beginTransaction();

                    /**
                     * Envio correo al apoyo si tiene, sino al supervisor
                     */
                    $this->logMessage("Envio correo al contratista");
                    //Consulta datos envio correo
                    //Sql
                    $sql = <<<EOD
select 
acta.id_acta_inicio,
con.id_anhos,
con.num_contrato,
contra.id_tipo_doc,
contra.num_doc,
contra.razon_social,
contra.correo as correo,
'$correoEnvio' as email_envio,
'Observacion: '||acta.observaciones_estado as mensaje_extra,
'' as mensaje_firma,
'Se Rechazo el Acta de Inicio del contrato '|| con.num_contrato ||' asignado al contratista '|| contra.num_doc||' '||contra.razon_social ||' por el supervisor ' || tersup.num_doc ||' '|| tersup.razon_soc || '.' as mensaje,
--datos de envio
contra.num_doc as num_doc_env,
contra.id_tipo_doc as id_tipo_doc_env,
contra.razon_social as razon_social_env,
contra.correo as correo_env,
                            
--Datos correo apoyo
nvl(terapo.num_doc,'') as num_doc_apoyo,
nvl(terapo.id_tipo_doc,'') as id_tipo_doc_apoyo,
nvl(terapo.razon_soc,'') as razon_soc_apoyo,
nvl(apo.correo,'') as correo_apoyo,

--Datos correo supervisor
nvl(tersup.num_doc,'') as num_doc_sup,
nvl(tersup.id_tipo_doc,'') as id_tipo_doc_sup,
nvl(tersup.razon_soc,'') as razon_soc_sup,
nvl(sup.correo,'') as correo_sup,
'Fueron Notificados:</br>
El contratista '||contra.num_doc||' '||contra.razon_social||'</br>
El Apoyo al Supervisor: '|| case when terapo.num_doc is not null then terapo.razon_soc else 'No aplica' end ||'</br>' as mensaje_extra_sup
                            
from rvc_acta_inicio acta

left join rvc_contrato con
on acta.id_contrato = con.id_contrato

left join rvc_contratista contra
on acta.id_contratista = contra.id_contratista

left join rvc_apoyo_supervisor apo
on acta.id_apoyo_supervisor = apo.id_apoyo_supervisor

left join interceros_v terapo
on terapo.id_mae_ter = apo.id_mae_ter

left join rvc_supervisor sup
on acta.id_supervisor = sup.id_supervisor

left join interceros_v tersup
on tersup.id_mae_ter = sup.id_mae_ter

where
acta.id_acta_inicio = $id_acta_inicio  
EOD;
                    //Ejecutar SQL
                    $records = CN_TABLE::executeSQL($sql);

                    $this->logMessage("Envio correo");

                    if (count($records) > 0) {

                        $report_params = $records[0];
                        $num_contrato = $records[0]['num_contrato'];
                        $num_doc = $records[0]['num_doc'];
                        $mensaje_extra = $records[0]['mensaje_extra'];

                        //Ejemplo de la persona que se envia el correo: 
                        //123;1;pepito perez;correo@gmal.com
                        $num_doc_env = $records[0]['num_doc_env'];
                        $id_tipo_doc_env = $records[0]['id_tipo_doc_env'];
                        $razon_social_env = $records[0]['razon_social_env'];
                        $correo_env = $records[0]['correo_env'];
                        //DATOS APOYO - 20180620
                        $num_doc_apo = $records[0]['num_doc_apoyo'];
                        $id_tipo_doc_apo = $records[0]['id_tipo_doc_apoyo'];
                        $razon_social_apo = $records[0]['razon_social_apoyo'];
                        $correo_apo = $records[0]['correo_apoyo'];
                        //DATOS SUPERVISOR - 20180620
                        $num_doc_sup = $records[0]['num_doc_sup'];
                        $id_tipo_doc_sup = $records[0]['id_tipo_doc_sup'];
                        $razon_social_sup = $records[0]['razon_social_sup'];
                        $correo_sup = $records[0]['correo_sup'];

                        $datos_usuario = array(
                            '0' => $num_doc_env . ';' . $id_tipo_doc_env . ';' . $razon_social_env . ';' . $correo_env . ';' . $mensaje_extra
                        );

                        $subject = "Rechazado - Acta de Inicio por Supervisor:" . $num_doc . " del Contrato:" . $num_contrato;
                        $currentUri = '';
                        $ruta = '';
                        $adjunto = false;
                        $progress_key = $request['comando'] . $request['username'];
                        $array_adjuntos = array();
                        $entidad_cliente = $entidadCliente;
                        $entidad_nombre = $entidadNombre;
                        $addAddress = true;

                        $this->logMessage("Subject: " . $subject);

                        CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);


                        //ENVIAMOS CORREO A APOYO - 20180620
                        if ($num_doc_apo != '') {
                            $datos_usuario = array(
                                '0' => $num_doc_apo . ';' . $id_tipo_doc_apo . ';' . $razon_social_apo . ';' . $correo_apo . ';' . $mensaje_extra
                            );

                            $this->logMessage("Envio Apoyo: " . $num_doc_apo);
                           CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                        }

                        //ENVIAMOS CORREO A Supervisor - 20180620
                        $mensaje_extra_sup = $records[0]['mensaje_extra_sup'];

                        //Se deja copia a luz.zapata@anm.gov.co, maria.peralta@anm.gov.co y yenny.saavedra@anm.gov.co
                        $datos_usuario = array(
                            '0' => $num_doc_sup . ';' . $id_tipo_doc_sup . ';' . $razon_social_sup . ';' . $correo_sup . ';' . $mensaje_extra_sup,
                            '1' => '0' . ';' . $id_tipo_doc_sup . ';' . 'CONTRATACION' . ';' . 'contratacion@anm.gov.co'
                        );

                        $this->logMessage("Envio supervisor: " . $num_doc_sup);
                        CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
                    }

                    $this->logMessage("FIN Envio correo");

                    //construir observacion
                    $observacion_log = "'Acta de Inicio autorizado del proceso del asunto: " . $subject . "'";

                    /*
                     * registro de consulta en tabla de log
                     */
                    $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $id_mae_ter, $username, $comando, $observacion_log);

                    break;

                default:
                    break;
            }


            /*
             * COMMIT DE TODAS LAS TRANSACCIONES
             */
            if ($status == 0) {
                $this->conn->commit();
                $this->status = 0;
                $this->list_data = $response;
                $this->logMessage("[acta_inicio_estado] Exitoso");
            } else {
                $this->conn->rollback();
                $this->status = 1;
                $this->mensajeError = $mensaje;
                $this->list_data = array();
                $this->logMessage("[acta_inicio_estado] ERROR!");
                $this->logMessage($mensaje);
            }
        } catch (Exception $e) {

            /*
             * ROLLBACK DE TODAS LAS TRANSACCIONES EN CASO DE QUE OCURRA ALGUN ERROR
             */
            $this->conn->rollback();
            $this->status = 1;
            $this->mensajeError = "[acta_inicio_estado] Ocurrio un error: " . $e->getMessage();
            $this->list_data = array();
            $this->logMessage("[acta_inicio_estado] ERROR!");
            $this->logMessage($e->getMessage());
        }
    }
}
