<?php
session_start();

// CORREGIDO: Ahora se verifica si el rol es 'Revendedor' para permitir el acceso.
if (!isset($_SESSION['consulta']['rol']) || $_SESSION['consulta']['rol'] !== 'Revendedor') {
    header('Location: login_consulta.php');
    exit;
}

require_once 'config.php';
require_once 'config_ui.php'; 
require_once 'header_publico.php';

$id_revendedor = $_SESSION['consulta']['uid'];
$id_admin_propietario = $_SESSION['consulta']['id_admin_propietario'];

// Obtener el teléfono del admin propietario
$stmt_admin = $pdo->prepare("SELECT telefono FROM usuarios WHERE id = ?");
$stmt_admin->execute([$id_admin_propietario]);
$telefono_admin = $stmt_admin->fetchColumn();

// Obtener todas las plataformas para el filtro
$plataformas = $pdo->query("SELECT id, nombre FROM plataformas ORDER BY nombre ASC")->fetchAll(PDO::FETCH_ASSOC);

// Lógica de filtrado
$fecha_hasta = $_GET['fecha_hasta'] ?? '';
$plataforma_filtro_id = filter_input(INPUT_GET, 'plataforma_filtro', FILTER_VALIDATE_INT);

$sql_cuentas = "
    SELECT cs.correo, p.nombre AS plataforma_nombre, cs.fecha_renovacion
    FROM asociaciones a
    JOIN correos_servicios cs ON a.id_correo_servicio = cs.id
    JOIN plataformas p ON cs.id_plataforma = p.id
    WHERE a.id_usuario = ?
";
$params = [$id_revendedor];

if (!empty($fecha_hasta)) {
    $sql_cuentas .= " AND cs.fecha_renovacion <= ?";
    $params[] = $fecha_hasta;
}

if ($plataforma_filtro_id) {
    $sql_cuentas .= " AND cs.id_plataforma = ?";
    $params[] = $plataforma_filtro_id;
}

$sql_cuentas .= " ORDER BY cs.fecha_renovacion ASC";
$stmt = $pdo->prepare($sql_cuentas);
$stmt->execute($params);
$cuentas_alquiladas = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Obtener las plantillas para el modal de WhatsApp
$plantilla_renovar = $pdo->query("SELECT mensaje FROM plantillas_whatsapp WHERE modulo_uso = 'revendedor_renovar' LIMIT 1")->fetchColumn();
$plantilla_vencido = $pdo->query("SELECT mensaje FROM plantillas_whatsapp WHERE modulo_uso = 'revendedor_vencido' LIMIT 1")->fetchColumn();
?>

