<?php

/**
 * curl_envio_correo actions.
 * http://soporte14.sofhouse.net/cartera/web/api_dev.php/api/curl_envio_correo/list.json?recipients=lavila@sofhouse.net;lavila
 *
 * @package    cartera
 * @subpackage curl_envio_correo
 * @author     Manuel Enrique Paredes Lopez
 * @version    SVN: $Id: actions.class.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class curl_envio_correoActions extends sfActions {

    /**
     * Executes list 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("---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 {

            $this->logMessage("[curl_envio_correo] Envio de correo INCIO");

            /*
             * (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 ('entidad_nombre' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $entidadNombre = $value;
                        }
                    }
                }
                if ('correoEnvio' == $routeName) {
                    foreach ($routeData as $key => $value) {
                        //echo $value . "\n";
                        if ($key == 'value') {
                            $correoEnvio = $value;
                        }
                    }
                }
                $int++;
            }

            /*
             * variables por defecto para el registro de log
             */
            $id_tabla = $request['id_tabla'];

            /*
             * obtener id maestro tabla
             */
            $id_mae_bd = $request['id_mae_bd'];

            /**
              1	CONSULTAR
              2	ACTUALIZAR
              3	ADICIONAR
              4	ELIMINAR
              5	ANULAR
             */
            $id_ope_bd = 1;

            //id del maestro tercero
            $id_mae_ter = 1;
            if (isset($request['id_username'])) {
                if (!is_null($request['username']) && $request['username'] != '') {
                    $id_mae_ter = $request['id_username'];
                }
            }

            //username
            $username = 'admin';
            if (isset($request['username'])) {
                if (!is_null($request['username']) && $request['username'] != '') {
                    $username = $request['username'];
                }
            }

            //comando de la funcionalidad
            $comando = 'sin comando';
            if (isset($request['comando'])) {
                $comando = $request['comando'];
            }
            
            //ruta
            $ruta = '';
            $c = false;
            if (isset($request['ruta'])) {
                if (!is_null($request['ruta']) && $request['ruta'] != '') {
                    $ruta = $request['ruta'];
                    $c = true;
                }
            }
            
            //adjunto
            $adjunto = false;
            if (isset($request['adjunto'])) {
                if (!is_null($request['adjunto']) && $request['adjunto'] != '') {
                    $adjunto = true;
                }
            }
            
            //nombre_reporte
            $nombre_reporte = '';
            if (isset($request['nombre_reporte'])) {
                if (!is_null($request['nombre_reporte']) && $request['nombre_reporte'] != '') {
                    $nombre_reporte = $request['nombre_reporte'];
                }
            }
            
            
            
            //construir observacion
            $observacion_log = "'Llamado a envio de correo de cobro: " . $comando . "'";

            /*
             * registro de consulta en tabla de log
             */
            $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $id_mae_ter, $username, $comando, $observacion_log);


            /**
             * Envio correo si tiene
             */
            $this->logMessage("Envio correo si tiene");
                if($c==false){
                    $report_params = array(
                        'email_envio' => $request['email_envio'],
                        'email' => $request['email'],
                        'mensaje_extra' => $request['mensaje_extra'],
                        'mensaje_extra_gwt' => $request['mensaje_extra_gwt'],
                        'referencia' => $request['referencia'],
                        'num_doc' => $request['num_doc'],
                        'nombre_completo' => $request['nombre_completo'],
                        'arrayadjuntos' => $request['arrayadjuntos'],
                        'mensaje_firma' => $request['mensaje_firma'],
                        'mensaje' => $request['mensaje']
                    );           
                    $adjunto=false;
                }else{
                    $report_params = array(
                        'email_envio' => $request['email_envio'],
                        'email' => $request['email'],
                        'mensaje_extra' => $request['mensaje_extra'],
                        'mensaje_extra_gwt' => $request['mensaje_extra_gwt'],
                        'referencia' => $request['referencia'],
                        'num_doc' => $request['num_doc'],
                        'nombre_completo' => $request['nombre_completo'],
                        'mensaje_firma' => $request['mensaje_firma'],
                        'mensaje' => $request['mensaje']
                    );                
                    $adjunto=true;
                }

            $cod_titulo = $request['cod_titulo'];
            $num_doc = $request['num_doc'];
            $numero_remision = $request['numero_remision'];
            $id_anhos = $request['id_anhos'];
            $mensaje = $request['mensaje'];

            /**
             * ENVIO
             */
            if (isset($request['correo_env']) && $request['correo_env'] != null) {
                $this->logMessage("curl_envio_correo ENVIO");
                //Ejemplo de la persona que se envia el correo: 
                //123;1;pepito perez;correo@gmal.com
                $num_doc_env = $request['num_doc_env'];
                $id_tipo_doc_env = $request['id_tipo_doc_env'];
                $razon_social_env = $request['razon_social_env'];
                $correo_env = $request['correo_env'];
                $datos_usuario = array(
                    '0' => $num_doc_env . ';' . $id_tipo_doc_env . ';' . $razon_social_env . ';' . $correo_env
                );

                $subject = $request['subject'];
                $currentUri = '';
                //$ruta = '';
                //$adjunto = false;
                $progress_key = $request['comando'] . $request['username'];
                if($nombre_reporte!=''){
                    $array_adjuntos = array(
                        $nombre_reporte => $nombre_reporte
                    );
                }else{
                    $array_adjuntos = array();
                }

                $entidad_cliente = $entidadCliente;
                $entidad_nombre = $entidadNombre;
                $addAddress = true;

                $this->logMessage("Subject: " . $subject);

                CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
            }

            /**
             * USUARIO
             */
            if (isset($request['correo_usu']) && $request['correo_usu'] != null && c==false) {
                $this->logMessage("curl_envio_correo USUARIO");
                //Ejemplo de la persona que se envia el correo: 
                //123;1;pepito perez;correo@gmal.com
                $num_doc_usu = $request['num_doc_usu'];
                $id_tipo_doc_usu = $request['id_tipo_doc_usu'];
                $razon_social_usu = $request['razon_social_usu'];
                $correo_usu = $request['correo_usu'];
                $datos_usuario = array(
                    '0' => $num_doc_usu . ';' . $id_tipo_doc_usu . ';' . $razon_social_usu . ';' . $correo_usu
                );

                $subject = $request['subject'];
                $currentUri = '';
                $ruta = '';
                $adjunto = false;
                $progress_key = $request['comando'] . $request['username'];
                $array_adjuntos = array();
                $entidad_cliente = $entidadCliente;
                $entidad_nombre = $entidadNombre;
                $addAddress = true;

                $this->logMessage("Subject: " . $subject);

                CN_TABLE::envioCorreo($report_params, $datos_usuario, $subject, $currentUri, $ruta, $adjunto, $progress_key, $array_adjuntos, $entidad_cliente, $entidad_nombre, $addAddress);
            }

            $this->logMessage("FIN Envio correo");

            //construir observacion
            $mensaje = $observacion_log = "'Envio de correo del proceso del asunto: " . $subject . "'";

            /*
             * registro de consulta en tabla de log
             */
            $sql = CN_TABLE::registroTableLog($id_tabla, $id_ope_bd, $id_mae_bd, $id_mae_ter, $username, $comando, $observacion_log);

            $this->status = 0;
            $this->list_data = array(
                array(
                    'mensaje' => $mensaje,
                    'servicio' => 'curl_envio_correo',
                    'modulo' => 'NOMINA'
                )
            );

            $this->logMessage("[curl_envio_correo] Envio de correo FIN");
        } catch (Exception $e) {
            $mensaje = "[curl_envio_correo] ERROR!!!";

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

}
