exec($migrationSql); } // 2. Seed data if table is empty $stmt = $pdo->query("SELECT COUNT(*) FROM expense_reports"); $count = $stmt->fetchColumn(); if ($count == 0) { $seedData = [ ['agent_name' => 'John Doe', 'amount' => 150.75, 'description' => 'Client Dinner', 'status' => 'Approved'], ['agent_name' => 'Jane Smith', 'amount' => 89.99, 'description' => 'Office Supplies', 'status' => 'Pending'], ['agent_name' => 'Peter Jones', 'amount' => 1200.00, 'description' => 'Flight to Conference', 'status' => 'Pending'], ['agent_name' => 'John Doe', 'amount' => 45.50, 'description' => 'Taxi Fare', 'status' => 'Rejected'], ['agent_name' => 'Susan Williams', 'amount' => 320.00, 'description' => 'Hotel Stay', 'status' => 'Approved'], ]; $insertSql = "INSERT INTO expense_reports (agent_name, amount, description, status) VALUES (?, ?, ?, ?)"; $stmt = $pdo->prepare($insertSql); foreach ($seedData as $row) { $stmt->execute([$row['agent_name'], $row['amount'], $row['description'], $row['status']]); } } // 3. Fetch all reports $reports = $pdo->query("SELECT * FROM expense_reports ORDER BY created_at DESC")->fetchAll(PDO::FETCH_ASSOC); } catch (PDOException $e) { // In a real app, log this error. For now, we'll just show a message. die("Database error: " . $e->getMessage()); } function getStatusBadgeClass($status) { switch ($status) { case 'Approved': return 'badge-approved'; case 'Rejected': return 'badge-rejected'; case 'Pending': default: return 'badge-pending'; } } ?> Manager Dashboard - ExpenseTracker

Expense Reports

Submit New Expense
Agent Name Amount Date Status Description Actions
No expense reports submitted yet.
$