<?php
session_start();
if (!isset($_SESSION['admin_usuario'])) {
    header('Location: ../admin_login.php');
    exit();
}
require_once '../config/database.php';

// Determinar tipo de exportación
$tipo_exportacion = $_GET['tipo'] ?? 'todos';
$departamento = $_GET['departamento'] ?? '';
$filtro = $_GET['filtro'] ?? '';

// Construir consulta según el filtro
$sql = "SELECT * FROM miembros WHERE 1=1";
$params = [];

switch ($tipo_exportacion) {
    case 'departamento':
        if ($departamento) {
            $sql .= " AND departamento = ?";
            $params[] = $departamento;
        }
        $nombre_archivo = "miembros_departamento_" . str_replace(' ', '_', $departamento) . "_" . date('Y-m-d');
        break;
    case 'cumpleanos_mes':
        $sql .= " AND MONTH(fecha_nacimiento) = MONTH(CURDATE())";
        $sql .= " ORDER BY DAY(fecha_nacimiento) ASC";
        $nombre_archivo = "cumpleanos_mes_" . date('Y-m');
        break;
    case 'recientes':
        $sql .= " AND fecha_registro >= DATE_SUB(NOW(), INTERVAL 30 DAY)";
        $sql .= " ORDER BY fecha_registro DESC";
        $nombre_archivo = "miembros_recientes_" . date('Y-m-d');
        break;
    case 'sin_ubicacion':
        $sql .= " AND (latitud IS NULL OR longitud IS NULL)";
        $nombre_archivo = "miembros_sin_ubicacion_" . date('Y-m-d');
        break;
    case 'con_ubicacion':
        $sql .= " AND latitud IS NOT NULL AND longitud IS NOT NULL";
        $nombre_archivo = "miembros_con_ubicacion_" . date('Y-m-d');
        break;
    case 'whatsapp':
        $sql .= " AND telefono IS NOT NULL AND telefono != ''";
        $nombre_archivo = "miembros_whatsapp_" . date('Y-m-d');
        break;
    default:
        $sql .= " ORDER BY fecha_registro DESC";
        $nombre_archivo = "todos_los_miembros_" . date('Y-m-d');
}

$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$miembros = $stmt->fetchAll();

// Configurar cabeceras para descarga
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="' . $nombre_archivo . '.xls"');
header('Cache-Control: max-age=0');

// Generar HTML para Excel
echo '<html>';
echo '<head>';
echo '<meta charset="UTF-8">';
echo '<title>Reporte RIPA - ' . ucfirst($tipo_exportacion) . '</title>';
echo '<style>';
echo 'th { background-color: #003366; color: white; padding: 8px; }';
echo 'td { padding: 5px; border: 1px solid #ddd; }';
echo 'table { border-collapse: collapse; width: 100%; }';
echo '.header { margin-bottom: 20px; }';
echo '</style>';
echo '</head>';
echo '<body>';
echo '<div class="header">';
echo '<h1>RIPA - Reporte de Miembros</h1>';
echo '<p><strong>Fecha de generación:</strong> ' . date('d/m/Y H:i:s') . '</p>';
echo '<p><strong>Tipo de reporte:</strong> ' . ucfirst(str_replace('_', ' ', $tipo_exportacion)) . '</p>';
echo '<p><strong>Total de registros:</strong> ' . count($miembros) . '</p>';
if ($departamento) {
    echo '<p><strong>Departamento:</strong> ' . htmlspecialchars($departamento) . '</p>';
}
echo '</div>';

echo '<table border="1">';
echo '<thead>';
echo '<tr>';
echo '<th>ID</th>';
echo '<th>Nombre</th>';
echo '<th>Apellido</th>';
echo '<th>Cédula</th>';
echo '<th>Fecha Nacimiento</th>';
echo '<th>Edad</th>';
echo '<th>Teléfono</th>';
echo '<th>País</th>';
echo '<th>Departamento</th>';
echo '<th>Ciudad</th>';
echo '<th>Latitud</th>';
echo '<th>Longitud</th>';
echo '<th>Fecha Registro</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';

foreach ($miembros as $miembro) {
    // Calcular edad
    $edad = '';
    if ($miembro['fecha_nacimiento']) {
        $fecha_nac = new DateTime($miembro['fecha_nacimiento']);
        $hoy = new DateTime();
        $edad = $hoy->diff($fecha_nac)->y;
    }
    
    echo '<tr>';
    echo '<td>' . $miembro['id'] . '</td>';
    echo '<td>' . htmlspecialchars($miembro['nombre']) . '</td>';
    echo '<td>' . htmlspecialchars($miembro['apellido']) . '</td>';
    echo '<td>' . $miembro['cedula'] . '</td>';
    echo '<td>' . date('d/m/Y', strtotime($miembro['fecha_nacimiento'])) . '</td>';
    echo '<td>' . $edad . '</td>';
    echo '<td>' . $miembro['telefono'] . '</td>';
    echo '<td>' . htmlspecialchars($miembro['pais']) . '</td>';
    echo '<td>' . htmlspecialchars($miembro['departamento']) . '</td>';
    echo '<td>' . htmlspecialchars($miembro['ciudad']) . '</td>';
    echo '<td>' . ($miembro['latitud'] ?? '') . '</td>';
    echo '<td>' . ($miembro['longitud'] ?? '') . '</td>';
    echo '<td>' . date('d/m/Y H:i:s', strtotime($miembro['fecha_registro'])) . '</td>';
    echo '</tr>';
}

echo '</tbody>';
echo '</table>';

// Agregar resumen al final
echo '<div style="margin-top: 30px;">';
echo '<h3>📊 Resumen Estadístico</h3>';
echo '<table border="1">';
echo '<tr><th>Indicador</th><th>Valor</th></tr>';
echo '<tr><td>Total Miembros</td><td>' . count($miembros) . '</td></tr>';
echo '<tr><td>Con ubicación registrada</td><td>' . count(array_filter($miembros, function($m) { return $m['latitud'] && $m['longitud']; })) . '</td></tr>';
echo '<tr><td>Sin ubicación</td><td>' . count(array_filter($miembros, function($m) { return !$m['latitud'] || !$m['longitud']; })) . '</td></tr>';
echo '</table>';
echo '</div>';

echo '</body>';
echo '</html>';
exit();
?>