<?php

/**
 * co_objetos_iguales actions.
 *
 * @package    contratacion
 * @subpackage co_objetos_iguales
 * @author     Manuel Enrique Paredes Lopez
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class co_objetos_igualesActions extends sfQuery {
    /*
     * ------------VARIABLES PARA SERVICIOS DE CONSULTA - LIST
     */

    protected $table_names = array(
        'CO_EP_OBJETOS_IGUALES',
        'CO_ESTUDIOS_PREVIOS_V'
    ); //tablas para construir el sql, por medio de joins
    protected $table_join_ids = array(
        'CO_ESTUDIOS_PREVIOS_V' =>
        array(
            'id_estudios_previos' => 'CO_EP_OBJETOS_IGUALES'
        )
    ); //si posee tablas para joins, identificar la relacion de los campos con las tablas
    protected $fields = array(
        'CO_EP_OBJETOS_IGUALES' =>
        array(
            'id_co_ep' => 'id_co_ep',
            'id_estudios_previos' => 'id_estudios_previos'/* ,
          'valor_texto' => 'valor_texto' */
        ),
        'CO_ESTUDIOS_PREVIOS_V' =>
        array(
            'no_estudios_previos' => 'no_estudios_previos',
            'fecha_creacion' => 'fecha_creacion',
            'id_anhos' => 'id_anhos',
            'version' => 'version',
            'valor' => 'valor'
        )
    ); //por cada tabla especificar los campos del select
    protected $fields_orderBy = array(
        'id_estudios_previos'
    ); //campos para el ordenamiento de la consulta
    /*
     * 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
     *
     * rownum,start - rownum,end / estos campos para uso del Grid live GWT, numero fijo de filas de consulta
     */
    protected $table_field_conditions = array(
        'CO_EP_OBJETOS_IGUALES' =>
        array(
            'id_co_ep,a' => array('!=' => array(-1)),
            'id_co_ep,b' => array('=' => array('id_co_ep')),
            'id_estudios_previos' => array('=' => array('id_estudios_previos')),
            'rownum,start' => array('>' => array('_startRow')),
            'rownum,end' => array('<=' => array('_endRow'))
        )
    ); //por cada tabla se dan los campos, opcion de filtro y variable que entra para los posibles filtros
    protected $table_field_or_conditions = array(
    ); // filtros de condicion or
    /*
     * Variable manejo de log
     */
    //true - consulta de menu administracion
    protected $is_admin = true;
    //si es servicio para filtro agregar campo
