<?php

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

    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");


        /*
         * Manejo de errores
         */
        try {


            //sentencia sql
            $sql = <<<EOD
ALTER SESSION SET NLS_DATE_FORMAT = "YYYY-MM-DD"
EOD;
            //ejecuta y obtiene el resultado del sql
            CN_TABLE::executeSQL($sql);


            /*
             * Variables obligatorias
             */

            if (isset($request['id_username'])) {
                $id_username = $request['id_username'];
            }

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

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

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

            /**
             * Variables filtro
             */
            //Funcionario num_doc
            $num_doc = null;
            $whereFuncionarioNumDoc = "";
            if (isset($request['num_doc'])) {
                $num_doc = $request['num_doc'];
                $whereFuncionarioNumDoc = " AND tab0.num_doc = '" . $num_doc . "'";
            }
            //id_referencia2 
            $id_referencia2 = null;
            $whereTitulo = "";
            if (isset($request['id_referencia2'])) {
                $id_referencia2 = $request['id_referencia2'];
                $whereTitulo = " AND tab0.id_referencia2 = '" . $id_referencia2 . "'";
            }
            //estado 
            $estado = null;
            $whereEstado = "";
            if (isset($request['estado'])) {
                if ($request['estado'] == 'true') {
                    //Si es true
                    $estado = 1;
                    $whereEstado = " AND tab0.estado = 1 ";
                } elseif ($request['estado'] == '0') {
                    //Si es 0
                    $estado = 0;
                    $whereEstado = " AND tab0.estado = 0 ";
                } else {
                    //Si es false
                    $estado = 0;
                    $whereEstado = " ";
                }
            }


            /*
             * sql que trae los resultados
             * por los filtros, para totalizar las filas
             */

            $sql = <<<EOD
select count(*) as count from (

select 
tab0.*
    
from(                    
                    
    select distinct
    tit.cod_titulo as id_referencia2,
    tit.cod_titulo,
    titper.id_titulo,
    titper.id_titular,
    titper.id_rol_titulo,
    titper.fecha_inicial,
    titper.fecha_fin,
    titper.id_titulo_persona,
    titper.id_novedad,
    titper.actual,
    titper.id_persona,
    titper.nombre,
    titper.primer_apellido,
    titper.segundo_apellido,
    titper.telefono,
    titper.celular,
    titper.correo,
    titper.correo_alt,
    titper.raz_soc,
    titper.num_doc,
    titper.nombre_rol,
    titper.usuario_canon,

    case when titper.correo is null and titper.correo_alt is null and ter.mail is null and ter.mail_con is null then 0 else 1 end as estado, 
    case when titper.correo is null then titper.correo_alt else titper.correo end as correo_canon, 
    case when ter.mail is null then ter.mail_con else ter.mail end  as correo_erp

    from rmn_titulo_persona_mv@can.anm.local titper

    join rmn_titulo@can.anm.local tit
    on tit.id_titulo = titper.id_titulo

    left join interceros_du_dir_v ter
    on ter.num_doc = titper.num_doc
                    
)tab0
    
where 
1 = 1    
$whereFuncionarioNumDoc
$whereTitulo    
$whereEstado                    
                    
)
EOD;

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


            /*
             * Obtiene los registros de debito/vencimiento con su saldo respectivo
             */
            $sql = <<<EOD

SELECT * FROM ( SELECT row_.*, ROWNUM rownum_ FROM (

select 
tab0.*
    
from(                    
                    
    select distinct
    tit.cod_titulo as id_referencia2,
    tit.cod_titulo,
    titper.id_titulo,
    titper.id_titular,
    titper.id_rol_titulo,
    titper.fecha_inicial,
    titper.fecha_fin,
    titper.id_titulo_persona,
    titper.id_novedad,
    titper.actual,
    titper.id_persona,
    titper.nombre,
    titper.primer_apellido,
    titper.segundo_apellido,
    titper.telefono,
    titper.celular,
    titper.correo,
    titper.correo_alt,
    titper.raz_soc,
    titper.num_doc,
    titper.nombre_rol,
    titper.usuario_canon,

    case when titper.correo is null and titper.correo_alt is null and ter.mail is null and ter.mail_con is null then 0 else 1 end as estado, 
    case when titper.correo is null then titper.correo_alt else titper.correo end as correo_canon, 
    case when ter.mail is null then ter.mail_con else ter.mail end  as correo_erp

    from rmn_titulo_persona_mv@can.anm.local titper

    join rmn_titulo@can.anm.local tit
    on tit.id_titulo = titper.id_titulo

    left join interceros_du_dir_v ter
    on ter.num_doc = titper.num_doc
                    
)tab0
    
where 
1 = 1    
$whereFuncionarioNumDoc
$whereTitulo    
$whereEstado      
                        
$sortBy                        

) row_ WHERE ROWNUM <=  $rowEnd   ) where rownum_ >  $rowStart
EOD;

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


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

            $this->status = 1;
            $this->mensajeError = "ERROR!!!";
            $this->list_data = array();
            $this->logMessage("ERROR!!!");
            $this->logMessage($e->getMessage());
        }
    }

}
