<?php
session_start();
if (!isset($_SESSION['user_id'])) {
    header('Location: login.php');
    exit;
}

require_once 'db/config.php';

function getStatusStyle($status) {
    $style = 'color: white;'; // Default text color
    $bgColor = '#0dcaf0'; // Default info blue

    switch (strtoupper(trim($status))) {
        case 'ROTULADO':
            $bgColor = '#ffc107'; // yellow
            $style = 'color: black;';
            break;
        case 'EN TRANSITO':
            $bgColor = '#90EE90'; // light green
            $style = 'color: black;';
            break;
        case 'EN DESTINO':
            $bgColor = '#800080'; // purple
            break;
        case 'COMPLETADO':
        case 'COMPLETADO ✅':
            $bgColor = '#198754'; // dark green
            break;
        case 'GESTION':
            $bgColor = '#6c757d'; // secondary grey
            break;
    }
    return "background-color: {$bgColor} !important; {$style}";
}

$pdo = db();

$user_id = $_SESSION['user_id'];
$user_role = $_SESSION['user_role'] ?? 'Asesor';

// Fetch years for the filter
$years_query = "SELECT DISTINCT YEAR(created_at) as year FROM pedidos";
if ($user_role === 'Asesor') {
    $years_query .= " WHERE asesor_id = ?";
    $years_stmt = $pdo->prepare($years_query);
    $years_stmt->execute([$user_id]);
} else {
    $years_stmt = $pdo->query($years_query);
}
$years = $years_stmt->fetchAll(PDO::FETCH_COLUMN);


// Filter logic
$selected_month = $_GET['mes'] ?? '';
$selected_year = $_GET['año'] ?? '';
$search_query = $_GET['q'] ?? '';

$sql = "SELECT p.*, u.nombre_asesor as asesor_nombre FROM pedidos p LEFT JOIN users u ON p.asesor_id = u.id WHERE p.estado = 'Gestion'";
$params = [];

if ($user_role === 'Asesor') {
    $sql .= " AND p.asesor_id = ?";
    $params[] = $user_id;
}

if (!empty($search_query)) {
    $sql .= " AND (p.nombre_completo LIKE ? OR p.dni_cliente LIKE ? OR p.celular LIKE ?)";
    $params[] = "%$search_query%";
    $params[] = "%$search_query%";
    $params[] = "%$search_query%";
}

if (!empty($selected_month)) {
    $sql .= " AND MONTH(p.created_at) = ?";
    $params[] = $selected_month;
}
if (!empty($selected_year)) {
    $sql .= " AND YEAR(p.created_at) = ?";
    $params[] = $selected_year;
}

$sql .= " ORDER BY p.created_at DESC";
$stmt = $pdo->prepare($sql);
$stmt->execute($params);
$pedidos = $stmt->fetchAll();

$months = [
    1 => 'Enero', 2 => 'Febrero', 3 => 'Marzo', 4 => 'Abril', 5 => 'Mayo', 6 => 'Junio',
    7 => 'Julio', 8 => 'Agosto', 9 => 'Septiembre', 10 => 'Octubre', 11 => 'Noviembre', 12 => 'Diciembre'
];

?>
<?php 
$pageTitle = "GESTIONES ⚙️";
include 'layout_header.php'; 
?>

<?php if (isset($_SESSION['flash_message'])):
    $flash = $_SESSION['flash_message'];
    unset($_SESSION['flash_message']);
?>
<div class="alert alert-<?php echo htmlspecialchars($flash['type']); ?> alert-dismissible fade show" role="alert">
    <?php echo htmlspecialchars($flash['message']); ?>
    <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
