<?php

// ENVÍO DE CORREO LOS DATOS DE LA RESERVA
//require_once DIRLIBCOMP . 'mail/class.phpmailer.php';
require_once 'datos_ventas_analytics_hit.php';

require_once DIRLIBCOMP . 'QR/phpqrcode.php';

require_once DIRLIBCOMP . 'autoload.php';

use Passbook\PassFactory;
use Passbook\Pass\Barcode;
use Passbook\Pass\Field;
use Passbook\Pass\Image;
use Passbook\Pass\Structure;
use Passbook\Type\EventTicket;

//$archivo_qr = DIRWEBROOT . 'img/QR/' . $localizador . '.png';
$archivo_qr = CARPETAPROYECTO . '/modules/visitas/reservas/images/QR/' . $localizador . '.png';

if (!file_exists($archivo_qr)) {
    QRcode::png($localizador, $archivo_qr, QR_ECLEVEL_L, 6);
}

//$mail = new PHPMailer();

require_once DIRLIBCOMP . 'mail/PHPMailer.php';
require_once DIRLIBCOMP . 'mail/SMTP.php';
require_once DIRLIBCOMP . 'mail/Exception.php';

$mail = new PHPMailer\PHPMailer\PHPMailer( true );

$correo = obtenerDatosCorreo();

// -----------SMTP--------------
// Con PluginDir le indicamos a la clase phpmailer donde se
// encuentra la clase smtp que como he comentado al principio de
// este ejemplo va a estar en el subdirectorio includes
$mail->CharSet   = "UTF-8";
$mail->Encoding = 'base64';
// $mail->PluginDir = "";
// Con la propiedad Mailer le indicamos que vamos a usar un servidor smtp
$mail->Mailer = "smtp";
//Le indicamos el content-type HTML
$mail->isHTML(true);
$mail->SMTPSecure = 'tls';
// Asignamos a Host el nombre de nuestro servidor smtp
$mail->Host = MAILHOST;
// Le indicamos que el servidor smtp requiere autenticación
$mail->SMTPAuth = MAILSMTPAUTH;
// Le decimos cual es nuestro nombre de usuario y password
$mail->Username = $correo['user'] ?? MAILUSER;
$mail->Password = $correo['pass'] ?? MAILPASS;
// Asignamos a Host el nombre de nuestro servidor smtp
$mail->Port = MAILPORT;
$mail->From = $correo['mail'] ?? MAILFROM;
$mail->SetLanguage(strtolower(substr($language->getSessionLang(), 0, -3)), DIRLIBCOMP . 'mail/');
//$mail->AddCustomHeader('Reply-to:informacion.bodegas@pruebajig.es');
//$mail->SMTPDebug = 2;
$mail->FromName = "=?UTF-8?B?" . base64_encode(mb_convert_encoding('Reservas ' . $instalacion, "UTF-8", mb_detect_encoding('Reservas ' . $instalacion))) . "=?=";
//para que coja la 'ñ';

$subject = $language->getString('Compra de Extra realizada') . ' - ' . $instalacion . ' - ' . $language->getString($servicio);

$mail->Subject  = "=?UTF-8?B?" . base64_encode(mb_convert_encoding($subject, "UTF-8", mb_detect_encoding($subject)))."=?=";

$tarifas_nombre  = array();
$precios         = array();
$unidades_tarifa = array();



// Muestro información de las tarifas seleccionadas
$sql_tarifa_carrito = "SELECT lt.*, ug.nombre, t.precio, t.pago_grupo, t.usuarios_grupo_id
                       FROM localizador_tarifas lt JOIN tarifas t ON lt.tarifa_id = t.id
                       JOIN usuarios_grupos ug ON t.usuarios_grupo_id = ug.id
                       AND lt.localizador = '" . $localizador . "'";

$result_tarifa_carrito = $conexion->query($sql_tarifa_carrito);

if ($result_tarifa_carrito->rowCount() > 0) {
    while ($row_tarifa = $result_tarifa_carrito->fetch(PDO::FETCH_ASSOC)) {

        $nombre_tarifa    = $row_tarifa['nombre'];
        $tarifas_nombre[] = $language->getString($nombre_tarifa, true);

        // Precio con dos decimales
        // Compruebo si precio es por grupo o por persona
        if ($row_tarifa['pago_grupo'] == 0) {
            $precio = $row_tarifa['precio'] * $row_tarifa['plazas_adulto'];
        } else {
            $precio = $row_tarifa['precio'];
        }

        $precio            = sprintf('%0.2f', $precio);
        $precios[]         = $precio;
        $unidades_tarifa[] = $row_tarifa['plazas_adulto'];
    }

}

