<?php

/**
 * versiones_ep actions.
 *
 * @package    contratacion
 * @subpackage versiones_ep
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class versiones_epActions extends sfActions
{
 /**
  * Executes index action
  *
  * @param sfRequest $request A request object
  */
  public function executeIndex(sfWebRequest $request)
  {
    $this->forward('default', 'module');
  }
  /**
     * 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;
        }
         /*
         * Manejo de errores
         */
        try {
            /*
             * Variables obligatorias
             */

            /*
             * Variables opcionales
             */

            //sentencia sql
            if (isset($request['id_estudios_previos'])) {
                $id_estudios_previos = $request['id_estudios_previos'];
                $this->logMessage("------------------------------* EP: " .$id_estudios_previos);
            }

            /*
             * sql que trae los resultados
             * por los filtros, para totalizar las filas
             */
            $sql = <<<EOD
select tab0.* from(
--obtenemos todas las versiones hacia abajo
select tab0.id_versiones_ep,tab0.id_maeter as tercero_version,to_char(tab0.fecha_creacion,'dd/mm/yyyy') as fecha_version,tab0.id_version_padre,tab1.*,
nvl(tab2.razon_soc,tab2.pnombre||' '||tab2.snombre||' '||tab2.papellido||' '||tab2.sapellido) as nombre_tercero_ver,
nvl(tab3.razon_soc,tab3.pnombre||' '||tab3.snombre||' '||tab3.papellido||' '||tab3.sapellido) as nombre_responsable,
tab4.descripcion as MODALIDAD
from co_versiones_ep tab0 join CO_ESTUDIOS_PREVIOS tab1 on tab0.id_version_hijo=id_estudios_previos
left join INTERCEROS tab2 on tab2.id_mae_ter=tab0.id_maeter
left join INTERCEROS tab3 on tab3.id_mae_ter=tab1.responsable
left join CO_MODALIDAD_SEL tab4 on tab4.id_modalidad_sel=tab1.id_modalidad_sel 
start with ID_VERSION_HIJO=$id_estudios_previos
connect by ID_VERSION_HIJO=prior ID_VERSION_PADRE
union
--obtenemos todas las versiones hacia arriba
select tab0.id_versiones_ep,tab0.id_maeter as tercero_version,to_char(tab0.fecha_creacion,'dd/mm/yyyy') as fecha_version,tab0.id_version_padre,tab1.*,
nvl(tab2.razon_soc,tab2.pnombre||' '||tab2.snombre||' '||tab2.papellido||' '||tab2.sapellido) as nombre_tercero_ver,
nvl(tab3.razon_soc,tab3.pnombre||' '||tab3.snombre||' '||tab3.papellido||' '||tab3.sapellido) as nombre_responsable,
tab4.descripcion as MODALIDAD
from co_versiones_ep tab0 join CO_ESTUDIOS_PREVIOS tab1 on tab0.id_version_hijo=id_estudios_previos
left join INTERCEROS tab2 on tab2.id_mae_ter=tab0.id_maeter
left join INTERCEROS tab3 on tab3.id_mae_ter=tab1.responsable
left join CO_MODALIDAD_SEL tab4 on tab4.id_modalidad_sel=tab1.id_modalidad_sel 
start with ID_VERSION_HIJO=$id_estudios_previos
connect by prior ID_VERSION_HIJO= ID_VERSION_PADRE
--agregamos la version 0 como un registro
union
select 0 as id_versiones_ep,tab0.id_maeter as tercero_version,to_char(tab0.fecha_creacion,'dd/mm/yyyy') as fecha_version,0 as ID_version_padre,tab1.*,
nvl(tab2.razon_soc,tab2.pnombre||' '||tab2.snombre||' '||tab2.papellido||' '||tab2.sapellido) as nombre_tercero_ver,
nvl(tab3.razon_soc,tab3.pnombre||' '||tab3.snombre||' '||tab3.papellido||' '||tab3.sapellido) as nombre_responsable,
tab4.descripcion as MODALIDAD
from co_versiones_ep tab0 join CO_ESTUDIOS_PREVIOS tab1 on tab0.id_version_padre=tab1.id_estudios_previos
left join INTERCEROS tab2 on tab2.id_mae_ter=tab0.id_maeter
left join INTERCEROS tab3 on tab3.id_mae_ter=tab1.responsable
left join CO_MODALIDAD_SEL tab4 on tab4.id_modalidad_sel=tab1.id_modalidad_sel 
where id_versiones_ep =(select min(ID_versiones_ep) 
from co_versiones_ep 
start with ID_VERSION_HIJO=$id_estudios_previos
connect by ID_VERSION_HIJO=prior ID_VERSION_PADRE)) tab0
order by version
EOD;

            //ejecuta y obtiene el resultado del sql
            $resultado = CN_TABLE::executeSQL($sql);


            $this->totalRows = count($resultado);
            $this->startRow = $rowStart;
            $this->endRow = $rowStart + count($resultado);
            $this->list_data = $resultado;
            $this->logMessage("[versiones_ep] Consulta exitosa.");
        } catch (Exception $e) {

            $this->status = 1;
            $this->totalRows = 0;
            $this->startRow = 0;
            $this->endRow = 0;
            $this->list_data = array();
            $this->logMessage("ERROR!!!");
            $this->logMessage($e->getMessage());
        }
    }
}