<?php endif; ?>


            <div class="card mb-4">
                <div class="card-body">
                    <form method="GET" action="gestiones.php" class="row g-3 align-items-center">
                        <div class="col-auto">
                            <label for="q" class="form-label">Buscar</label>
                            <input type="text" name="q" id="q" class="form-control" value="<?php echo htmlspecialchars($search_query); ?>" placeholder="Nombre, DNI o Celular">
                        </div>
                        <div class="col-auto">
                            <label for="mes" class="form-label">Mes</label>
                            <select name="mes" id="mes" class="form-select">
                                <option value="">Todos</option>
                                <?php foreach ($months as $num => $name): ?>
                                    <option value="<?php echo $num; ?>" <?php echo $selected_month == $num ? 'selected' : ''; ?>><?php echo $name; ?></option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        <div class="col-auto">
                            <label for="año" class="form-label">Año</label>
                            <select name="año" id="año" class="form-select">
                                <option value="">Todos</option>
                                <?php foreach ($years as $year): ?>
                                    <option value="<?php echo $year; ?>" <?php echo $selected_year == $year ? 'selected' : ''; ?>><?php echo $year; ?></option>
                                <?php endforeach; ?>
                            </select>
                        </div>
                        <div class="col-auto mt-4">
                            <button type="submit" class="btn btn-info">Filtrar</button>
                            <a href="gestiones.php" class="btn btn-secondary">Limpiar</a>
                        </div>
                    </form>
                </div>
            </div>

            <div class="card">
                <div class="card-body">
                    <div class="table-responsive">
                        <table id="pedidos-table" class="table table-striped">
                            <thead>
                                <tr>
                                    <th>ID</th>
                                    <th>Cliente</th>
                                    <th>DNI</th>
                                    <th>Celular</th>
                                    <th>Producto</th>
                                    <th>Sede de Envío</th>
                                    <th>Monto Total</th>
                                    <th>Monto Debe</th>
                                    <th>Nº De Orden</th>
                                    <th>Codigo De Orden</th>
                                    <th>CLAVE</th>
                                    <th>Estado</th>
                                    <?php if ($user_role !== 'Asesor'): ?><th>Asesor</th><?php endif; ?>
                                    <th>Fecha Creación</th>
                                    <th>Voucher Restante</th>
                                    <th>Acciones</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php foreach ($pedidos as $pedido): ?>
                                    <tr>
                                        <td><?php echo htmlspecialchars($pedido['id']); ?></td>
                                        <td><?php echo htmlspecialchars($pedido['nombre_completo']); ?></td>
                                        <td><?php echo htmlspecialchars($pedido['dni_cliente'] ?? 'N/A'); ?></td>
                                        <td><?php echo htmlspecialchars($pedido['celular']); ?></td>
                                        <td><?php echo htmlspecialchars($pedido['producto']); ?></td>
                                        <td><?php echo htmlspecialchars($pedido['sede_envio'] ?? 'N/A'); ?></td>
                                        <td><?php echo htmlspecialchars($pedido['monto_total']); ?></td>
                                        <td><?php echo htmlspecialchars($pedido['monto_debe']); ?></td>
                                        <td class="editable" data-id="<?php echo $pedido['id']; ?>" data-field="codigo_rastreo"><?php echo htmlspecialchars($pedido['codigo_rastreo'] ?? 'N/A'); ?></td>
                                        <td class="editable" data-id="<?php echo $pedido['id']; ?>" data-field="codigo_tracking"><?php echo htmlspecialchars($pedido['codigo_tracking'] ?? 'N/A'); ?></td>
                                        <td class="editable" data-id="<?php echo $pedido['id']; ?>" data-field="clave"><?php echo htmlspecialchars($pedido['clave'] ?? 'N/A'); ?></td>
                                        <td><span class="badge" style="<?php echo getStatusStyle($pedido['estado']); ?>"><?php echo ($pedido['estado'] == 'Gestion') ? 'GESTIONES ⚙️' : htmlspecialchars($pedido['estado']); ?></span></td>
                                        <?php if ($user_role !== 'Asesor'): ?><td><?php echo htmlspecialchars($pedido['asesor_nombre'] ?? 'N/A'); ?></td><?php endif; ?>
                                        <td><?php echo htmlspecialchars($pedido['created_at']); ?></td>
                                        <td>
                                            <?php if (!empty($pedido['voucher_restante_path'])): ?>
                                                <a href="<?php echo htmlspecialchars($pedido['voucher_restante_path']); ?>" target="_blank">Ver</a>
                                            <?php else: ?>
                                                N/A
                                            <?php endif; ?>
                                        </td>
                                        <td>
                                            <a href="pedido_form.php?id=<?php echo $pedido['id']; ?>" class="btn btn-sm btn-warning">Editar</a>
                                            <?php if ($user_role === 'Administrador'): ?>
                                                <a href="delete_pedido.php?id=<?php echo $pedido['id']; ?>" class="btn btn-sm btn-danger" onclick="return confirm('¿Estás seguro de que quieres eliminar este pedido?');">Eliminar</a>
                                            <?php endif; ?>
                                        </td>
                                    </tr>
                                <?php endforeach; ?>
                            </tbody>
                        </table>
                        <?php if (empty($pedidos)): ?>
                            <p class="text-center">No hay pedidos que coincidan con el filtro.</p>
                        <?php endif; ?>
                        </table>
                    </div>
                </div>
            </div>



<?php include 'layout_footer.php'; ?>

<script>
$(document).ready(function() {
    $('#pedidos-table').DataTable({
        "language": {
            "url": "//cdn.datatables.net/plug-ins/1.10.25/i18n/Spanish.json"
        },
        "order": [[ <?php echo ($user_role !== 'Asesor' ? 13 : 12); ?>, "desc" ]],
        "paging": false,
        "lengthChange": false,
        "info": false
    });
});

document.addEventListener('DOMContentLoaded', function() {
    const table = document.querySelector('.table');

    table.addEventListener('click', function(e) {
        if (e.target && e.target.classList.contains('editable')) {
            const cell = e.target;
            if (cell.querySelector('input')) {
                return; // Already in edit mode
            }

            const originalContent = cell.textContent.trim();
            const input = document.createElement('input');
            input.type = 'text';
            input.className = 'form-control form-control-sm';
            input.value = originalContent === 'N/A' ? '' : originalContent;
            
            cell.innerHTML = '';
            cell.appendChild(input);
            input.focus();

            const saveChanges = function() {
                const newValue = input.value.trim();
                const pedidoId = cell.dataset.id;
                const field = cell.dataset.field;

                let endpoint = 'update_tracking.php'; // Default endpoint
                if (field === 'clave') {
                    endpoint = 'update_clave.php';
                }

                // Restore original content visually
                cell.textContent = newValue === '' ? 'N/A' : newValue;

                // Send data to server
                fetch(endpoint, {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json',
                        'Accept': 'application/json'
                    },
                    body: JSON.stringify({ id: pedidoId, field: field, value: newValue })
                })
                .then(response => response.json())
                .then(data => {
                    if (data.error) {
                        console.error('Error:', data.error);
                        // Optionally revert the change and show an error message
                        cell.textContent = originalContent; 
                    }
                })
                .catch(error => {
                    console.error('Fetch Error:', error);
                    cell.textContent = originalContent;
                });
            };

            input.addEventListener('blur', saveChanges);
            input.addEventListener('keydown', function(e) {
                if (e.key === 'Enter') {
                    input.blur();
                }
            });
        }
    });
});
</script>