<?php

/**
 * modalidades_sigestion actions.
 *
 * @package    contratacion
 * @subpackage modalidades_sigestion
 * @author     Manuel Enrique Paredes Lopez
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class modalidades_sigestionActions 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['vigencia'])) {
            $vigencia = $request['vigencia'];
        } else {
            $vigencia = date('Y');
        }

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

        $result = '';

        /*
         * Manejo de errores
         */
        try {

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


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

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


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

}
