<?php

/**
 * log actions.
 *
 * @package    Sofhouse
 * @subpackage log
 * @author     Software House
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class logActions extends sfQuery {
    /*
     * ------------VARIABLES PARA SERVICIOS DE CONSULTA - LIST
     */

    protected $table_names = array(
        'CN_TABLA_LOG',
        'CN_CENTRO_OPERACION',
        'CN_MAE_BD',
        'CN_OPE_BD',
        'CN_MAE_TER'
    ); //tablas para construir el sql, por medio de joins
    protected $table_join_ids = array(
        'CN_MAE_BD, LEFT' =>
        array(
            'id_mae_bd' => 'CN_TABLA_LOG'
        ),
        'CN_CENTRO_OPERACION, LEFT' =>
        array(
//            'id_cia' => 'CN_TABLA_LOG',
            'id_cen_op' => 'CN_TABLA_LOG'
        ),
        'CN_OPE_BD, LEFT' =>
        array(
            'id_ope_bd' => 'CN_TABLA_LOG'
        ),
        'CN_MAE_TER, LEFT' =>
        array(
//            'id_cia' => 'CN_TABLA_LOG',
            'id_mae_ter' => 'CN_TABLA_LOG'
        )
    ); //si posee tablas para joins, identificar la relacion de los campos con las tablas
