<?php

/**
 * com_param_gen actions.
 *
 * @package    controlComisiones
 * @subpackage com_param_gen
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class com_param_genActions 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");
            if ($value == 'null') {
                unset($request[$key]);
            }
        }
        $this->logMessage("--------------------------------------------------*  Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");

        $this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
        $this->conn->beginTransaction();


        /**
         * VALIDAR ERRORES DE PROCEDIMIENTO
         */
        try {

            $record = array();

            //sentencia sql
            $sql = <<<EOD
select
id,
parametro,
valor

from com_param_control_comis

order by
id 
EOD;

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

            foreach ($resultado as $value) {
                $key = strtolower($value['parametro']);

                //Valida boolean
                if ($key == 'aplica_dias_ini_mes_regis_planea' || $key == 'aplica_hora_regis_planea') {
                    if ($value['valor'] == 1) {
                        $valor_bool = 'true';
                    } else {
                        $valor_bool = 'false';
                    }
                    $record[1][$key] = $valor_bool;
                } else {
                    $record[1][$key] = $value['valor'];
                }

                //Columnas extra
                if ($key == 'hora_min_regis_planea' || $key == 'hora_max_regis_planea') {
                    $record[1][$key . "_sel"] = $value['valor'];
                }

                $record[1]['id'] = 1;
            }

            //COMMIT DE TODAS LAS TRANSACCIONES
            $this->conn->commit();
            $this->status = 0;
            $this->list_data = $record;
        } catch (Exception $e) {

            //ROLLBACK DE TODAS LAS TRANSACCIONES EN CASO DE QUE OCURRA ALGUN ERROR
            $this->conn->rollback();
            $mensaje = "[LIST sfAPIActions] ERROR Exception !!!";

            $this->list_errors = array(
                'Code' => $e->getCode(),
                'Message' => $e->getMessage(),
                'Line' => $e->getLine(),
                'Trace' => $e->getTraceAsString(),
                'mensaje' => $mensaje,
                'operacion' => "LIST"
            );

            $this->logMessage($mensaje);
            $this->logMessage("status -1");
            $this->logMessage("Code " . $e->getCode());
            $this->logMessage("Message " . $e->getMessage());

            $this->status = $this->STATUS_FAILURE;
            $this->mensajeError = $mensaje;
            $this->list_data = array();
        }
    }

    /**
     * Executes update action
     *
     * @param sfRequest $request A request object
     */
    public function executeUpdate(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");
            if ($value == 'null') {
                unset($request[$key]);
            }
        }
        $this->logMessage("--------------------------------------------------*  Ip: " . $_SERVER['REMOTE_ADDR']);
        foreach ($request->getGetParameters() as $key => $value) {
            $this->logMessage("request[$key] = $value");
        }
        $this->logMessage("---END Logging request");

        $this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
        $this->conn->beginTransaction();


        /**
         * VALIDAR ERRORES DE PROCEDIMIENTO
         */
        try {

            //aplica_dias_ini_mes_regis_planea update
            if (isset($request['aplica_dias_ini_mes_regis_planea']) && $request['aplica_dias_ini_mes_regis_planea'] == 'true') {

                //Update
                //sentencia sql
                $sql = <<<EOD
update com_param_control_comis 
set valor = '1'

where
parametro = 'APLICA_DIAS_INI_MES_REGIS_PLANEA' 
EOD;

                //Ejecutar SQL
                $this->conn->execute($sql);
            } else {

                //Update
                //sentencia sql
                $sql = <<<EOD
update com_param_control_comis 
set valor = '0'

where
parametro = 'APLICA_DIAS_INI_MES_REGIS_PLANEA' 
EOD;

                //Ejecutar SQL
                $this->conn->execute($sql);
            }

            //aplica_hora_regis_planea update
            if (isset($request['cant_dias_ini_mes_regis_planea']) && !is_null($request['cant_dias_ini_mes_regis_planea'])) {

                //Update
                $var = $request['cant_dias_ini_mes_regis_planea'];
                //sentencia sql
                $sql = <<<EOD
update com_param_control_comis 
set valor = '$var'

where
parametro = 'CANT_DIAS_INI_MES_REGIS_PLANEA' 
EOD;

                //Ejecutar SQL
                $this->conn->execute($sql);
            }

            //mensaje_cant_dias_ini_mes update
            if (isset($request['mensaje_cant_dias_ini_mes']) && !is_null($request['mensaje_cant_dias_ini_mes'])) {

                //Update
                $var = $request['mensaje_cant_dias_ini_mes'];
                //sentencia sql
                $sql = <<<EOD
update com_param_control_comis 
set valor = '$var'

where
parametro = 'MENSAJE_CANT_DIAS_INI_MES' 
EOD;

                //Ejecutar SQL
                $this->conn->execute($sql);
            }



            //aplica_hora_regis_planea update
            if (isset($request['aplica_hora_regis_planea']) && $request['aplica_hora_regis_planea'] == 'true') {

                //Update
                //sentencia sql
                $sql = <<<EOD
update com_param_control_comis 
set valor = '1'

where
parametro = 'APLICA_HORA_REGIS_PLANEA' 
EOD;

                //Ejecutar SQL
                $this->conn->execute($sql);
            } else {

                //Update
                //sentencia sql
                $sql = <<<EOD
update com_param_control_comis 
set valor = '0'

where
parametro = 'APLICA_HORA_REGIS_PLANEA' 
EOD;

                //Ejecutar SQL
                $this->conn->execute($sql);
            }

            //hora_min_regis_planea update
            if (isset($request['hora_min_regis_planea']) && !is_null($request['hora_min_regis_planea'])) {

                //Update
                $var = $request['hora_min_regis_planea'];
                //sentencia sql
                $sql = <<<EOD
update com_param_control_comis 
set valor = '$var'

where
parametro = 'HORA_MIN_REGIS_PLANEA' 
EOD;

                //Ejecutar SQL
                $this->conn->execute($sql);
            }

            //hora_max_regis_planea update
            if (isset($request['hora_max_regis_planea']) && !is_null($request['hora_max_regis_planea'])) {

                //Update
                $var = $request['hora_max_regis_planea'];
                //sentencia sql
                $sql = <<<EOD
update com_param_control_comis 
set valor = '$var'

where
parametro = 'HORA_MAX_REGIS_PLANEA' 
EOD;

                //Ejecutar SQL
                $this->conn->execute($sql);
            }

            //mensaje_regis_planea update
            if (isset($request['mensaje_regis_planea']) && !is_null($request['mensaje_regis_planea'])) {

                //Update
                $var = $request['mensaje_regis_planea'];
                //sentencia sql
                $sql = <<<EOD
update com_param_control_comis 
set valor = '$var'

where
parametro = 'MENSAJE_REGIS_PLANEA' 
EOD;

                //Ejecutar SQL
                $this->conn->execute($sql);
            }
            
            //fecha minima
            if(isset($request['fecha_min'])&& !is_null($request['fecha_min'])){
               
                
                  //Update
                $var = $request['fecha_min'];
                //sentencia sql
                $sql = <<<EOD
update com_param_control_comis 
set valor = '$var'

where
parametro = 'FECHA_MIN' 
EOD;

                //Ejecutar SQL
                $this->conn->execute($sql);
                
                
                
                
            }
            //fecha maxima
            if(isset($request['fecha_max'])&& !is_null($request['fecha_max'])){
                
                  //Update
                $var = $request['fecha_max'];
                //sentencia sql
                $sql = <<<EOD
update com_param_control_comis 
set valor = '$var'

where
parametro = 'FECHA_MAX' 
EOD;

                //Ejecutar SQL
                $this->conn->execute($sql);
            }
            

            /**
             * LIST
             */
            $record = array();

            //sentencia sql
            $sql = <<<EOD
select
id,
parametro,
valor

from com_param_control_comis

order by
id 
EOD;

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

            foreach ($resultado as $value) {
                $key = strtolower($value['parametro']);

                //Valida boolean
                if ($key == 'aplica_dias_ini_mes_regis_planea' || $key == 'aplica_hora_regis_planea') {
                    if ($value['valor'] == 1) {
                        $valor_bool = 'true';
                    } else {
                        $valor_bool = 'false';
                    }
                    $record[1][$key] = $valor_bool;
                } else {
                    $record[1][$key] = $value['valor'];
                }

                //Columnas extra
                if ($key == 'hora_min_regis_planea' || $key == 'hora_max_regis_planea') {
                    $record[1][$key . "_sel"] = $value['valor'];
                }

                $record[1]['id'] = 1;
            }

            //COMMIT DE TODAS LAS TRANSACCIONES
            $this->conn->commit();
            $this->status = 0;
            $this->list_data = $record;
        } catch (Exception $e) {

            //ROLLBACK DE TODAS LAS TRANSACCIONES EN CASO DE QUE OCURRA ALGUN ERROR
            $this->conn->rollback();
            $mensaje = "[UPDATE sfAPIActions] ERROR Exception !!!";

            $this->list_errors = array(
                'Code' => $e->getCode(),
                'Message' => $e->getMessage(),
                'Line' => $e->getLine(),
                'Trace' => $e->getTraceAsString(),
                'mensaje' => $mensaje,
                'operacion' => "UPDATE"
            );

            $this->logMessage($mensaje);
            $this->logMessage("status -1");
            $this->logMessage("Code " . $e->getCode());
            $this->logMessage("Message " . $e->getMessage());

            $this->status = $this->STATUS_FAILURE;
            $this->mensajeError = $mensaje;
            $this->list_data = array();
        }
    }

}
