<?php

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

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

        $this->logMessage("---function executeList");
        $this->logMessage("---BEGIN Logging request");

        $status = 0;

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

        $records = array();

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

        /*
         * Formato de fecha
         */
        //Sql
        $sql = <<<EOD
ALTER SESSION SET NLS_DATE_FORMAT = "YYYY-MM-DD HH24:MI:SS" 
EOD;
        //Ejecutar SQL
        CN_TABLE::executeSQL($sql);

        try {

            $id_formato_factura = $request['id_formato_factura'];

            /**
             * Validar que este el nombre adjunto a actualizar
             */
            if (isset($request['adjunto_op'])) {

                /**
                 * Envia correo
                 */
                /*
                 * (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++;
                }


                $adjunto_op = $request['adjunto_op'];

                /**
                 * adjunto_op
                 */
                $sql = <<<EOD
update rvsp_formato_factura set adjunto_op = '$adjunto_op' 
where id_formato_factura = $id_formato_factura
EOD;
                $this->conn->execute($sql);


                //Sql
                $sql = <<<EOD
SELECT
    *
FROM RVSP_CORREOS_ALERTAS
where estado = '1' 
EOD;
                //Ejecutar SQL
                $records_correos = CN_TABLE::executeSQL($sql);


                /**
                 * Envio -Se generara todos los días, teniendo en cuenta la fecha desde y hasta del registro en el cronograma.
                  -Se generara al Responsable y al coordinador establecido en el registro.
                  -Todas las alertas deben tener copia a karen.rodriguez@anm.gov.co y al correo servicios.administrativos2@anm.gov.co
                  - Se genera una alerta por registro realizado en el cronograma.
                 */
                //Consulta datos envio correo
                //Sql
                $sql = <<<EOD
select 
fact.id_formato_factura,
fact.no_factura,
fact.adjunto_op,

'$correoEnvio' as email_envio,
null as mensaje_extra,
'' as mensaje_firma,
'Cordial Saludo,</br></br>
El presente correo es para informarle que se realizó la adjunción de la Orden de Pago en la factura número ('|| fact.no_factura  ||')
</br></br>
Puede verificarlo en el módulo servicios Públicos.' as mensaje,

--datos de envio
usu.num_doc as num_doc_env,
usu.id_tipo_doc as id_tipo_doc_env,
usu.nombre || ' ' ||usu.apellido as razon_social_env,
usu.email as correo_env,
                            
--Datos correo apoyo
nvl(usu_aut.num_doc,'') as num_doc_apoyo,
usu_aut.id_tipo_doc as id_tipo_doc_apoyo,
usu_aut.nombre || ' ' ||usu_aut.apellido as razon_soc_apoyo,
nvl(usu_aut.email,'') as correo_apoyo
                            
from rvsp_formato_factura_v fact

left join usuario usu 
on usu.username = fact.usuario_log

--Autorizado
left join RVSP_FORMATO_FACTURA_ESTADO aut on aut.ID_FORMATO_FACTURA= fact.ID_FORMATO_FACTURA and aut.ID_ESTADO = 4
left join usuario usu_aut on usu_aut.username = aut.USUARIO_LOG

where
fact.id_formato_factura = $id_formato_factura   
EOD;
                //Ejecutar SQL
                $records_total = CN_TABLE::executeSQL($sql);

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

                foreach ($records_total as $records) {

                    $report_params = $records;
                    $no_factura = $records['no_factura'];

                    //Ejemplo de la persona que se envia el correo: 
                    //123;1;pepito perez;correo@gmal.com
                    $num_doc_env = $records['num_doc_env'];
                    $id_tipo_doc_env = $records['id_tipo_doc_env'];
                    $razon_social_env = $records['razon_social_env'];
                    $correo_env = $records['correo_env'];
                    //DATOS APOYO - 20180620
                    $num_doc_apo = $records['num_doc_apoyo'];
                    $id_tipo_doc_apo = $records['id_tipo_doc_apoyo'];
                    $razon_social_apo = $records['razon_social_apoyo'];
                    $correo_apo = $records['correo_apoyo'];

                    //Cada 1 por correo
                    /*
                      $datos_usuario = array(
                      '0' => $num_doc_env . ';' . $id_tipo_doc_env . ';' . $razon_social_env . ';' . $correo_env,
                      '1' => $num_doc_apo . ';' . $id_tipo_doc_apo . ';' . $razon_social_apo . ';' . $correo_apo
                      );

                      //correos extra segun tala
                      $cant_du = 2;
                      foreach ($records_correos as $value) {
                      $datos_usuario[$cant_du] = $value['num_doc'] . ';' . 1 . ';' . $value['nombres'] . ';' . $value['email'];
                      $cant_du++;
                      } */
                    //Correos con copía
                    $datos_usuario = array(
                        '0' => $num_doc_env . ';' . $id_tipo_doc_env . ';' . $razon_social_env . ';' . $correo_env
                    );
                    $records_correos[count($records_correos)] = array(
                        'num_doc' => $num_doc_apo,
                        'nombres' => $razon_social_apo,
                        'apellidos' => '',
                        'estado' => 1,
                        'email' => $correo_apo
                    );
                    //correos extra segun tala
                    $cant_du = 0;
                    foreach ($records_correos as $value) {
                        $ccRecipients[$cant_du] = array(
                            'num_doc' => $value['num_doc'],
                            'id_tipo_doc' => 1,
                            'name' => $value['nombres'] . ' ' . $value['apellidos'],
                            'email' => $value['email']
                        );
                        $cant_du++;
                    }


                    $subject = "Notificación Orden de Pago cargada, No. Factura: " . $no_factura;
                    $currentUri = '';
                    $uploadDir = sfConfig::get("sf_upload_dir");
                    $adjunto = true;
                    $ruta = $uploadDir . '/adj_facturasp/';
                    $progress_key = $request['comando'] . $request['username'];
                    $array_adjuntos = array(
                        $adjunto_op => $adjunto_op
                    );
                    $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, $ccRecipients);
                }

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


            $this->conn->commit();
            $this->status = 0;
            $this->list_data = array();
            $this->logMessage("[rvsp_formato_fact_adj_op] Exitoso.");
        } catch (Exception $e) {

            /*
             * ROLLBACK DE TODAS LAS TRANSACCIONES EN CASO DE QUE OCURRA ALGUN ERROR
             */
            $this->conn->rollback();
            $this->status = 1;
            $this->mensajeError = "[rvsp_formato_fact_adj_op] Validación: " . $e->getMessage();
            $this->list_data = array();
            $this->logMessage("[rvsp_formato_fact_adj_op] ERROR!");
            $this->logMessage($e->getMessage());
        }
    }

}