//ID_LOG   ID_TABLA  ID_VIGENCIA  ID_CEN_OP  ID_CIA   ID_MAE_BD   ID_OPE_BD   ID_MAE_TER     USUARIO     FECHA_LOG   COMANDO     OBSERVACION
    protected $fields = array(
        'CN_TABLA_LOG' =>
        array(
            'id_log' => 'id_log',
            'id_tabla' => 'id_tabla',
            'id_vigencia' => 'id_vigencia',
            'id_cen_op' => 'id_cen_op',
            'id_cia' => 'id_cia',
            'id_mae_bd' => 'id_mae_bd',
            'id_ope_bd' => 'id_ope_bd',
            'id_mae_ter' => 'id_mae_ter',
            'usuario' => 'usuario',
            'fecha_log' => 'fecha_log',
            'comando' => 'comando',
            'observacion' => 'observacion'
        ),
        'CN_CENTRO_OPERACION' =>
        array(
            'nom_cen_op' => 'nom_cen_op',
            'descr_cen_op' => 'descr_cen_op'
        ),
        'CN_MAE_BD' =>
        array(
            'des_mae_bd' => 'des_mae_bd'
        ),
        'CN_OPE_BD' =>
        array(
            'des_ope_bd' => 'des_ope_bd'
        ),
        'CN_MAE_TER' =>
        array(
            'nitocc' => 'nitocc',
            'nombre' => 'nombre'
        )
    ); //por cada tabla especificar los campos del select

    /*
     * OPCIONES DE FILTRO:
     *
     * LIKEALLPLUS- busqueda comparativa de la cadena dividida por los espacios en blanco en cualquier posición
     * LIKEALL - busqueda comparativa de la cadena en cualquier posición
     * LIKE - busqueda en la cadena que inicie por la variable de filtro
     *
     * BETWEENFECHA - para filtrar entre fechas y no tener encuenta la hora - ejemplo: where to_char(campo, 'YYYY-MM-DD') between x and y
     *
     * rownum,start - rownum,end / estos campos para uso del Grid live GWT, numero fijo de filas de consulta
     */
    protected $table_field_conditions = array(
        'CN_TABLA_LOG' =>
        array(
            'id_log' => array('>' => array(0)),
//            'id_cia' => array('=' => array('id_cia')),
//            'id_vigencia' => array('=' => array('id_vigencia')),
//            'id_periodo_contable' => array('=' => array('id_periodo_contable')),
            'id_cen_op' => array('=' => array('id_cen_op')),
            'id_ope_bd' => array('=' => array('id_ope_bd')),
            'id_mae_ter' => array('=' => array('id_mae_ter')),
            'fecha_log' => array('BETWEENFECHA' => array('di_ini', 'di_fin')),
            'comando' => array('=' => array('comando_informe')),
            'id_tabla' => array('=' => array('noRegistro')),
            'rownum,start' => array('>' => array('_startRow')),
            'rownum,end' => array('<=' => array('_endRow'))
        ),
        'CN_MAE_TER' =>
        array(
            'nitocc' => array('=' => array('nitocc'))
        )
    ); //por cada tabla se dan los campos, opcion de filtro y variable que entra para los posibles filtros
    protected $table_field_or_conditions = array(
        'CN_TABLA_LOG' =>
        array(
            'observacion' => array('LIKEALLPLUS' => array('observacion', '%'))
        )
    ); // filtros de condicion or
    protected $fields_orderBy = array(
        'id_log'
    ); //campos para el ordenamiento de la consulta


    /*
     * Variables manejo de log
     */
    //true - consulta de menu administracion
    protected $is_admin = true;
    //true - la tabla principal de busqueda no es una vista
    protected $is_filtro = true;

    //-----------------------prueba tablas Temporales
    public function executePrueba(sfWebRequest $request) {

        //Guardar los parametros del request en el log
        $this->logMessage("---BEGIN Logging request");
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("--------------------------------------------------*  Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getPostParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");


        //obtener valores del request
        $cia = 1;
        $cen_op = 16;

        //obtener las filas de control periodo por cenop, en orden de vigencia/periodo
        $sql = <<<EOD
SELECT

tab0.id_log as id_log, tab0.id_tabla as id_tabla, tab0.id_vigencia as id_vigencia, tab0.id_cen_op as id_cen_op, tab0.id_cia as id_cia, tab0.id_mae_bd as id_mae_bd, tab0.id_ope_bd as id_ope_bd, tab0.id_mae_ter as id_mae_ter, tab0.usuario as usuario, to_char(tab0.fecha_log, 'YYYY-MM-DD') as fecha_log, tab0.comando as comando, tab0.observacion as observacion, tab1.nom_cen_op as nom_cen_op, tab1.descr_cen_op as descr_cen_op, tab2.des_mae_bd as des_mae_bd, tab3.des_ope_bd as des_ope_bd, tab4.nitocc as nitocc,
tab4.nombre as nombre,
(select NOMBRE from CREDENCIAL_TEMPORAL tmp where tmp.COMANDO = tab0.COMANDO ) as nombre_comando

FROM CN_TABLA_LOG tab0

LEFT JOIN CN_MAE_BD tab2 ON tab0.id_mae_bd = tab2.id_mae_bd

LEFT JOIN CN_CENTRO_OPERACION tab1 ON tab0.id_cen_op = tab1.id_cen_op

LEFT JOIN CN_OPE_BD tab3 ON tab0.id_ope_bd = tab3.id_ope_bd

LEFT JOIN CN_MAE_TER tab4 ON tab0.id_mae_ter = tab4.id_mae_ter

ORDER BY id_log
EOD;
        $sql2 = <<<EOD
INSERT INTO  CREDENCIAL_TEMPORAL(ID_CREDENCIAL, NOMBRE, DESCRIPCION, ID_MOD, ID_EST, ID_TIPO, PROPIETARIO, COMANDO, ORDEN)
  VALUES(487, 'Autenticación CAD', 'Acción Autenticación CAD (comprobantes de asiento diario)', 6, 1, 2, 414, 'cb_aut_cad', 23)

EOD;
        //ejecutar sql
        $records = CN_TABLE::executeSQL($sql2);
        $sql3 = <<<EOD
select NOMBRE from CREDENCIAL_TEMPORAL tmp
EOD;
        //ejecutar sql
        $records = CN_TABLE::executeSQL($sql);

        //valida si hay valores
        if (count($records) > 0) {


            $this->list_data = $records;
        } else {
            $this->list_data = array();
        }
        //totales de filas y de consulta
        $this->logMessage('record_count = ' . count($records));
        $this->logMessage('total_record_count = ' . count($records));
        //valores de cabecera para el JSON
        $this->totalRows = count($records);
        $this->startRow = 0;
        $this->endRow = $this->startRow + count($records);
    }

}