// Obtenemos el id dels ervicio
$sql_servicio    = "select id, gastro_bar, regalo from servicios where nombre = '" . $servicio . "'";
$result_servicio = $conexion->query($sql_servicio);

if ($result_servicio->rowCount() > 0) {
    $row_servicio = $result_servicio->fetch(PDO::FETCH_ASSOC);
    $id_servicio  = $row_servicio['id'];
    $gastro_bar   = $row_servicio['gastro_bar'];
    $regalo       = $row_servicio['regalo'];
} else {
    $id_servicio = 0;
    $gastro_bar  = 0;
    $regalo      = 0;
}

if ($total == 0) {
    $total = $language->getString('Gratuito', true);
} else {
    $total = (float) $total;
}

$long = sizeof($precios);
for ($i = 0; $i < $long; $i++) {
    if ($precios[$i] == 0) {
        $precios[$i] = $language->getString('Gratuito', true);
    } else {
        $precios[$i] = (float) $precios[$i];
    }
}

$protocol   = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
$domainLink = $protocol . '://' . $_SERVER['HTTP_HOST'];
$loc_encryp = encriptar($localizador);

//TODO: De momento los extras no tienen cupones
// Comprobamos si tiene un cupón de descuento asignado
$cupon_correo = "";
// $sql_localizador_completo    = "SELECT * FROM localizadores WHERE localizador = '" . $localizador . "'";
// $result_localizador_completo = $conexion->query($sql_localizador_completo);
// $row_localizador_completo    = $result_localizador_completo->fetch(PDO::FETCH_ASSOC);

// $cupon_correo = "";
// if ($row_localizador_completo['bono'] != '') {
//     $sql_cupon_correo    = "SELECT * FROM bonos WHERE codigo = '" . $row_localizador_completo['bono'] . "' ";
//     $result_cupon_correo = $conexion->query($sql_cupon_correo);

//     if ($result_cupon_correo->rowCount() > 0) {
//         $cupon_correo = $result_cupon_correo->fetch(PDO::FETCH_ASSOC);
//     }
// }

// Paso de datos a la plantilla
$compra = array(
    'localizador_extra'         => !empty($localizador_extra) ? $localizador_extra : '',
    'localizador'               => !empty($localizador) ? $localizador : '',
    'nombre'                    => !empty($nombre) ? $nombre : '',
    'apellidos'                 => !empty($apellidos) ? $apellidos : '',
    'telefono'                  => !empty($telefono) ? $telefono : '',
    'email'                     => !empty($email) ? $email : '',
    'actividad'                 => !empty($actividad) ? $actividad : '',
    'servicio'                  => !empty($servicio) ? $servicio : '',
    'instalacion'               => !empty($instalacion) ? $instalacion : '',
    'fecha_reserva'             => !empty($fecha_reserva) ? $fecha_reserva : '',
    'horario'                   => !empty($hora_inicio) ? $hora_inicio : '',
    'total'                     => !empty($total) ? $total : '',
    'esTipoCompra'              => !empty($esTipoCompra) ? $esTipoCompra : '',
    'servicio_reserva'          => !empty($servicio_reserva) ? $servicio_reserva : '',
    'unidades'                  => !empty($unidades) ? $unidades : '',
    'tarifas_nombre'            => !empty($tarifas_nombre) ? $tarifas_nombre : array(),
    'precios'                   => !empty($precios) ? $precios : array(),
    'unidades_tarifa'           => !empty($unidades_tarifa) ? $unidades_tarifa : array(),
    'tarifas_nombre_extra'      => !empty($tarifas_nombre_extra) ? $tarifas_nombre_extra : array(),
    'precios_extra'             => !empty($precios_extra) ? $precios_extra : array(),
    'unidades_tarifa_extra'     => !empty($unidades_tarifa_extra) ? $unidades_tarifa_extra : array(),
    'fecha_compra'              => !empty($fecha_compra) ? $fecha_compra : '',
    'fecha_realizada_reserva'   => !empty($fecha_realizada_reserva) ? $fecha_realizada_reserva : '',
    'plazas'                    => !empty($plazas) ? $plazas : '',
    'creditos'                  => !empty($creditos) ? $creditos : '',
    'creditos_totales'          => !empty($creditos_totales) ? $creditos_totales : '',
    'creditos_restantes'        => !empty($creditos_restantes) ? $creditos_restantes : '',
    'id_pedido'                 => !empty($id_pedido) ? $id_pedido : '',
    'pago_instalacion'          => !empty($pago_instalacion) ? $pago_instalacion : '',
    'pistas'                    => !empty($pistas) ? $pistas : '',
    'opciones_seleccionadas'    => !empty($opciones_seleccionadas) ? $opciones_seleccionadas : '',
    'campos_extra'              => !empty($campos_extra) ? $campos_extra : array(),
    'plazas_adulto'             => !empty($plazas_adulto) ? $plazas_adulto : '',
    'plazas_infantil'           => !empty($plazas_infantil) ? $plazas_infantil : '',
    'pago_seleccionado'         => !empty($pago_seleccionado) ? $pago_seleccionado : '',    
    'descuento_coste'           => !empty($descuento_coste) ? $descuento_coste : '',
    'message_generico_emailPdf' => !empty($message_generico_emailPdf) ? $message_generico_emailPdf : '',
    'message_servicio_emailPdf' => !empty($message_servicio_emailPdf) ? $message_servicio_emailPdf : '',
    'condiciones_servicio'      => !empty($condiciones_servicio) ? $condiciones_servicio : '',
    'condiciones_extra'         => !empty($condiciones_extra) ? $condiciones_extra : '',
    'pago_parcial'              => !empty($pago_parcial) ? $pago_parcial : '',
    'descuento_coste_realizado' => !empty($descuento_coste_realizado) ? $descuento_coste_realizado : '',
    'tipo_aplicado'             => !empty($tipo_aplicado) ? $tipo_aplicado : '',
    'idioma_visita'             => !empty($idioma_visita) ? $idioma_visita : '',
    'extras_seleccionados'      => !empty($extras_seleccionados) ? $extras_seleccionados : array(),
    'domainLink'                => !empty($domainLink) ? $domainLink : '',
    'loc_encryp'                => !empty($loc_encryp) ? $loc_encryp : '',
    'cupon'                     => !empty($cupon_correo) ? $cupon_correo : '',
    'instalacion_descripcion'   => !empty($instalacion_desc) ? $instalacion_desc : '',
    'instalacion_mapa'          => !empty($instalacion_mapa) ? $instalacion_mapa : '',
    'instalacion_prepago'       => !empty($instalacion_enlace) ? $instalacion_enlace : ''
);


