<?php

/**
 * lineas_paa_sigestion_selector actions.
 *
 * @package    contratacion
 * @subpackage lineas_paa_sigestion_selector
 * @author     Manuel Enrique Paredes Lopez
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class lineas_paa_sigestion_selectorActions 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");

        $sisgestion = sfConfig::get('app_sisgestion');

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

        //codigo_dependencia
        if (isset($request['idsisgestiondependencia'])) {
            $cod_depen = $request['idsisgestiondependencia'];
        } else {
            $cod_depen = '';
        }

        //codigo_paa
        if (isset($request['codigopaa'])) {
            $cod_paa = $request['codigopaa'];
        } else {
            $cod_paa = '';
        }
        

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

        $result = '';

        /*
         * Manejo de errores
         */
        try {

            /**
             * HOMOLOGACION de tabla areas sireci - 20200415::LAVILA
             */
            $sql = <<<EOD
SELECT 

ID_AREA,
DESCRIPCION,
SIGLA,
ID_DEPENDENCIA,
CODIGO,
ID_NIVEL,
ID_COORDINADOR,
AREA_SISGESTION

FROM AREA

WHERE 
AREA_SISGESTION is not null 
EOD;


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

            $respuesta_area = array();
            foreach ($resultados_area as $value) {
                $this->logMessage("****************************" . $value['area_sisgestion']);
                $respuesta_area[$value['area_sisgestion']] = $value;
            }

            /**
             * HOMOLOGACION de tabla modalidades sireci - 20200414::LAVILA
             */
            $uridos = $sisgestion . '/api/ServicePaa/modalidades';
            $urldos = 'http://' . $uridos;

            $post = '';
            //$post = 'Vigencia='.$vigencia;
            $authorization = "Authorization: Bearer " . $respuesta;

            $sesion = curl_init($urldos);

            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_modal = array();
            $resultt = json_decode($result, true);
            $this->logMessage("MODALIDADES Respuesta: " . $result);


            foreach ($resultt as $res) {
                $record = array();
                $key_rec = 0;
                foreach ($res as $key => $value) {

                    $key = strtolower($key);
                    $record[strtolower($key)] = $value;

                    if ($key == 'codigomodalidad') {
                        $key_rec = $value;
                    }
                }
                $respuesta_modal[$key_rec] = $record;
            }




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


            if (isset($request['idsisgestiondependencia'])) {

                if (isset($request['codigopaa'])) {

                    $post = '{
	"Vigencia":' . $vigencia . ','
                            . '"CodigoDependencia":' . $cod_depen . ','
                            . '"CodigoPaa":"' . $cod_paa . '"}';
                } else {

                    $post = '{
	"Vigencia":' . $vigencia . ','
                            . '"CodigoDependencia":' . $cod_depen . '}';
                }
            } else {


                $post = '{
	"Vigencia":' . $vigencia . '}';
            }

            //tipo_bolsa - 20200911
            if (isset($request['tipo_bolsa']) && $request['tipo_bolsa'] != '') {
                
                $tipo_bolsa = $request['tipo_bolsa'];
                
                //Datos de filtro
                $post = <<<EOD
{
    "Vigencia":$vigencia,
    "TipoBolsa":"$tipo_bolsa"
}
EOD;
            }


            $authorization = "Authorization: Bearer " . $respuesta;

            $sesion = curl_init($urldos);

            curl_setopt($sesion, CURLOPT_HTTPHEADER, array('Content-Type: application/json', $authorization));
            curl_setopt($sesion, CURLOPT_CUSTOMREQUEST, "POST");
            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("LINEAS PAA 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;
                        $record['id_anhos'] = $vigencia;
                    }
                }
                $id_ano = $record['id_anhos'];
                $cod = $record['codigopaa'];

                $valor = number_format($record['valorvigencia'], 2, ',', '.');
                $codunspsc = $record['codigosunspsc'];
                $codunspsc = str_replace(";", "", $codunspsc);
                $record['desc'] = "Año: " . $id_ano . " - Codigo Paa: " . $cod . " - Valor: " . $valor . " - Codigo Sunspsc: " . $codunspsc . " ";
                $record['descdos'] = "Codigo Paa: " . $cod . " - Valor: " . $valor;

                $sis = $record[idsisgestiondependencia];
                /*
                  //Sql
                  $sql = <<<EOD
                  SELECT ID_AREA,
                  DESCRIPCION,
                  SIGLA,
                  ID_DEPENDENCIA,
                  CODIGO,
                  ID_NIVEL,
                  ID_COORDINADOR,
                  AREA_SISGESTION
                  FROM AREA
                  WHERE AREA_SISGESTION=$sis
                  EOD;


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

                  if (count($resultados) > 0) {

                  $record['id_area'] = $resultados[0]['id_area'];
                  } else {

                  $record['id_area'] = null;
                  }
                 */
                $record['id_area'] = $respuesta_area[$sis]['id_area'];


                $mod = $record[idsisgestionmodalidadcontratacion];
                /*
                  //Sql
                  $sql = <<<EOD
                  SELECT ID_MODALIDAD_SEL,
                  DESCRIPCION,
                  FUNDAMENTOS_JURIDICOS,
                  ID_TIPO_PROCESO,
                  ESTADO,
                  PREFIJO,
                  CUANTIA_MIN,
                  CUANTIA_MAX,
                  INTRODUCTORIO,
                  APLICA_PROCESO,
                  APLICA_APROBACION,
                  MOD_SIRECI_SIGES,
                  ID_MOD_SIRECI_SIGES
                  FROM CO_MODALIDAD_SEL
                  WHERE ID_MODALIDAD_SEL=$mod
                  EOD;


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

                  if (count($resultados) > 0) {
                  $record['id_tipo_proceso'] = $resultados[0]['id_tipo_proceso'];
                  } else {
                  $record['id_tipo_proceso'] = null;
                  }

                 */
                $record['id_tipo_proceso'] = $respuesta_modal[$mod]['codigomodalidadsireci'];

                $respuesta[] = $record;
            }


            /**
             * Respuesta de consulta
             */
            $this->totalRows = count($respuesta);
            $this->startRow = $rowStart;
            $this->endRow = $rowStart + count($respuesta);
            $this->list_data = $respuesta;
            $this->logMessage("[lineas_paa_sigestion_selector] 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' => 'lineas_paa_sigestion_selector',
                    'modulo' => 'CONTRATACION'
                )
            );
            $this->logMessage("ERROR!!!");
            $this->logMessage($e->getMessage());
        }
    }

    function escapeJsonString($value) { # list from www.json.org: (\b backspace, \f formfeed)
        $escapers = array("\\", "/", "\"", "\n", "\r", "\t", "\x08", "\x0c");
        $replacements = array("\\\\", "\\/", "\\\"", "\\n", "\\r", "\\t", "\\f", "\\b");
        $result = str_replace($escapers, $replacements, $value);
        return $result;
    }

}
