<?php

/**
 * webservice_obligaciones_titulo actions.
 * 
 * Link PRUEBA:: http://soporte14.sofhouse.net/canon/web/api_dev.php/api/webservice_obligaciones_titulo/list.json?cod_titulo=JAT-15071
 *
 * @package    canon
 * @subpackage webservice_obligaciones_titulo
 * @author     Your name here
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class webservice_obligaciones_tituloActions extends sfActions {

    /**
     * Executes list action
     *
     * @param sfRequest $request A request object
     */
    public function executeList(sfWebRequest $request) {

        //Log especifico de procesos completos - 20160527
        $logPath = sfConfig::get('sf_log_dir') . '/webservice.log';
        $this->custom_logger = new sfFileLogger(new sfEventDispatcher(), array('file' => $logPath));

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

        /*
         * Paginacion
         */
        if (isset($request['_startRow'])) {
            $rowStart = $request['_startRow'];
        } else {
            $rowStart = 0;
        }

        if (isset($request['_endRow'])) {
            $rowEnd = $request['_endRow'];
        } else {
            $rowEnd = 10000;
        }

        //ordenar consulta
        if (isset($request['_sortBy'])) {
            $sortBy = " Order by " . $request['_sortBy'];
        } else {
            $sortBy = ' Order by cod_titulo, fecha_pago_oportuno';
        }


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

        $time_log = time();

        //Variables por defecto para el registro de log - 20160527
        $id_tabla = 'null';
        $id_vigencia = 'null';
        $id_cen_op = 'null';
        $id_cia = 'null';

        //obtener id maestro tabla
        $id_mae_bd = CN_TABLE::consultarIdTablaBD('V_PAGO_FINANCIERA');

        //  1- CONSULTAR, 2- ACTUALIZAR, 3 - ADICIONAR, 4 - ELIMINAR, 5 - ANULAR
        $id_ope_bd = 1;
        //id del maestro tercero
        $id_mae_ter_log = 1;
        $usuario = 'admin';
        $comando = 'v_pago_financiera';
        //construir observacion
        $observacion = "'Se ingreso al servicio web deobligaciones titulo'";

        $id_punto_venta = '102';

        //Manejo de errores
        //Variables obligatorias
        $id_anhos = date('Y');
        $fecha_proceso = CN_TABLE::fechaSistema();

        //sentencia sql
        $sql = <<<EOD
ALTER SESSION SET NLS_DATE_FORMAT = "YYYY-MM-DD"
EOD;

        //ejecuta el sql
        CN_TABLE::executeSQL($sql);

        //variable para los errores
        $error = false;
        $errorVar = "";
        $email = "";

        /*
         * variables
         */
        //obtiene el valor para su identificador unico
        $id_tabla = 'null';
        if (isset($request['id_tabla'])) {
            $id_tabla = $request['id_tabla'];
        } else {
            $id_tabla = $time_log;
        }


        /**
         * Validar errores de procedimiento
         */
        try {


            /*
             * Variables opcionales
             */
            //cod_titulo
            if (isset($request['cod_titulo'])) {
                $whereCodTitulo = " AND tab0.cod_titulo = '" . $request['cod_titulo'] . "'";
            } else {
                $whereCodTitulo = ' ';
            }


            /**
             * Consulta de debitos pendientes de pago
             * Solo debitos con titulos de canon y con tipo de tasa registrada
             * Campos nuevos de vista y unificacion de ND CANON - 20200505::LAVILA
             */
            $consulta_sql = <<<EOD
select

tab0.id_debito,
tab0.vig_rec,
tab0.sec_debito,
tab0.fecha_debito,
tab0.fecha_vence,
tab0.num_pin,
tab0.id_producto,
tab0.cod_titulo,
tab0.valor_debito,
tab0.saldo_actual,
tab0.valor_intereses,
tab0.valor_total,
tab0.dias_mora,
tab0.concepto,
tab0.concepto_intereses,
tab0.id_titulo,
tab0.aplica_usura,
tab0.tasa_interes_aplicada,
tab0.periodo_ini,
tab0.periodo_fin,
tab0.id_etapa,
tab0.anualidad,
tab0.resol_mod

from v_pago_obligaciones_titulo tab0
                
where
1 = 1                     
$whereCodTitulo                     
EOD;

            /*
             * Sql que trae los resultados
             * por los filtros, para totalizar las filas
             */
            /*           $sql = <<<EOD
              select count(*) as count from (

              $consulta_sql

              )
              EOD;


              $total_record_count = CN_TABLE::executeSQL($sql);
              $total_record_count = $total_record_count[0]["count"];
             */

            //obtener el listado de recaudos
            $sql = <<<EOD
                    

    $consulta_sql

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


            //$this->totalRows = $total_record_count;
            $this->totalRows = count($resultado);
            $this->startRow = $rowStart;
            $this->endRow = $rowStart + count($resultado);
            $this->list_data = $resultado;
            $this->logMessage("[webservice_obligaciones_titulo]Total de registros: " . $this->totalRows);
            $this->logMessage("[webservice_obligaciones_titulo] Consulta exitosa.");


            /*
             * COMMIT DE TODAS LAS TRANSACCIONES
             */
            $this->conn->commit();
        } catch (Exception $e) {


            //ROLLBACK DE TODAS LAS TRANSACCIONES EN CASO DE QUE OCURRA ALGUN ERROR
            $this->conn->rollback();

            $mensaje = "ERROR!!!";

            $this->logMessage($mensaje);
            $this->custom_logger->info("[webservice_obligaciones_titulo] Exception:: " . $mensaje);
            $this->logMessage("state 2");
            $this->logMessage("Code " . $e->getCode());
            $this->logMessage("Message " . $e->getMessage());

            $this->status = 2;
            $this->mensajeError = $mensaje;
            $this->list_data = array(
                array(
                    'Code' => $e->getCode(),
                    'Message' => $e->getMessage(),
                    'Line' => $e->getLine(),
                    'Trace' => $e->getTraceAsString(),
                    'mensaje' => $mensaje
                )
            );
        }
    }

}
