<?php
$page_title = 'Growth Partners';
require __DIR__ . '/_guard.php';

// ── POST actions ──────────────────────────────────────────────────────────────
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    csrf_verify();
    $do = $_POST['do'] ?? '';
    $id = (int)($_POST['partner_id'] ?? 0);

    if ($do === 'delete' && $id) {
        $logo = db_value('SELECT logo_path FROM growth_partners WHERE id=:id', ['id' => $id]);
        if ($logo) {
            $path = __DIR__ . '/../' . ltrim($logo, '/');
            if (file_exists($path)) @unlink($path);
        }
        db_exec('DELETE FROM growth_partners WHERE id=:id', ['id' => $id]);
        header('Location: growth-partners.php?msg=deleted'); exit;
    }

    if ($do === 'toggle' && $id) {
        $cur = (int)db_value('SELECT active FROM growth_partners WHERE id=:id', ['id' => $id]);
        db_exec('UPDATE growth_partners SET active=:a WHERE id=:id', ['a' => $cur ? 0 : 1, 'id' => $id]);
        header('Location: growth-partners.php'); exit;
    }

    if ($do === 'reorder') {
        // Accepts ?order=1,5,3,2 (comma-separated IDs in new order)
        $ids = array_map('intval', explode(',', $_POST['order'] ?? ''));
        foreach ($ids as $pos => $pid) {
            if ($pid > 0) {
                db_exec('UPDATE growth_partners SET sort_order=:s WHERE id=:id',
                        ['s' => ($pos + 1) * 10, 'id' => $pid]);
            }
        }
        header('Location: growth-partners.php'); exit;
    }

    header('Location: growth-partners.php'); exit;
}

// ── Ensure table exists (graceful on fresh installs) ─────────────────────────
$table_ok = false;
try {
    db_value('SELECT 1 FROM growth_partners LIMIT 1');
    $table_ok = true;
} catch (Throwable $e) {}

$partners = $table_ok
    ? db_all(
        'SELECT gp.*,
                l.name  AS listing_name,
                l.slug  AS listing_slug,
                l.tier  AS listing_tier,
                l.logo_path AS listing_logo
           FROM growth_partners gp
           LEFT JOIN listings l ON l.id = gp.listing_id
          ORDER BY gp.sort_order, gp.id'
      )
    : [];
?>

