<?php

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

    /**
     * Executes index 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("---function executeList");
        $this->logMessage("---BEGIN Logging request");

        $status = 0;
        $response = array();
        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");

        $records = array();

        /**
         * Abrir nueva conexion con la Base de Datos
         */
        $this->conn = Doctrine_Manager::getInstance()->getCurrentConnection();
        $this->conn->beginTransaction();

        /*
         * Formato de fecha
         */
        //Sql
        $sql = <<<EOD
ALTER SESSION SET NLS_DATE_FORMAT = "YYYY-MM-DD HH24:MI:SS" 
EOD;
        //Ejecutar SQL
        CN_TABLE::executeSQL($sql);

        try {

            /**
             * Datos Generales - 20181226
             */
            $sql = <<<EOD
select 
* 
from com_param_control_comis
EOD;
            $mensaje = "";
            $results_param = CN_TABLE::executeSQL($sql);
            $this->logMessage("[inicio_modulo]---Start PARAMETER");

            //Se agrega mensajes parametrizados - 20190702
            foreach ($results_param as $result) {
                $this->logMessage("[inicio_modulo]---PARAMETRO - " . $result['parametro'] . ":" . $result['valor']);
                if ($result['parametro'] == 'APLICA_DIAS_INI_MES_REGIS_PLANEA') {
                    $aplica_dias_ini_mes_regis_planea = $result['valor'];
                }
                if ($result['parametro'] == 'CANT_DIAS_INI_MES_REGIS_PLANEA') {
                    $cant_dias_ini_mes_regis_planea = $result['valor'];
                }
                if ($result['parametro'] == 'APLICA_HORA_REGIS_PLANEA') {
                    $aplica_hora_regis_planea = $result['valor'];
                }
                if ($result['parametro'] == 'HORA_MIN_REGIS_PLANEA') {
                    $hora_min_regis_planea = $result['valor'];
                }
                if ($result['parametro'] == 'HORA_MAX_REGIS_PLANEA') {
                    $hora_max_regis_planea = $result['valor'];
                }
                if ($result['parametro'] == 'MENSAJE_CANT_DIAS_INI_MES') {
                    $mensaje_cant_dias_ini_mes = $result['valor'];
                }
                if ($result['parametro'] == 'MENSAJE_REGIS_PLANEA') {
                    $mensaje_regis_planea = $result['valor'];
                }
            }
            $this->logMessage("[inicio_modulo]---END PARAMETER");

            /*
             * Valida si aplica dias de inicio mes para registrar planeaciones
             */
            if ($aplica_dias_ini_mes_regis_planea == 1) {

                $mensaje_cant_dias_ini_mes = str_replace("cant_dias_ini_mes_regis_planea", $cant_dias_ini_mes_regis_planea, $mensaje_cant_dias_ini_mes);

                $status = 1;
                //- El registro de planeación de comisiones solo puede registrarse los primeros $cant_dias_ini_mes_regis_planea dias habiles de cada mes.</br>
                $mensaje = <<<EOD
$mensaje
$mensaje_cant_dias_ini_mes</br>

EOD;
            }
            /*
             * Valida si aplica horas para registrar planeaciones
             */
            if ($aplica_hora_regis_planea == 1) {

                $mensaje_regis_planea = str_replace("hora_min_regis_planea", $hora_min_regis_planea, $mensaje_regis_planea);
                $mensaje_regis_planea = str_replace("hora_max_regis_planea", $hora_max_regis_planea, $mensaje_regis_planea);

                $status = 1;
                //- El registro de planeación de comisiones solo puede registrarse de $hora_min_regis_planea a $hora_max_regis_planea.</br>
                $mensaje = <<<EOD
$mensaje
$mensaje_regis_planea</br>
EOD;
            }

            /*
             * COMMIT DE TODAS LAS TRANSACCIONES
             */
            if ($status == 0) {
                $this->conn->commit();
                $this->status = 0;
                $this->list_data = $response;
                $this->logMessage("[inicio_modulo] Exitoso");
            } else {
                $this->conn->rollback();
                $this->status = 1;
                $this->mensajeError = $mensaje;
                $this->list_data = array();
                $this->logMessage("[inicio_modulo] ERROR!");
                $this->logMessage($mensaje);
            }
        } catch (Exception $e) {

            /*
             * ROLLBACK DE TODAS LAS TRANSACCIONES EN CASO DE QUE OCURRA ALGUN ERROR
             */
            $this->conn->rollback();
            $this->status = 1;
            $this->mensajeError = "[balance_contrato_estado] Ocurrio un error: " . $e->getMessage();
            $this->list_data = array();
            $this->logMessage("[balance_contrato_estado] ERROR!");
            $this->logMessage($e->getMessage());
        }
    }

}
