<?php

/**
 * inf_lineas_paa actions.
 *
 * @package    contratacion
 * @subpackage inf_lineas_paa
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class inf_lineas_paaActions extends sfActions {

    /**
     * 
     * @param sfWebRequest $request
     */
    public function executeExcel(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("lineas_paa_detalle_sigestion Token: " . $respuesta);

        $result = '';

        /*
         * Manejo de errores
         */
        try {

            /**
             * HOMOLOGACION de EP - 20200416::LAVILA
             */
            $sql = <<<EOD
SELECT
no_estudios_previos,
id_estudios_previos,
no_proceso,
to_char(fecha_creacion,'dd/mm/yyyy') as fecha_creacion,
codigopaa
FROM co_estudios_previos_v
where
codigopaa is not null
and estado = 1 
EOD;


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

            $respuesta_ep = array();
            foreach ($resultados_ep as $value) {
                $this->logMessage("****************************" . $value['codigopaa']);
                $respuesta_ep [$value['codigopaa']] = $value;
            }



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


            $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 . '}';
            }


            $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) {
                $this->logMessage("La respuesta del servicio fue erronea; favor verificar.");
            }
            
            $resultt = array();
            $arreglo = array();
            $contador = 0;
            $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 = $record['valorvigencia'];
                $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;
                //Se completa la nombredependecia - 20200416::LAVILA
                $sis = $record['idsisgestiondependencia'];
                //$record['nombredependecia'] = $respuesta_area[$sis]['descripcion'];

                if (isset($respuesta_ep[$cod])) {

                    $record['no_estudios_previos'] = $respuesta_ep[$cod]['no_estudios_previos'];
                    $record['id_estudios_previos'] = $respuesta_ep[$cod]['id_estudios_previos'];
                    $record['no_proceso'] = $respuesta_ep[$cod]['no_proceso'];
                    $record['fecha_creacion'] = $respuesta_ep[$cod]['fecha_creacion'];
                } else {

                    $record['no_estudios_previos'] = "";
                    $record['id_estudios_previos'] = "";
                    $record['no_proceso'] = "";
                    $record['fecha_creacion'] = "";
                }


                $arreglo[$contador++] = $record;
            }
        } catch (Exception $e) {
            $this->logMessage("ERROR!!!");
            $this->logMessage($e->getMessage());
        }


        /**
         * Generar EXCEL
         */
        $this->logMessage("Generar EXCEL");
        $html = "<h2>Consulta Linea Paa Sigestion</h2>";
        $html .= "<h2> Vigencia: " . $vigencia . "</h2>";

        $html .= '<table border="1">';
        $html .= '<tr>';

        //Validar si es array
        if (is_array($arreglo[0])) {
            foreach ($arreglo[0] as $key => $value) {

                $html .= '<td style="text-align:center;background-color:rgb(100, 100, 100); color: rgb(255, 255, 255);">' . $key . '</td>';
            }
        }
        $html .= '</tr>';


        /**
         * FORMATO HTML PARA TABLAS - 20141205
         * Texto . td style='mso-number-format:\@'> 
         * Numero . td style='mso-number-format:\"0\.00'>".str_replace('.',',',$recaudado)
         * Fecha . td style='mso-number-format:\"yyyy\-mm\-dd\"'>
         */
        foreach ($arreglo as $key => $value) {
            $html .= '<tr>';

            foreach ($value as $key => $registro) {
                if (!is_numeric($registro)) {

                    if ($key == "fecha_creacion" || $key == "") {
                        $html .= '<td style="text-align:center">' . $registro . '</td>';
                    } else {

                        $html .= '<td>' . $registro . '</td>';
                    }
                } else {
                    if ($key == "id_anhos" || $key == "codigopaa") {
                        $html .= '<td  style="text-align:center">' . $registro . '</td>';
                    } else {
                        $html .= '<td  style="text-align:right" >' . str_replace('.', ',', $registro) . '</td>';
                    }
                }
            }
            $html .= '</tr>';
        }

        $html .= '</table>';


        $nombre = "Consulta Linea Paa Sigestion.xls";
        header("Content-type: application/vnd.ms-excel; name='excel'");
        header("Content-Disposition: filename=" . $nombre);
        header("Pragma: no-cache");
        header("Expires: 0");

        echo $html;

        die();
        exit();
    }

}
