<?php
include_once 'includes/header.php';
include_once 'config/database.php';

$database = new Database();
$conn = $database->getConnection();

// Configurar zona horaria de Lima, Perú
date_default_timezone_set('America/Lima');

// Procesar guardado de encuestas a clientes
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['guardar_encuestas'])) {
    $codencuesta = isset($_POST['codencuesta']) ? intval($_POST['codencuesta']) : 0;
    $clientes_seleccionados = isset($_POST['clientes']) ? $_POST['clientes'] : [];
    
    if (empty($codencuesta)) {
        $_SESSION['error'] = "❌ Debe seleccionar una encuesta";
    } elseif (empty($clientes_seleccionados)) {
        $_SESSION['error'] = "❌ Debe seleccionar al menos un cliente";
    } else {
        try {
            $fechaActual = date('Y-m-d H:i:s');
            $estado = 'enviado';
            $insertados = 0;
            $duplicados = 0;
            
            // Iniciar transacción
            $conn->beginTransaction();
            
            foreach ($clientes_seleccionados as $codprogramacion) {
                $codprogramacion = intval($codprogramacion);
                
                // Verificar si ya existe la relación
                $stmt_check = $conn->prepare("SELECT COUNT(*) FROM tcliente_encuesta 
                                              WHERE codprogramacion = ? AND codencuesta = ?");
                $stmt_check->execute([$codprogramacion, $codencuesta]);
                $existe = $stmt_check->fetchColumn() > 0;
                
                if (!$existe) {
                    $stmt = $conn->prepare("INSERT INTO tcliente_encuesta (fecha, codprogramacion, codencuesta, estado) 
                                           VALUES (?, ?, ?, ?)");
                    $stmt->execute([$fechaActual, $codprogramacion, $codencuesta, $estado]);
                    $insertados++;
                } else {
                    $duplicados++;
                }
            }
            
            $conn->commit();
            
            if ($insertados > 0) {
                $mensaje = "✅ Se asignaron {$insertados} encuesta(s) correctamente";
                if ($duplicados > 0) {
                    $mensaje .= ". {$duplicados} cliente(s) ya tenían esta encuesta asignada.";
                }
                $_SESSION['success'] = $mensaje;
            } else {
                $_SESSION['warning'] = "⚠️ Todos los clientes seleccionados ya tienen esta encuesta asignada";
            }
            
        } catch(PDOException $e) {
            $conn->rollBack();
            $_SESSION['error'] = "❌ Error al guardar las encuestas: " . $e->getMessage();
        }
    }
    
    // Construir URL con parámetros
    $url_params = [];
    if (isset($_GET['codencuesta']) || isset($_POST['codencuesta'])) {
        $codencuesta_param = isset($_GET['codencuesta']) ? $_GET['codencuesta'] : (isset($_POST['codencuesta']) ? $_POST['codencuesta'] : $codencuesta);
        $url_params[] = 'codencuesta=' . $codencuesta_param;
    }
    if ((isset($_GET['grupoimportado']) && !empty($_GET['grupoimportado'])) || 
        (isset($_POST['grupoimportado']) && !empty($_POST['grupoimportado']))) {
        $grupo_param = isset($_GET['grupoimportado']) ? $_GET['grupoimportado'] : $_POST['grupoimportado'];
        $url_params[] = 'grupoimportado=' . urlencode($grupo_param);
    }
    $url = 'cliente_encuesta.php' . (!empty($url_params) ? '?' . implode('&', $url_params) : '');
    header("Location: " . $url);
    exit();
}

// Obtener encuesta seleccionada
$codencuesta_seleccionada = isset($_GET['codencuesta']) ? intval($_GET['codencuesta']) : 0;

// Obtener grupo importado seleccionado
$grupo_importado_seleccionado = isset($_GET['grupoimportado']) ? trim($_GET['grupoimportado']) : '';

// Fetch todas las encuestas
try {
    $stmt = $conn->query("SELECT * FROM tencuesta ORDER BY encuesta");
    $encuestas = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    $_SESSION['error'] = "❌ Error al obtener las encuestas: " . $e->getMessage();
    $encuestas = [];
}

// Fetch grupos importados únicos
try {
    $stmt = $conn->query("SELECT DISTINCT grupoimportado FROM tclientes_import 
                         WHERE grupoimportado IS NOT NULL AND grupoimportado != '' 
                         ORDER BY grupoimportado ASC");
    $grupos_importados = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    $_SESSION['error'] = "❌ Error al obtener los grupos importados: " . $e->getMessage();
    $grupos_importados = [];
}

// Fetch clientes con búsqueda opcional
$search_cliente = isset($_GET['search_cliente']) ? trim($_GET['search_cliente']) : '';

try {
    $query = "SELECT codprogramacion, nombre, documento, distrito, paquete 
              FROM tclientes_import 
              WHERE 1=1";
    
    $params = [];
    if ($grupo_importado_seleccionado) {
        $query .= " AND grupoimportado = ?";
        $params[] = $grupo_importado_seleccionado;
    }
    if ($search_cliente) {
        $query .= " AND (nombre LIKE ? OR documento LIKE ? OR distrito LIKE ? OR paquete LIKE ?)";
        $searchTerm = "%{$search_cliente}%";
        $params = array_merge($params, [$searchTerm, $searchTerm, $searchTerm, $searchTerm]);
    }
    
    $query .= " ORDER BY nombre ASC LIMIT 500";
    
    $stmt = $conn->prepare($query);
    $stmt->execute($params);
    $clientes = $stmt->fetchAll(PDO::FETCH_ASSOC);
    
    // Verificar qué clientes ya tienen la encuesta asignada
    if ($codencuesta_seleccionada > 0) {
        foreach ($clientes as &$cliente) {
            $stmt_check = $conn->prepare("SELECT COUNT(*) FROM tcliente_encuesta 
                                          WHERE codprogramacion = ? AND codencuesta = ?");
            $stmt_check->execute([$cliente['codprogramacion'], $codencuesta_seleccionada]);
            $cliente['tiene_encuesta'] = $stmt_check->fetchColumn() > 0;
        }
        unset($cliente);
    }
    
} catch(PDOException $e) {
    $_SESSION['error'] = "❌ Error al obtener los clientes: " . $e->getMessage();
    $clientes = [];
}
?>

<style>
.cliente-card {
    transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.cliente-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 5px 15px rgba(0,0,0,0.1);
}

.badge-encuesta {
    font-size: 0.85rem;
    padding: 5px 10px;
}

.checkbox-cliente {
    transform: scale(1.2);
    cursor: pointer;
}

.cliente-row {
    border-left: 3px solid transparent;
    transition: all 0.2s ease;
}

.cliente-row:hover {
    border-left-color: #0d6efd;
    background-color: #f8f9fa;
}

.cliente-row.selected {
    border-left-color: #198754;
    background-color: #d1e7dd;
}
</style>

<div class="col-md-10 p-4">
    <div class="d-flex justify-content-between align-items-center mb-4">
        <h2>
            <i class="fas fa-user-check"></i> Asignar Encuestas a Clientes
        </h2>
    </div>

    <?php if (isset($_SESSION['success'])): ?>
        <div class="alert alert-success alert-custom">
            <i class="fas fa-check-circle"></i>
            <?php 
            echo $_SESSION['success']; 
            unset($_SESSION['success']);
            ?>
        </div>
    <?php endif; ?>

    <?php if (isset($_SESSION['warning'])): ?>
        <div class="alert alert-warning alert-custom">
            <i class="fas fa-exclamation-triangle"></i>
            <?php 
            echo $_SESSION['warning']; 
            unset($_SESSION['warning']);
            ?>
        </div>
    <?php endif; ?>

    <?php if (isset($_SESSION['error'])): ?>
        <div class="alert alert-danger alert-custom">
            <i class="fas fa-exclamation-triangle"></i>
            <?php 
            echo $_SESSION['error']; 
            unset($_SESSION['error']);
            ?>
        </div>
    <?php endif; ?>

    <!-- Filtro de Encuesta -->
    <div class="card mb-4">
        <div class="card-body">
            <h5 class="card-title mb-3">
                <i class="fas fa-filter"></i> Seleccionar Encuesta
            </h5>
            <form method="GET" action="cliente_encuesta.php" class="row g-3">
                <div class="col-md-8">
                    <label class="form-label">
                        <i class="fas fa-clipboard-list"></i> Encuesta
                    </label>
                    <select class="form-select" name="codencuesta" required onchange="this.form.submit()">
                        <option value="">-- Seleccione una encuesta --</option>
                        <?php foreach ($encuestas as $encuesta): ?>
                            <option value="<?php echo $encuesta['codencuesta']; ?>" 
                                    <?php echo ($codencuesta_seleccionada == $encuesta['codencuesta']) ? 'selected' : ''; ?>>
                                <?php echo htmlspecialchars($encuesta['encuesta']); ?>
                            </option>
                        <?php endforeach; ?>
                    </select>
                </div>
                <div class="col-md-4 d-flex align-items-end">
                    <?php if ($codencuesta_seleccionada > 0): ?>
                        <a href="cliente_encuesta.php" class="btn btn-secondary">
                            <i class="fas fa-redo"></i> Limpiar
                        </a>
                    <?php endif; ?>
                </div>
            </form>
        </div>
    </div>

    <?php if ($codencuesta_seleccionada > 0): ?>
        <!-- Filtro de Grupo Importado -->
        <div class="card mb-4">
            <div class="card-body">
                <h5 class="card-title mb-3">
                    <i class="fas fa-file-import"></i> Filtrar por Grupo de Importación
                </h5>
                <form method="GET" action="cliente_encuesta.php" class="row g-3">
                    <input type="hidden" name="codencuesta" value="<?php echo $codencuesta_seleccionada; ?>">
                    <div class="col-md-8">
                        <label class="form-label">
                            <i class="fas fa-folder-open"></i> Grupo Importado
                        </label>
                        <select class="form-select" name="grupoimportado" onchange="this.form.submit()">
                            <option value="">-- Todos los grupos --</option>
                            <?php foreach ($grupos_importados as $grupo): ?>
                                <option value="<?php echo htmlspecialchars($grupo['grupoimportado']); ?>" 
                                        <?php echo ($grupo_importado_seleccionado == $grupo['grupoimportado']) ? 'selected' : ''; ?>>
                                    <?php echo htmlspecialchars($grupo['grupoimportado']); ?>
                                </option>
                            <?php endforeach; ?>
                        </select>
                    </div>
                    <div class="col-md-4 d-flex align-items-end">
                        <?php if ($grupo_importado_seleccionado): ?>
                            <a href="cliente_encuesta.php?codencuesta=<?php echo $codencuesta_seleccionada; ?>" 
                               class="btn btn-secondary">
                                <i class="fas fa-times"></i> Limpiar Filtro
                            </a>
                        <?php endif; ?>
                    </div>
                </form>
            </div>
        </div>
    <?php endif; ?>

    <?php if ($codencuesta_seleccionada > 0): ?>
        <!-- Búsqueda de Clientes -->
        <div class="card mb-4">
            <div class="card-body">
                <h5 class="card-title mb-3">
                    <i class="fas fa-search"></i> Buscar Clientes
                </h5>
                <form method="GET" action="cliente_encuesta.php" class="row g-3">
                    <input type="hidden" name="codencuesta" value="<?php echo $codencuesta_seleccionada; ?>">
                    <?php if ($grupo_importado_seleccionado): ?>
                        <input type="hidden" name="grupoimportado" value="<?php echo htmlspecialchars($grupo_importado_seleccionado); ?>">
                    <?php endif; ?>
                    <div class="col-md-8">
                        <input type="text" class="form-control" name="search_cliente" 
                               placeholder="Buscar por nombre, documento, distrito o paquete..."
                               value="<?php echo htmlspecialchars($search_cliente); ?>">
                    </div>
                    <div class="col-md-4">
                        <button type="submit" class="btn btn-primary">
                            <i class="fas fa-search"></i> Buscar
                        </button>
                        <?php if ($search_cliente): ?>
                            <?php
                            $url_limpiar = "cliente_encuesta.php?codencuesta=" . $codencuesta_seleccionada;
                            if ($grupo_importado_seleccionado) {
                                $url_limpiar .= "&grupoimportado=" . urlencode($grupo_importado_seleccionado);
                            }
                            ?>
                            <a href="<?php echo $url_limpiar; ?>" class="btn btn-secondary">
                                <i class="fas fa-times"></i> Limpiar
                            </a>
                        <?php endif; ?>
                    </div>
                </form>
            </div>
        </div>

        <!-- Lista de Clientes -->
        <div class="card">
            <div class="card-body">
                <?php
                $url_post = "cliente_encuesta.php?codencuesta=" . $codencuesta_seleccionada;
                if ($grupo_importado_seleccionado) {
                    $url_post .= "&grupoimportado=" . urlencode($grupo_importado_seleccionado);
                }
                ?>
                <form method="POST" action="<?php echo $url_post; ?>" id="formClientes">
                    <input type="hidden" name="guardar_encuestas" value="1">
                    <input type="hidden" name="codencuesta" value="<?php echo $codencuesta_seleccionada; ?>">
                    <?php if ($grupo_importado_seleccionado): ?>
                        <input type="hidden" name="grupoimportado" value="<?php echo htmlspecialchars($grupo_importado_seleccionado); ?>">
                    <?php endif; ?>
                    
                    <div class="d-flex justify-content-between align-items-center mb-3">
                        <h5 class="mb-0">
                            <i class="fas fa-users"></i> Clientes Disponibles
                            <span class="badge bg-primary"><?php echo count($clientes); ?></span>
                        </h5>
                        <div>
                            <button type="button" class="btn btn-sm btn-outline-primary" onclick="seleccionarTodos()">
                                <i class="fas fa-check-double"></i> Seleccionar Todos
                            </button>
                            <button type="button" class="btn btn-sm btn-outline-secondary" onclick="deseleccionarTodos()">
                                <i class="fas fa-times"></i> Deseleccionar Todos
                            </button>
                        </div>
                    </div>

                    <?php if (empty($clientes)): ?>
                        <div class="text-center py-5">
                            <i class="fas fa-users fa-4x text-muted mb-3"></i>
                            <p class="text-muted">No se encontraron clientes</p>
                            <?php if ($search_cliente): ?>
                                <?php
                                $url_ver_todos = "cliente_encuesta.php?codencuesta=" . $codencuesta_seleccionada;
                                if ($grupo_importado_seleccionado) {
                                    $url_ver_todos .= "&grupoimportado=" . urlencode($grupo_importado_seleccionado);
                                }
                                ?>
                                <a href="<?php echo $url_ver_todos; ?>" class="btn btn-primary">
                                    <i class="fas fa-redo"></i> Ver Todos los Clientes
                                </a>
                            <?php endif; ?>
                        </div>
                    <?php else: ?>
                        <div class="table-responsive">
                            <table class="table table-hover">
                                <thead>
                                    <tr>
                                        <th style="width: 50px;">
                                            <input type="checkbox" class="form-check-input checkbox-cliente" 
                                                   id="selectAll" onchange="toggleAll(this)">
                                        </th>
                                        <th><i class="fas fa-user"></i> Nombre</th>
                                        <th><i class="fas fa-id-card"></i> Documento</th>
                                        <th><i class="fas fa-map-marker-alt"></i> Distrito</th>
                                        <th><i class="fas fa-box"></i> Paquete</th>
                                        <th><i class="fas fa-info-circle"></i> Estado</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <?php foreach ($clientes as $cliente): ?>
                                        <tr class="cliente-row" data-codprogramacion="<?php echo $cliente['codprogramacion']; ?>">
                                            <td>
                                                <input type="checkbox" 
                                                       class="form-check-input checkbox-cliente cliente-checkbox" 
                                                       name="clientes[]" 
                                                       value="<?php echo $cliente['codprogramacion']; ?>"
                                                       onchange="toggleRow(this)"
                                                       <?php echo (isset($cliente['tiene_encuesta']) && $cliente['tiene_encuesta']) ? 'disabled' : ''; ?>>
                                            </td>
                                            <td>
                                                <strong><?php echo htmlspecialchars($cliente['nombre']); ?></strong>
                                            </td>
                                            <td>
                                                <?php echo htmlspecialchars($cliente['documento'] ?: '-'); ?>
                                            </td>
                                            <td>
                                                <?php echo htmlspecialchars($cliente['distrito'] ?: '-'); ?>
                                            </td>
                                            <td>
                                                <small><?php echo htmlspecialchars($cliente['paquete'] ?: '-'); ?></small>
                                            </td>
                                            <td>
                                                <?php if (isset($cliente['tiene_encuesta']) && $cliente['tiene_encuesta']): ?>
                                                    <span class="badge bg-success badge-encuesta">
                                                        <i class="fas fa-check-circle"></i> Ya asignada
                                                    </span>
                                                <?php else: ?>
                                                    <span class="badge bg-secondary badge-encuesta">
                                                        <i class="fas fa-clock"></i> Pendiente
                                                    </span>
                                                <?php endif; ?>
                                            </td>
                                        </tr>
                                    <?php endforeach; ?>
                                </tbody>
                            </table>
                        </div>

                        <div class="mt-4 d-flex justify-content-between align-items-center">
                            <div>
                                <span id="contadorSeleccionados" class="badge bg-info">
                                    <i class="fas fa-check"></i> 0 cliente(s) seleccionado(s)
                                </span>
                            </div>
                            <button type="submit" class="btn btn-success btn-lg" id="btnGuardar">
                                <i class="fas fa-save"></i> Guardar Encuestas
                            </button>
                        </div>
                    <?php endif; ?>
                </form>
            </div>
        </div>
    <?php else: ?>
        <div class="card">
            <div class="card-body">
                <div class="text-center py-5">
                    <i class="fas fa-clipboard-list fa-4x text-muted mb-3"></i>
                    <p class="text-muted">Seleccione una encuesta para comenzar a asignar clientes</p>
                </div>
            </div>
        </div>
    <?php endif; ?>
</div>

<script>
document.addEventListener('DOMContentLoaded', function() {
    actualizarContador();
    
    // Validar formulario antes de enviar
    const form = document.getElementById('formClientes');
    if (form) {
        form.addEventListener('submit', function(e) {
            const checkboxes = document.querySelectorAll('input[name="clientes[]"]:checked:not([disabled])');
            if (checkboxes.length === 0) {
                e.preventDefault();
                alert('Debe seleccionar al menos un cliente');
                return false;
            }
        });
    }
});

function toggleAll(checkbox) {
    const checkboxes = document.querySelectorAll('input[name="clientes[]"]:not([disabled])');
    checkboxes.forEach(cb => {
        cb.checked = checkbox.checked;
        toggleRow(cb);
    });
    actualizarContador();
}

function toggleRow(checkbox) {
    const row = checkbox.closest('tr');
    if (checkbox.checked) {
        row.classList.add('selected');
    } else {
        row.classList.remove('selected');
    }
    actualizarContador();
}

function seleccionarTodos() {
    const checkboxes = document.querySelectorAll('input[name="clientes[]"]:not([disabled])');
    checkboxes.forEach(cb => {
        cb.checked = true;
        toggleRow(cb);
    });
    document.getElementById('selectAll').checked = true;
    actualizarContador();
}

function deseleccionarTodos() {
    const checkboxes = document.querySelectorAll('input[name="clientes[]"]');
    checkboxes.forEach(cb => {
        cb.checked = false;
        toggleRow(cb);
    });
    document.getElementById('selectAll').checked = false;
    actualizarContador();
}

function actualizarContador() {
    const checkboxes = document.querySelectorAll('input[name="clientes[]"]:checked:not([disabled])');
    const contador = document.getElementById('contadorSeleccionados');
    if (contador) {
        contador.innerHTML = `<i class="fas fa-check"></i> ${checkboxes.length} cliente(s) seleccionado(s)`;
    }
}

// Actualizar contador cuando cambian los checkboxes
document.addEventListener('change', function(e) {
    if (e.target.classList.contains('cliente-checkbox')) {
        actualizarContador();
    }
});
</script>

<?php
include_once 'includes/footer.php';
?>