<div class="main-content-box flex-grow flex flex-col bg-white bg-opacity-95 p-6 rounded-lg shadow-xl w-full mx-auto max-w-5xl">
    <div class="flex justify-between items-center mb-4 border-b pb-3">
        <h2 class="text-2xl font-bold text-red-600">Mis Cuentas Asignadas</h2>
        <a href="consulta.php" class="bg-gray-600 hover:bg-gray-700 text-white font-bold py-2 px-4 rounded-md text-sm">
            <i class="fas fa-arrow-left mr-2"></i>Volver a Consulta
        </a>
    </div>
    
    <div class="p-4 bg-gray-50 rounded-lg border mb-6">
        <form method="GET" class="flex flex-wrap items-end gap-4">
            <div class="flex-grow">
                <label for="fecha_hasta" class="block text-sm font-medium text-gray-700">Vencimiento Hasta:</label>
                <input type="date" name="fecha_hasta" id="fecha_hasta" value="<?php echo htmlspecialchars($fecha_hasta); ?>" class="mt-1 w-full p-2 border rounded-md">
            </div>
            <div class="flex-grow">
                <label for="plataforma_filtro" class="block text-sm font-medium text-gray-700">Plataforma:</label>
                <select name="plataforma_filtro" id="plataforma_filtro" class="mt-1 w-full p-2 border rounded-md bg-white">
                    <option value="">Todas</option>
                    <?php foreach ($plataformas as $p): ?>
                        <option value="<?php echo $p['id']; ?>" <?php if($plataforma_filtro_id == $p['id']) echo 'selected'; ?>>
                            <?php echo htmlspecialchars($p['nombre']); ?>
                        </option>
                    <?php endforeach; ?>
                </select>
            </div>
            <div class="flex items-center gap-2">
                 <button type="submit" class="bg-red-600 text-white font-bold py-2 px-5 rounded-lg text-sm">Filtrar</button>
                 <a href="mis_cuentas.php" class="bg-gray-400 text-white font-bold py-2 px-5 rounded-lg text-sm">Limpiar</a>
            </div>
        </form>
    </div>

    <div class="overflow-x-auto">
        <table id="tablaCuentas" class="w-full text-left text-sm display">
            <thead class="bg-gray-100">
                <tr>
                    <th class="p-3 font-semibold text-gray-600">PLATAFORMA</th>
                    <th class="p-3 font-semibold text-gray-600">CUENTA (CORREO)</th>
                    <th class="p-3 font-semibold text-gray-600">FECHA DE VENCIMIENTO</th>
                    <th class="p-3 font-semibold text-gray-600 text-center">ACCIONES</th>
                </tr>
            </thead>
            <tbody>
                <?php if (empty($cuentas_alquiladas)): ?>
                    <tr><td colspan="4" class="p-4 text-center text-gray-500">No se encontraron cuentas con los filtros aplicados.</td></tr>
                <?php else: ?>
                    <?php foreach ($cuentas_alquiladas as $cuenta): ?>
                        <tr class="border-b hover:bg-gray-50">
                            <td class="p-3 font-medium flex items-center"><div class="w-3 h-3 rounded-full bg-red-500 mr-3"></div><?php echo htmlspecialchars($cuenta['plataforma_nombre']); ?></td>
                            <td class="p-3 text-gray-800"><?php echo htmlspecialchars($cuenta['correo']); ?></td>
                            <td class="p-3 font-semibold <?php echo (strtotime($cuenta['fecha_renovacion']) < time()) ? 'text-red-600' : 'text-green-600'; ?>">
                                <i class="fas fa-calendar-alt mr-2"></i><?php echo date('d / m / Y', strtotime($cuenta['fecha_renovacion'])); ?>
                            </td>
                            <td class="p-3 text-center">
                                <button class="bg-green-500 hover:bg-green-600 text-white font-bold py-1 px-3 rounded-md text-xs notificar-btn"
                                        data-correo="<?php echo htmlspecialchars($cuenta['correo']); ?>"
                                        data-plataforma="<?php echo htmlspecialchars($cuenta['plataforma_nombre']); ?>"
                                        data-vencimiento="<?php echo date('d/m/Y', strtotime($cuenta['fecha_renovacion'])); ?>">
                                    <i class="fab fa-whatsapp mr-1"></i>Notificar
                                </button>
                            </td>
                        </tr>
                    <?php endforeach; ?>
                <?php endif; ?>
            </tbody>
        </table>
    </div>
</div>

<link rel="stylesheet" href="https://cdn.datatables.net/1.11.3/css/jquery.dataTables.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdn.datatables.net/1.11.3/js/jquery.dataTables.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script>
$(document).ready(function() {
    $('#tablaCuentas').DataTable({
        "language": { "url": "//cdn.datatables.net/plug-ins/1.11.3/i18n/es_es.json" },
        "order": [[2, "asc"]],
        "pageLength": 25,
        "dom": "<'flex justify-between items-center mb-4'l>t<'flex justify-between items-center mt-4'ip>"
    });

    const telefonoAdmin = "<?php echo $telefono_admin; ?>";
    const plantillaRenovar = <?php echo json_encode($plantilla_renovar); ?>;
    const plantillaVencido = <?php echo json_encode($plantilla_vencido); ?>;
    
    $('#tablaCuentas').on('click', '.notificar-btn', function() {
        if (!telefonoAdmin) {
            Swal.fire('Error', 'Tu proveedor no ha configurado un número de contacto.', 'error');
            return;
        }
        if (!plantillaRenovar || !plantillaVencido) {
            Swal.fire('Atención', 'Tu proveedor no ha configurado las plantillas de notificación para revendedores.', 'warning');
            return;
        }

        const correo = $(this).data('correo');
        const plataforma = $(this).data('plataforma');
        const vencimiento = $(this).data('vencimiento');
        
        Swal.fire({
            title: '¿Qué tipo de notificación quieres enviar?',
            showDenyButton: true,
            confirmButtonText: `Para Renovar`,
            denyButtonText: `Ya Venció`,
            confirmButtonColor: '#16a34a',
            denyButtonColor: '#dc2626',
        }).then((result) => {
            let mensajeBase = '';
            if (result.isConfirmed) {
                mensajeBase = plantillaRenovar;
            } else if (result.isDenied) {
                mensajeBase = plantillaVencido;
            }

            if(mensajeBase){
                let mensaje = mensajeBase.replace(/{plataforma}/g, plataforma)
                                         .replace(/{correo}/g, correo)
                                         .replace(/{vencimiento}/g, vencimiento);
                window.open(`https://wa.me/${telefonoAdmin}?text=${encodeURIComponent(mensaje)}`, '_blank');
            }
        });
    });
});
</script>

<?php 
require_once '_footer_publico.php'; 
?>