//generamos el .pkpass
// generatePKPass($compra);
// TODO descomentar para cuando tengamos todo
//gaHitTransaction($pago_seleccionado, $localizador, $total, $actividad, $servicio, $idioma_visita, $id_servicio, $extras_seleccionados);

ob_start();

$subject = $language->getString('Compra Realizada',true) . ' - ' . $instalacion . ' - ' . $language->getString($servicio);
$mail->Subject  = "=?UTF-8?B?" . base64_encode(mb_convert_encoding($subject, "UTF-8", mb_detect_encoding($subject)))."=?=";
require DIRLIBCOMP . 'mail/plantillas_correo/' . (!empty($_SESSION["visitas_lang"]) ? $_SESSION["visitas_lang"] : 'es_ES') . '/correo_compra_extra.php'; //Plantilla de correo

$body = ob_get_contents();
ob_end_clean();

$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->Body    = $body;

// Envío de correo yo, nosotros, cliente(si lo puso) y bodega
// Yo
// Envío de correo a debug 
$emails_debug = (array)json_decode($_ENV['MAIL_TO_NOTIFY_DEBUG'],true);
//Envío de correo
if (is_array($emails_debug) === true) {
    foreach ($emails_debug as $email_ua => $email_data) {        
        $destinatarios[] = array(
            'nombre' => $email_data['nombre'],
            'email'  => $email_data['email']);
    }
}

// Envío de correo yo, nosotros, cliente(si lo puso) y bodega
if (ENVIRONMENT == 'production') {
    //Bodega y eshop
    $emails_notify = (array)json_decode($_ENV['MAIL_TO_NOTIFY'],true);

    if (is_array($emails_notify) === true) {
        foreach ($emails_notify as $email_ua => $email_data) {        
            $destinatarios[] = array(
                'nombre' => $email_data['nombre'],
                'email'  => $email_data['email']);
        }
    }
    // Cliente
    if ($email != '') {
        $email_ua        = $email;
        $destinatarios[] = array(
            'nombre' => $nombre,
            'email'  => $email,
        );
    }

}

if (is_array($destinatarios) === true) {
    foreach ($destinatarios as $destino) {
        $mail->AddAddress($destino['email'], $destino['nombre']);
        if ($mail->Send()) {
            //return true;
        } else {
            //return false;
        }
        $mail->ClearAddresses();
    }
}

