<?php
require_once '../includes/constants.php';
require_once '../includes/session.php';

if (!isset($_SESSION['admin_id']) || !in_array($_SESSION['admin_role'], ['manager','superadmin'])) {
    die("Access denied");
}
?>
<!DOCTYPE html>
<html>
<head>
    <title><?php echo SITE_TITLE . ' | Advertiser Notes</title>
    <link rel="stylesheet" href="css/admin.css">
</head>
<body>
<div class="container">
<?php
$adminId = $_SESSION['admin_id'];
$advertiserId = $_GET['advertiser'] ?? null;
$filterStart = $_GET['start'] ?? null;
$filterEnd = $_GET['end'] ?? null;
$page = max(1, intval($_GET['page'] ?? 1));
$limit = 25;
$offset = ($page - 1) * $limit;

// Fetch advertisers for dropdown
$advertisers = $pdo->query("SELECT id, name FROM advertisers ORDER BY name")->fetchAll(PDO::FETCH_ASSOC);

// Handle new note
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['note'], $_POST['advertiser_id'])) {
    $stmt = $pdo->prepare("INSERT INTO advertiser_notes (advertiser_id, admin_id, note) VALUES (?, ?, ?)");
    $stmt->execute([$_POST['advertiser_id'], $adminId, $_POST['note']]);
    log_admin_action($pdo, 'add_advertiser_note', "Added note for advertiser #{$_POST['advertiser_id']}");
    echo "<p class='success'>✅ Note added.</p>";
}

// Build WHERE clause
$where = "";
$params = [];
if ($advertiserId) {
    $where .= "n.advertiser_id = ?";
    $params[] = $advertiserId;
}
if ($filterStart && $filterEnd) {
    if ($where) $where .= " AND ";
    $where .= "n.created_at BETWEEN ? AND ?";
    $params[] = $filterStart;
    $params[] = $filterEnd;
}
if ($where) $where = "WHERE $where";

// Count total notes
$countStmt = $pdo->prepare("SELECT COUNT(*) FROM advertiser_notes n $where");
$countStmt->execute($params);
$totalNotes = $countStmt->fetchColumn();
$totalPages = ceil($totalNotes / $limit);

// Fetch paginated notes
$stmt = $pdo->prepare("
    SELECT n.*, a.username, adv.name AS advertiser_name 
    FROM advertiser_notes n 
    JOIN admin_users a ON n.admin_id = a.id 
    JOIN advertisers adv ON n.advertiser_id = adv.id 
    $where
    ORDER BY n.created_at DESC
    LIMIT $limit OFFSET $offset
");
$stmt->execute($params);
$notes = $stmt->fetchAll(PDO::FETCH_ASSOC);

// Export CSV
if (isset($_GET['export'])) {
    header('Content-Type: text/csv');
    header('Content-Disposition: attachment; filename=advertiser_notes.csv');
    echo "Advertiser,Admin,Note,Created\n";
    foreach ($notes as $n) {
        echo "\"{$n['advertiser_name']}\",\"{$n['username']}\",\"".str_replace('"','""',$n['note'])."\",\"{$n['created_at']}\"\n";
    }
    exit;
}

// UI
echo "<h2>📝 Advertiser Notes</h2>
<form method='post'>
    <label>Advertiser:
        <select name='advertiser_id' required>
            <option value=''>Select Advertiser</option>";
foreach ($advertisers as $a) {
    $selected = ($advertiserId == $a['id']) ? "selected" : "";
    echo "<option value='{$a['id']}' $selected>{$a['name']} (#{$a['id']})</option>";
}
echo "</select></label>
<textarea name='note' placeholder='Internal note' required></textarea>
<button type='submit'>Add Note</button>
</form>";

echo "<form method='get'>
    <label>Advertiser:
        <select name='advertiser'>
            <option value=''>All</option>";
foreach ($advertisers as $a) {
    $selected = ($advertiserId == $a['id']) ? "selected" : "";
    echo "<option value='{$a['id']}' $selected>{$a['name']} (#{$a['id']})</option>";
}
echo "</select></label>
<label>Start: <input type='date' name='start' value='$filterStart'></label>
<label>End: <input type='date' name='end' value='$filterEnd'></label>
<button type='submit'>Filter</button>
<button onclick=\"window.location='?advertiser=$advertiserId&start=$filterStart&end=$filterEnd&export=1';return false;\">Export CSV</button>
</form>";

echo "<table><tr>
    <th>Advertiser</th><th>Admin</th><th>Note</th><th>Time</th>
</tr>";
foreach ($notes as $n) {
    echo "<tr>
        <td>{$n['advertiser_name']} (#{$n['advertiser_id']})</td>
        <td>{$n['username']}</td>
        <td><textarea readonly style='width:300px;height:40px'>" . htmlspecialchars($n['note']) . "</textarea></td>
        <td>{$n['created_at']}</td>
    </tr>";
}
echo "</table>";

// Pagination links
if ($totalPages > 1) {
    echo "<div style='margin-top:20px'><strong>Pages:</strong> ";
    for ($i = 1; $i <= $totalPages; $i++) {
        $link = "?advertiser=$advertiserId&start=$filterStart&end=$filterEnd&page=$i";
        echo "<a href='$link' style='margin-right:10px'>" . ($i == $page ? "<strong>$i</strong>" : $i) . "</a>";
    }
    echo "</div>";
}
?>
</div>
</body>
</html>