<?php

/**
 * objetos_iguales actions.
 *
 * Link: http://http://localhost/contratacion/web/api_dev.php/api/objetos_iguales/list.json
 * 
 * @package    contratacion
 * @subpackage objetos_iguales
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class objetos_igualesActions extends sfActions {

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

        //Revisar que sea post
        //$this->forward404Unless($request->isMethod('post'));
        //Guardar los parametros del request en el log
        $this->logMessage("---BEGIN Logging request");
        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");

        /*
         * Paginacion
         */
        if (isset($request['_startRow'])) {
            $rowStart = $request['_startRow'];
        } else {
            $rowStart = 0;
        }

        if (isset($request['_endRow'])) {
            $rowEnd = $request['_endRow'];
        } else {
            $rowEnd = 75;
        }

        if (isset($request['id_anhos'])) {
            $vigencia = $request['id_anhos'];
        } else {
            $vigencia = date('Y');
        }

        /**
         * Solicitar token de conexion - 20200910
         */
        $respuesta = CN_TABLE::solicitarToken();
        $this->logMessage("objetos_iguales Token: " . $respuesta);

        $result = '';

        /*
         * Manejo de errores
         */
        try {

            //Variables app.yml
            $sisgestion = sfConfig::get('app_sisgestion');

            /**
             * URLs
             */
            $uridos = $sisgestion . '/api/ServicePaa/objetos';
            $urldos = 'http://' . $uridos;

            //Datos de filtro
            $post = <<<EOD
{
    "Vigencia":$vigencia
}
EOD;

            //Token de autorizacion
            $authorization = "Authorization: Bearer " . $respuesta;

            /*
             * Llamado CURL
             */
            $sesion = curl_init($urldos);

            //Define el tipo de ejecución
            curl_setopt($sesion, CURLOPT_HTTPHEADER, array('Content-Type: application/json', $authorization));
            curl_setopt($sesion, CURLOPT_CUSTOMREQUEST, "GET");
            curl_setopt($sesion, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($sesion, CURLOPT_POSTFIELDS, $post);
            curl_setopt($sesion, CURLOPT_FOLLOWLOCATION, 1);

            //Ejecuta la petición
            $result = curl_exec($sesion);
            //Se cierra la conexión
            curl_close($sesion);

            //verificar Message en result
            $pos = strpos($result, 'Message');
            if ($pos !== false) {
                throw new Exception("La respuesta del servicio fue erronea; favor verificar.");
            }

            $resultt = array();
            $respuesta = array();
            $resultt = json_decode($result);
            $this->logMessage("objetos_iguales Respuesta: " . $result);


            foreach ($resultt as $res) {
                $record = array();
                foreach ($res as $key => $value) {
                    if (is_array($value)) {

                        $key = strtolower($key);
                        $re = array();
                        foreach ($value as $va) {
                            $r = array();
                            foreach ($va as $ke => $val) {
                                $ke = strtolower($ke);

                                $r[strtolower($ke)] = $val;
                            }
                            $re[] = $r;
                        }
                        $re = json_encode($re);
                        $record[strtolower($key)] = $re;
                    } else {
                        $key = strtolower($key);
                        $record[strtolower($key)] = $value;
                    }
                }

                $respuesta[] = $record;
            }

            
            /**
             * Respuesta de consulta
             */
            $this->totalRows = count($respuesta);
            $this->startRow = $rowStart;
            $this->endRow = $rowStart + count($respuesta);
            $this->list_data = $respuesta;
            $this->logMessage("[objetos_iguales] Consulta exitosa.");
        } catch (Exception $e) {

            $this->status = 1;
            $this->totalRows = 0;
            $this->startRow = 0;
            $this->endRow = 0;
            $this->list_data = array(
                array(
                    'code' => $e->getCode(),
                    'mensaje' => $e->getMessage(),
                    'servicio' => 'objetos_iguales',
                    'modulo' => 'CONTRATACION'
                )
            );
            $this->logMessage("ERROR!!!");
            $this->logMessage($e->getMessage());
        }
    }
    
    public function executeUpdate(sfWebRequest $request) {
        
        
        try{
            
            $this->logMessage("Envio correo para Vo.Bo y Aprobación.");
            
            /*
         * (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' == $routeName) {
              foreach ($routeData as $key => $value) {
              //echo $value . "\n";
              if ($key == 'value') {
              $url_jasper = $value;
              }
              }
              } */
            $int++;
        }
                $bandera_editar      =  $request['bandera_editar'];
                $id_estudios_previos = "" . $request['id_estudios_previos'];
                if($bandera_editar == 9){
                                    $sql = <<<EOD
SELECT 
tab0.id_estudios_previos as id_estudios_previos, 
tab0.no_estudios_previos as no_estudios_previos,
    '' as num_doc,
    '' as razsoc,
to_char(sysdate,'yyyy-mm-dd') as fecha_sistema,
'$correoEnvio' as email_envio,                                      
'El presente correo es para informar que se genero el Vo.Bo del certificado objetos iguales del estudio previo ' || tab0.no_estudios_previos ||
'. Verificar en el modulo de contratación.'  as mensaje_extra,
'' as mensaje,
'' as mensaje_firma     
FROM CO_ESTUDIOS_PREVIOS_V tab0                                           
WHERE 1=1 AND tab0.id_estudios_previos = $id_estudios_previos
EOD;
                $result = CN_TABLE::executeSQL($sql);
                
                $subject = "ASUNTO: Vo.Bo Certificado de Objetos Iguales EP ".$result[0]['no_estudios_previos'];
                
                $report_params['mensaje'] = $result[0]['mensaje_extra'];
                //$prefijo = $records[0]['prefijo'];
                
                $mensaje_extra = $result[0]['mensaje_extra'];
                
                $fecha_sistema =$result[0]['fecha_sistema'];
                
                $mensa = $result[0]['mensaje_extra'];
                
                //Ejemplo de la persona que se envia el correo: 
                //123;1;pepito perez;correo@gmal.com
                //DATOS RESPONSABLE
                
                $num_doc = $result[0]['num_doc'];
                $id_tipo_doc = 1;
                $razon_soc = $result[0]['razsoc'];
                $correo = "felipe.plazas@anm.gov.co";
                $datos_usuario = array(
                    '0' => $num_doc . ';' . $id_tipo_doc . ';' . $correo . ';' . $razon_soc
                );
                
                  $body = <<<EOD
                <html><body> 
                <br/>
                Bogotá, $fecha_sistema
                <br/>
                <br/><br/>
                $mensa<br/><br/>

                <br/><br/>
                </body></html>
EOD;

                $currentUri = '';

                $adjunto = false;
                $progress_key = $request['comando'] . $request['username'];

                $entidad_cliente = $entidadCliente;
                $entidad_nombre = $entidadNombre;
                $addAddress = true;
                
                $array_adjuntos = array();
                $this->logMessage("subject".$subject);
                CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);   
                }
                if($bandera_editar == 10){
                                                        $sql = <<<EOD
SELECT 
tab0.id_estudios_previos as id_estudios_previos, 
tab0.no_estudios_previos as no_estudios_previos,
    '' as num_doc,
    '' as razsoc,
to_char(sysdate,'yyyy-mm-dd')  as fecha_sistema,                                                               
'$correoEnvio' as email_envio,
tab1.mail,                                                                
'El presente correo es para informar que se genero la aprobación del certificado objetos iguales del estudio previo ' || tab0.no_estudios_previos ||
'. Verificar en el modulo de contratación.'  as mensaje_extra,
'' as mensaje,
'' as mensaje_firma     
FROM CO_ESTUDIOS_PREVIOS_V tab0
LEFT JOIN INTERCER_DU tab1 ON tab1.id_mae_ter=tab0.responsable                                                                 
WHERE 1=1 AND tab0.id_estudios_previos = $id_estudios_previos
EOD;
                $result = CN_TABLE::executeSQL($sql);
                
                $subject = "ASUNTO: Aprobacion Certificado de Objetos Iguales EP ".$result[0]['no_estudios_previos'];

                $report_params['mensaje'] = $result[0]['mensaje_extra'];
                //$prefijo = $records[0]['prefijo'];
                $mensaje_extra = $result[0]['mensaje_extra'];
                $fecha_sistema =$result[0]['fecha_sistema'];
                $mensa = $result[0]['mensaje_extra'];

                //Ejemplo de la persona que se envia el correo: 
                //123;1;pepito perez;correo@gmal.com
                //DATOS RESPONSABLE
                $num_doc = $result[0]['num_doc'];
                $id_tipo_doc = 1;
                $razon_soc = $result[0]['razsoc'];
                if($result[0]['mail']!=null){
                    $correo = $result[0]['mail'];
                }
                $datos_usuario = array(
                    '0' => $num_doc . ';' . $id_tipo_doc . ';' . $correo . ';' . $razon_soc
                );
                
                
                                 $body = <<<EOD
                <html><body> 
                <br/>
                Bogotá, $fecha_sistema
                <br/>
                <br/><br/>
                $mensa<br/><br/>

                <br/><br/>
                </body></html>
EOD;


                $currentUri = '';

                $adjunto = false;
                $progress_key = $request['comando'] . $request['username'];

                $entidad_cliente = $entidadCliente;
                $entidad_nombre = $entidadNombre;
                $addAddress = true;
                
                $array_adjuntos = array();
                $this->logMessage("subject".$subject);

                CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);   
                    
                    
                    
                }

            /**
             * Respuesta de consulta
             */
            $this->totalRows = 0;
            $this->startRow = 0;
            $this->endRow = 0;
            $this->list_data = array();
            $this->logMessage("[objetos_iguales] Consulta exitosa.");
        } catch (Exception $ex) {
            $this->status = 1;
            $this->totalRows = 0;
            $this->startRow = 0;
            $this->endRow = 0;
            $this->list_data = array();
            $this->logMessage("ERROR!!!");
            $this->logMessage($ex->getMessage());
        }
        
        
        
    }

}
