<?php

//Muestro tantas opciones de elegir tarifa como usuarios seleccionados
// en el módulo
//$tpl->touchBlock('tUsuarios');
//$tpl->setCurrentBlock('tNumeroUsuario');

// Si es de horas valle las tarifas a mostrar serán del tipo de servicio
// comprado (Bono o Entrada Única)
if (!empty($tipo_compra)) {
    $servicio = $tipo_compra;
}

// TARIFAS SERVICIO
// Tarifas a elegir para cada usuario
// CASO DE VENIR LA RESERVA DEL MÓDULO
if ($web == 0) {

    // Marco como plazas de adulto las seleccionadas en el módulo
    // y tarifa correspondiente a ese número de plazas
    $plazas_adulto = $usuarios;

    // Calculo tarifa si no la tengo
    if ($tarifa_id == '') {
        // Calculo tarifa a mostrar según número de plazas y servicio
        $sql_tarifas = "SELECT t.precio, t.id, t.pago_grupo, ug.nombre, ug.maximo_usuarios, ug.minimo_usuarios
                        FROM tarifas t JOIN usuarios_grupos ug ON t.usuarios_grupo_id = ug.id
                        AND ug.activo = 1
                        AND ug.mostrar_precio = 1
                        AND t.seleccionable = 1
                        AND t.servicio_id = " . $servicio . "
                        ORDER BY ug.especial ASC, ug.maximo_usuarios ASC";
    }

    // Muestro tarifas
    $sql_tarifas = "(SELECT t.precio, ug.nombre, t.id, t.pago_grupo, ug.especial, ug.id as IdG
                     FROM tarifas t JOIN usuarios_grupos ug ON t.usuarios_grupo_id = ug.id
                     AND ug.activo = 1
                     AND ug.mostrar_precio = 1
                     AND t.seleccionable = 1
                     AND t.servicio_id = " . $servicio . ")
                    UNION
                    (SELECT t.precio, ug.nombre, t.id, t.pago_grupo, ug.especial, ug.id as IdG
                     FROM tarifas t JOIN usuarios_grupos ug ON t.usuarios_grupo_id = ug.id
                     JOIN grupos_pagos_servicios gp ON ug.id = gp.usuarios_grupos_id
                     AND ug.especial = 1
                     AND ug.activo = 1
                     AND ug.mostrar_precio = 1
                     AND t.seleccionable = 1
                     AND t.servicio_id = " . $servicio . "
                     AND gp.servicio_id = " . $servicio . ")
                     ORDER BY especial ASC";

    $result_tarifas_usuarios = $conexion->query($sql_tarifas);

    if ($result_tarifas_usuarios->rowCount() > 0) {

        $tpl->setVariable('SELECCIONTARIFA', '<option value="">Seleccione Tarifa</option>');

        foreach ($result_tarifas_usuarios->fetchAll() as $row_tarifa_usuarios) {

            $tpl->setVariable('IDTARIFAUSUARIO', $row_tarifa_usuarios['id']);
            $tpl->setVariable('TARIFAUSUARIO', $language->getString($row_tarifa_usuarios['nombre']));

            // Marco tarifa seleccionada
            if ($row_tarifa_usuarios['id'] == $tarifa_id) {
                $tpl->setVariable('SELECTEDTARIFA', 'selected');

                // Precio de la tarifa seleccionada, al volver del carrito
                if ($row_tarifa_usuarios['pago_grupo'] == 0) {
                    $precio = $row_tarifa_usuarios['precio'] * $plazas_adulto;
                } else {
                    $precio = $row_tarifa_usuarios['precio'];
                }

                $precio = sprintf('%0.2f', $precio);

                $tpl->setVariable('TOTALADULTO', $precio . ' €');
                $tpl->setVariable('PRECIOTOTAL', $precio . ' €');
                $tpl->setVariable('TOTALCARRITO', $precio);

                // Grupo de usuarios de la tarifa
                $grupo_usuarios = $row_tarifa_usuarios['IdG'];
            }

            $tpl->parse('tSeleccionTarifa');
        }

    }
}
// RESERVA DESDE SECCIÓN NUEVA DE RESERVAR
else {

   // Viene con tarifa calculada
    $sql_tarifas = "(SELECT t.precio, ug.nombre, t.id, t.pago_grupo, ug.especial, ug.id as IdG, ug.orden
                     FROM tarifas t JOIN usuarios_grupos ug ON t.usuarios_grupo_id = ug.id
                     AND ug.activo = 1
                     AND t.seleccionable = 1
                     AND ug.mostrar_precio = 1
                     AND t.servicio_id = " . $servicio . "
                     AND t.id IN (" . $tarifa_id . ")
                     ORDER BY t.id ASC)
                    UNION
                    (SELECT t.precio, ug.nombre, t.id, t.pago_grupo, ug.especial, ug.id as IdG, ug.orden
                     FROM tarifas t JOIN usuarios_grupos ug ON t.usuarios_grupo_id = ug.id
                     JOIN grupos_pagos_servicios gp ON ug.id = gp.usuarios_grupos_id
                     AND ug.especial = 1
                     AND ug.activo = 1
                     AND t.seleccionable = 1
                     AND ug.mostrar_precio = 1
                     AND t.servicio_id = " . $servicio . "
                     AND gp.servicio_id = " . $servicio . "
                     ORDER BY t.id ASC)";

    $result_tarifas_usuarios = $conexion->query($sql_tarifas);

    $tarifas_usuarios = $result_tarifas_usuarios->fetchAll();

    foreach ($tarifas_usuarios as $key => $row) {
        $aux[$key] = $row['orden'];
    }

    array_multisort($aux, SORT_ASC, $tarifas_usuarios);

    $k            = 0;
    $precio_total = 0;
    foreach ($tarifas_usuarios as $row_tarifa_usuario) {
        $tpl->setVariable('IDTARIFAUSUARIO', $row_tarifa_usuario['id']);
        $tpl->setVariable('TARIFAUSUARIO', $language->getString($row_tarifa_usuario['nombre']));
        $tpl->setVariable('TARIFAIDGRUPOUSUARIO', $row_tarifa_usuario['IdG']);

        // Precio de la tarifa seleccionada
        if ($row_tarifa_usuario['pago_grupo'] == 0) {
            $precio = $row_tarifa_usuario['precio'] * $lista[$k];
        } else {
            $precio = $row_tarifa_usuario['precio'];
        }
        $precio_total += $precio;
        $precio = sprintf('%0.2f', $precio);

        if ($precio != 0) {
            $tpl->setVariable('TOTALADULTO', $precio . ' €');
        } else {
            $tpl->setVariable('TOTALADULTO', '-'/*$language->getString('Gratuito', true)*/);
        }

        $tpl->setVariable('NUMTARIFACARRITO', $lista[$k]);

        // Grupo de usuarios de la tarifa
        $grupo_usuarios = $row_tarifa_usuario['IdG'];

        $tpl->parse('tTarifasLista');
        $k++;
    }

    if ($precio_total != 0) {
        $precio_format = number_format($precio_total, 2);
        $tpl->setVariable('PRECIOTOTAL', $precio_format . ' €');
    } else {
        $tpl->setVariable('PRECIOTOTAL', '-'/*$language->getString('Gratuito', true)*/);
    }

    $tpl->setVariable('TOTALCARRITO', $precio_total);
}