//   protected $filtro = 'Perfiles';
    //true - la tabla principal de busqueda no es una vista
    protected $is_filtro = true;

    /*
     * ------------VARIABLES PARA SERVICIOS CRUD
     */
    protected $id_name = 'id_co_ep'; //identificador de la tabla
    protected $id_names = array('id_co_ep'); //llave primaria
    protected $field_names = array('id_estudios_previos', 'valor_texto'); //campos de la tabla, sin la llave primaria
    protected $table_name = 'CO_EP_OBJETOS_IGUALES'; //tabla en la cual se aplican los cambios 
    /*
     * Manejo de registro log
     */
    protected $id_unico = 'id_co_ep'; //identificador unico de la tabla

    protected function postprocessRequest($Action, sfWebRequest $request, $list_data_post) {
        /*
         * Se instancia la clase del manejo del log
         */
        $logger = sfContext::getInstance()->getLogger();
        $logger->info("Entro a postprocessRequest - " . $list_data_post);
        /*
         * Procesar Request
         */
        //accion add
        if ($Action == "ADD") {
            
        }

        //accion update
        if ($Action == "UPDATE") {
            
        }

        //accion remove
        if ($Action == "REMOVE") {
            
        }

        return $request;
    }

    protected function preprocessRequest($Action, sfWebRequest $request) {

        /*
         * Se instancia la clase del manejo del log
         */
        $logger = sfContext::getInstance()->getLogger();
        $logger->info("Entro a preprocessRequest");

        /*
         * (SGC-1, ANM-2, SGR-3, CYC-4, COL-5, INCI-6, LOCAL-7)
         */

        $array = sfYaml::load(dirname(__FILE__) . '/../../../config/app-gwt.yml');

        $int = 0;
        foreach ($array as $routeName => $routeData) {
            //echo $routeName . "\n";
            if ('entidad_cliente' == $routeName) {
                foreach ($routeData as $key => $value) {
                    //echo $value . "\n";
                    if ($key == 'value') {
                        $entidadCliente = $value;
                    }
                }
            }
            if ('correoEnvio' == $routeName) {
                foreach ($routeData as $key => $value) {
                    //echo $value . "\n";
                    if ($key == 'value') {
                        $correoEnvio = $value;
                    }
                }
            }

            $int++;
        }



        $id_estudios_previos = $request['id_estudios_previos'];
        $bandera_correo = $request['bandera_correo'];

        if (isset($request['bandera_correo']) && $request['bandera_correo'] == 1) {

            $sql = "
                     SELECT tab0.dia_sistema||' de '||tab0.mes_sistema||' del '||anho_sistema AS FECHA_SISTEMA
                        from(
                         select LPAD(to_char(sysdate,'dd'),2,'0') as dia_sistema,
                         trim(initcap(to_char(sysdate,'MONTH','nls_date_language=spanish'))) as mes_sistema,
                         sysdate as fecha_registro,
                         TO_CHAR(sysdate,'yyyy') as anho_sistema
                         from dual
                     )tab0
                     ";

            $records = CN_TABLE::executeSQL($sql);
            $fecha_creacion = $records[0]['fecha_sistema'];
            $fecha_registro = $records[0]['fecha_registro'];

            $sql = <<<EOD
select tab0.*,tab1.mail from co_estudios_previos_v tab0
   LEFT JOIN INTERCER_DU tab1 ON tab0.id_supervisor=tab1.id_mae_ter
   where tab0.id_estudios_previos = $id_estudios_previos
EOD;

            $records = CN_TABLE::executeSQL($sql);
            $nroestudio = $records[0]['no_estudios_previos'];
            $responsable = $records[0]['nombre_responsable'];
            $supervisor = $records[0]['razon_soc_sup'];
            $area = $records[0]['area'];
            $valor = $records[0]['valor'];
            $valor = number_format($valor);
            $modalidad = $records[0]['modalidad'];
            $abogado = $records[0]['abogado'];
            $proceso = $records[0]['proceso'];
            $objeto = $records[0]['descripcion'];
            $id_mod_sel = $records[0]['id_modalidad_sel'];
            $fecha_c = $records[0]['fecha_creacion'];
            $fecha_a = $records[0]['fecha_aprobado'];



            $currentUri = "";

            //PARAMETROS GENERALES

            if (!isset($request["email_envio"])) {
                $request["email_envio"] = $correoEnvio;
            }
            /*
             * Variable Memcache
             */

            $progress_key = $request['progress_key'] . $request['username'];
            $this->logMessage("Valor de progress_key: " . $progress_key);

            $array_adjuntos = array();
            $adjunto = false;
            $documento = 'ANM';
            $tipo_doc = '1';
            if ($records[0]['mail'] != null) {
                $email = $records[0]['mail'];
            }
            $nombre = 'Funcionario';
            $rol = '';

            $parametros = $documento . ";" . $tipo_doc . ";" . $email . ";" . $nombre . ";Envio notificacion";

            $datos_usuario = array();

            if ($parametros != "") {
                $datos_usuario = explode('/', $parametros);
            }


            $subject = "ASUNTO: FUE REGISTRADO EL CERTIFICADO OBJETOS IGUALES AL ESTUDIO PREVIO Nro. " . $nroestudio;

            //CUERPO DEL MENSAJE
            $body = "<html><body> </body></html>";
//Body
            $body = <<<EOD
                <html><body> 
                <br/>
                Bogotá, $fecha_creacion
                <br/>
                <br/>
                Señor(a)<br/>
                $nombre<br/>
                <br/><br/>
                Se informa que fue incluido el registro de certificados iguales al estudio previo con las siguientes características:<br/><br/>
                
                <b>Número EP:</b> $nroestudio<br/><br/>
                <b>Responsable:</b> $responsable<br/><br/>
                <b>Supervisor:</b> $supervisor<br/><br/>
                <b>Objeto o Contratista:</b> $objeto<br/><br/>
                <br/><br/>
                </body></html>
EOD;


            CN_TABLE::envioCorreo($request, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $body);
        }



        /*
         * Procesar Request
         */
        //accion add
        if ($Action == "ADD") {
            
        }

        //accion update
        if ($Action == "UPDATE") {
            
        }

        //accion remove
        if ($Action == "REMOVE") {
            
        }

        return $request;
    }

    protected function validateAdd(sfWebRequest $request) {

        $logger = sfContext::getInstance()->getLogger();
        $logger->info("Entro a ValidateAdd");
        //valor por defecto
        $errors = null;

        /*
         *  Validar la operación, ya sea por SQL
         */

        /*
         *  Generar errores en $errors
         */
        $valor_texto = $request['valor_texto'];



        if (strlen($valor_texto) > 4000) {
            $errors['mensaje'] = "El mensaje Introductorio debe ser menor a 4000 caracteres.";
            $errors['servicio'] = "contratación";
            $logger->info("El mensaje Introductorio debe ser menor a 4000 caracteres.");
        }



        return $errors;
    }

    protected function validateRemove(sfWebRequest $request) {

        //valor por defecto
        $errors = null;

        /*
         *  Validar la operación, ya sea por SQL
         */

        /*
         *  Generar errores en $errors
         */

        return $errors;
    }

    protected function validateUpdate(sfWebRequest $request) {
        $logger = sfContext::getInstance()->getLogger();
        $logger->info("Entro a validateUpdate");
        //valor por defecto
        $errors = null;

        /*
         *  Validar la operación, ya sea por SQL
         */

        /*
         *  Generar errores en $errors
         */
        $valor_texto = $request['valor_texto'];



        if (strlen($valor_texto) > 4000) {
            $errors['mensaje'] = "El mensaje Introductorio debe ser menor a 4000 caracteres.";
            $errors['servicio'] = "contratación";
            $logger->info("El mensaje Introductorio debe ser menor a 4000 caracteres.");
        }




        return $errors;
    }

}
