<?php
ob_start();
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
include("db/cn.php");

$search_name = isset($_GET['search']) ? trim($_GET['search']) : '';
$products = [];

$res = mysqli_query($connection, "SELECT product_name, trade_price, retail_price, quantity FROM products");
while ($row = mysqli_fetch_assoc($res)) {
    $products[$row['product_name']] = [
        'trade_price' => $row['trade_price'],
        'retail_price' => $row['retail_price'],
        'quantity' => $row['quantity']
    ];
}


if ($search_name !== '') {
    $stmt = $connection->prepare("SELECT product_id, product_name, retail_price FROM products WHERE product_name LIKE CONCAT('%', ?, '%') LIMIT 1");
    $stmt->bind_param("s", $search_name);
    $stmt->execute();
    $result = $stmt->get_result();
    if ($result->num_rows > 0) {
        $labels = $result->fetch_all(MYSQLI_ASSOC);
    }
} else {
    $query = "SELECT product_id, product_name, retail_price FROM products";
    $result = mysqli_query($connection, $query);
    $labels = mysqli_fetch_all($result, MYSQLI_ASSOC);
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>روپ درشن سلک زری اینڈ برائڈل کلیکشن</title>
    <link href="../vendor/fontawesome-free/css/all.min.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Quicksand:wght@300;700&display=swap" rel="stylesheet">
    <link href="../css/sb-admin-2.min.css" rel="stylesheet">
    <style>
        body { font-family: 'Quicksand', sans-serif; }
        .autocomplete-suggestions { border: 1px solid #ccc; background: #fff; position: absolute; z-index: 9999; max-height: 200px; overflow-y: auto; }
        .autocomplete-suggestion { padding: 8px; cursor: pointer; }
        .autocomplete-suggestion:hover, .autocomplete-suggestion.active { background: #eee; }
        .low-stock-alert {
    color: red;
    font-weight: bold;
    animation: blink 1s step-start 0s infinite;
}

@keyframes blink {
    50% { opacity: 0; }
}
    </style>
</head>
<body>

<table class="table table-stripped text-center table-sm bg-white" id="product-table">
    <thead>
        <tr style="background:#0A4567; color:#fff; font-weight:700;">
            <th>Pr</th>
            <th> کھلا رول</th><th> چار لائن</th><th> خانہ</th><th>تنگ</th><th> بڑا خانہ</th><th> بڑا چار لائن</th><th> سفید</th><th> کھلا سائنس</th><th> تنگ سائنس</th><th> مکس</th>
            <th>T.Qty</th><th>PKR</th><th>Total</th><th>Add / Remove</th>
        </tr>
    </thead>
    <tbody id="product-body">
        <tr class="product-row">
            <td>
                <input type="text" name="product_name[]" class="form-control product-input" autocomplete="off">
                <div class="autocomplete-suggestions"></div>
                <div class="low-stock-warning"></div>
                <input type="hidden" name="trade_price[]" class="trade-price">
            </td>
            <?php for ($i = 1; $i <= 10; $i++): ?>
                <td><input type="text" name="pr<?= $i ?>[]" class="form-control inform"></td>
            <?php endfor; ?>
            <td class="tqty">-</td>
            <td class="pkr">
                <input type="text" name="product_price[]" class="form-control pkr-input inform" readonly>
            </td>
            <td class="total">Rs</td>
            <td>
                <button type="button" class="btn btn-danger add-row" style="border-radius:40px;">+</button>
                <button type="button" class="btn btn-dark remove-row" style="border-radius:40px;">-</button>
            </td>
        </tr>
    </tbody>
</table>

<script>
const productMap = <?= json_encode($products) ?>;

function enableAutocomplete(input) {
    const suggestionBox = input.nextElementSibling;
    let suggestions = [];
    let selectedIndex = -1;

    input.addEventListener('input', function () {
        const val = this.value.toLowerCase();
        suggestionBox.innerHTML = '';
        selectedIndex = -1;
        suggestions = [];

        if (val.length === 0) return;

        for (const name in productMap) {
            if (name.toLowerCase().includes(val)) {
                const div = document.createElement('div');
                div.classList.add('autocomplete-suggestion');
                div.textContent = name;
                suggestionBox.appendChild(div);
                suggestions.push(div);

                div.addEventListener('mousedown', () => {
                    selectSuggestion(name, input);
                });
            }
        }
    });

    input.addEventListener('keydown', (e) => {
        if (suggestions.length === 0) return;

        if (e.key === 'ArrowDown') {
            selectedIndex = (selectedIndex + 1) % suggestions.length;
        } else if (e.key === 'ArrowUp') {
            selectedIndex = (selectedIndex - 1 + suggestions.length) % suggestions.length;
        } else if (e.key === 'Enter') {
            e.preventDefault();
            if (selectedIndex >= 0 && selectedIndex < suggestions.length) {
                const selectedName = suggestions[selectedIndex].textContent;
                selectSuggestion(selectedName, input);
                suggestionBox.innerHTML = '';
            }
        }

        suggestions.forEach((el, idx) => {
            el.classList.toggle('active', idx === selectedIndex);
        });
    });

    input.addEventListener('blur', () => {
        setTimeout(() => suggestionBox.innerHTML = '', 200);
    });
}

function selectSuggestion(name, input) {
    const tr = input.closest('tr');
    const product = productMap[name];

    input.value = name;
    tr.querySelector('.trade-price').value = product['trade_price'];
    tr.querySelector('.pkr-input').value = product['retail_price'];

    // Low stock warning logic
    let alertBox = tr.querySelector('.low-stock-warning');
    if (!alertBox) {
        alertBox = document.createElement('div');
        alertBox.className = 'low-stock-warning';
        input.parentNode.appendChild(alertBox);
    }

    if ('stock_qty' in product && product['stock_qty'] < 10) {
        alertBox.textContent = `⚠ Low Stock: ${product['stock_qty']}`;
        alertBox.classList.add('low-stock-alert');
    } else {
        alertBox.textContent = '';
        alertBox.classList.remove('low-stock-alert');
    }
}

function addAutocompleteAll() {
    document.querySelectorAll('.product-input').forEach(input => {
        if (!input.dataset.autocomplete) {
            enableAutocomplete(input);
            input.dataset.autocomplete = 'true';
        }
    });
}

addAutocompleteAll();

document.addEventListener('click', function (e) {
    if (e.target.classList.contains('add-row')) {
        const tbody = document.getElementById('product-body');
        const newRow = e.target.closest('tr').cloneNode(true);
        newRow.querySelectorAll('input').forEach(input => input.value = '');
        newRow.querySelectorAll('[data-autocomplete]').forEach(el => delete el.dataset.autocomplete);
        newRow.querySelector('.autocomplete-suggestions').innerHTML = '';
        const warning = newRow.querySelector('.low-stock-warning');
        if (warning) warning.remove();
        tbody.appendChild(newRow);
        addAutocompleteAll();
    }

    if (e.target.classList.contains('remove-row')) {
        const rows = document.querySelectorAll('.product-row');
        if (rows.length > 1) {
            e.target.closest('tr').remove();
        }
    }
});
</script>

</body>
</html>