// SELECCIÓN DE USUARIOS
// Viene desde el módulo
if ($web == 0) {
    // Número de adultos
    for ($i = 0; $i <= 40; $i++) {
        $tpl->setVariable('NUMEROADULTOS', $i);

        // Dejo seleccionados número de adultos elegidos
        if (($plazas_adulto != '') && ($i == $plazas_adulto)) {
            $tpl->setVariable('SELECTEDADULTOS', 'selected');
        }

        $tpl->parse('tNumeroAdultos');
    }

    // Número de niños
    // Sólo se puede 5 niños como máximo en un grupo de 40
    // Compruebo si ya hay niños apuntados a la visita en el horario seleccionado
    $sql_infantil = "SELECT sum(l.plazas_infantil) as plazas_infantil
                     FROM localizadores l JOIN reservas r ON l.localizador = r.localizador
                     AND r.sala_horario_id = " . $hora;

    $result_infantil = $conexion->query($sql_infantil);

    if ($result_infantil->rowCount() > 0) {
        $row_infantil = $result_infantil->fetch();
        $num_maximo   = 5 - $row_infantil['plazas_infantil'];

    } else {
        $num_maximo = 5;
    }

    for ($i = 0; $i <= $num_maximo; $i++) {
        $tpl->setVariable('NUMEROINFANTIL', $i);

        // Dejo seleccionados número de niños elegidos
        if (($plazas_infantil != '') && ($i == $plazas_infantil)) {
            $tpl->setVariable('SELECTEDINFANTIL', 'selected');
        }

        $tpl->parse('tNumeroInfantil');
    }
} else {
    $tpl->setVariable('READONLY', 'readonly');
}