<style>
.atbl{width:100%;border-collapse:collapse;font-size:.875rem;}
.atbl th{padding:.55rem 1rem;background:var(--surface-alt);font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-muted);border-bottom:2px solid var(--line);white-space:nowrap;text-align:left;}
.atbl td{padding:.6rem 1rem;border-bottom:1px solid var(--line);vertical-align:middle;}
.atbl tr:last-child td{border-bottom:none;}
.atbl tbody tr:hover td{background:#fafafa;}
.partner-logo{width:60px;height:44px;object-fit:contain;border-radius:3px;border:1px solid var(--line);background:#fff;padding:2px;}
.partner-logo-placeholder{width:60px;height:44px;background:var(--surface-alt);border-radius:3px;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;font-size:1.2rem;color:var(--ink-muted);}
.drag-handle{cursor:grab;color:var(--ink-muted);font-size:1.1rem;padding:0 .4rem;user-select:none;}
.drag-handle:active{cursor:grabbing;}
tr.dragging{opacity:.4;}
</style>

<section class="section">
<div class="container">

<div style="display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem;">
    <h1 style="margin:0;">Growth Partners <span class="muted" style="font-size:1rem;font-weight:400;">(<?= count($partners) ?>)</span></h1>
    <a href="growth-partner-edit.php?action=add" class="btn">+ Add Partner</a>
</div>

<?php if (!$table_ok): ?>
    <div class="alert alert-error">
        The <code>growth_partners</code> table doesn't exist yet.
        Run <code>mysql … &lt; db/growth-partners.sql</code> to create it.
    </div>
<?php endif; ?>

<?php if (isset($_GET['msg'])): ?>
    <div class="alert alert-success" data-autohide>
        <?php
        $msgs = ['deleted' => 'Partner deleted.', 'saved' => 'Partner saved.'];
        echo $msgs[$_GET['msg']] ?? htmlspecialchars($_GET['msg']);
        ?>
    </div>
<?php endif; ?>

<?php if ($table_ok && empty($partners)): ?>
    <div class="card" style="text-align:center;padding:3rem;">
        <p style="font-size:2rem;margin:0 0 .5rem;">🤝</p>
        <p class="muted">No growth partners yet. <a href="growth-partner-edit.php?action=add">Add your first one →</a></p>
    </div>
<?php elseif ($table_ok): ?>
<p class="muted" style="font-size:.82rem;margin-bottom:.75rem;">
    Drag rows to reorder — order is saved automatically.
</p>
<div class="card" style="padding:0;overflow:auto;">
    <table class="atbl" id="partners-table">
        <thead>
            <tr>
                <th style="width:30px;"></th>
                <th style="width:70px;">Logo</th>
                <th>Name</th>
                <th>Website</th>
                <th>Status</th>
                <th>Actions</th>
            </tr>
        </thead>
        <tbody id="sortable-body">
        <?php foreach ($partners as $p): ?>
            <tr data-id="<?= $p['id'] ?>">
                <td><span class="drag-handle" title="Drag to reorder">⠿</span></td>
                <td>
                    <?php if (!empty($p['logo_path'])): ?>
                        <img src="../<?= htmlspecialchars($p['logo_path']) ?>"
                             alt="<?= htmlspecialchars($p['name']) ?>"
                             class="partner-logo">
                    <?php else: ?>
                        <span class="partner-logo-placeholder">🏢</span>
                    <?php endif; ?>
                </td>
                <td>
                    <strong><?= htmlspecialchars($p['name']) ?></strong>
                    <?php if (!empty($p['listing_name'])): ?>
                        <br><span style="font-size:.75rem;color:var(--ink-muted);">
                            🔗 Linked: <?= htmlspecialchars($p['listing_name']) ?>
                            <span style="background:var(--surface-alt);border:1px solid var(--line);border-radius:3px;padding:.05em .35em;font-size:.7rem;margin-left:.25rem;">
                                <?= htmlspecialchars($p['listing_tier']) ?>
                            </span>
                        </span>
                    <?php endif; ?>
                </td>
                <td style="font-size:.82rem;">
                    <?php if ($p['website_url']): ?>
                        <a href="<?= htmlspecialchars($p['website_url']) ?>" target="_blank" rel="noopener">
                            <?= htmlspecialchars($p['website_url']) ?>
                        </a>
                    <?php else: ?>
                        <span class="muted">—</span>
                    <?php endif; ?>
                </td>
                <td>
                    <span class="tag <?= $p['active'] ? 'tag-ok' : 'muted' ?>">
                        <?= $p['active'] ? 'Active' : 'Hidden' ?>
                    </span>
                </td>
                <td style="white-space:nowrap;">
                    <a href="growth-partner-edit.php?id=<?= $p['id'] ?>">Edit</a>
                    &nbsp;·&nbsp;
                    <form method="post" style="display:inline;">
                        <?= csrf_field() ?>
                        <input type="hidden" name="do" value="toggle">
                        <input type="hidden" name="partner_id" value="<?= $p['id'] ?>">
                        <button style="background:none;border:none;cursor:pointer;color:var(--brand-primary);font-size:.875rem;padding:0;">
                            <?= $p['active'] ? 'Hide' : 'Show' ?>
                        </button>
                    </form>
                    &nbsp;·&nbsp;
                    <form method="post" style="display:inline;"
                          onsubmit="return confirm('Delete <?= htmlspecialchars(addslashes($p['name'])) ?> permanently?');">
                        <?= csrf_field() ?>
                        <input type="hidden" name="do" value="delete">
                        <input type="hidden" name="partner_id" value="<?= $p['id'] ?>">
                        <button style="background:none;border:none;cursor:pointer;color:#b91c1c;font-size:.875rem;padding:0;">
                            Delete
                        </button>
                    </form>
                </td>
            </tr>
        <?php endforeach; ?>
        </tbody>
    </table>
</div>
<p class="muted" style="font-size:.8rem;margin:.5rem 0 0;">
    <?= count($partners) ?> partner<?= count($partners) === 1 ? '' : 's' ?>.
</p>
<?php endif; ?>

</div>
</section>

<script>
// ── Drag-to-reorder ────────────────────────────────────────────────────────
(function () {
    const tbody = document.getElementById('sortable-body');
    if (!tbody) return;

    let dragged = null;

    tbody.querySelectorAll('tr').forEach(row => {
        row.setAttribute('draggable', 'true');

        row.addEventListener('dragstart', e => {
            dragged = row;
            setTimeout(() => row.classList.add('dragging'), 0);
        });
        row.addEventListener('dragend', () => {
            row.classList.remove('dragging');
            saveOrder();
        });
        row.addEventListener('dragover', e => {
            e.preventDefault();
            const rect = row.getBoundingClientRect();
            const mid  = rect.top + rect.height / 2;
            if (e.clientY < mid) {
                tbody.insertBefore(dragged, row);
            } else {
                tbody.insertBefore(dragged, row.nextSibling);
            }
        });
    });

    function saveOrder() {
        const ids = [...tbody.querySelectorAll('tr[data-id]')]
            .map(r => r.dataset.id).join(',');

        const fd = new FormData();
        fd.append('do',    'reorder');
        fd.append('order', ids);
        // CSRF token — read from any existing hidden field on the page
        const tok = document.querySelector('input[name="_csrf"]');
        if (tok) fd.append('_csrf', tok.value);

        fetch('growth-partners.php', { method: 'POST', body: fd })
            .catch(() => {}); // silent — the page still shows the new order visually
    }
})();
</script>

<?php require __DIR__ . '/_footer.php'; ?>