<?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'
        )
    ); //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.* from co_estudios_previos_v tab0 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';
                $email = 'vanessa.pacheco@anm.gov.co';
                $nombre = 'Vanessa Pacheco';
                $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;
        
    }
}
