requireAdmin();
$user = $auth->getCurrentUser();
$db = Database::getInstance();
// Get system statistics
$stats = [
'total_companies' => $db->fetchOne("SELECT COUNT(*) as count FROM companies")['count'],
'active_companies' => $db->fetchOne("SELECT COUNT(*) as count FROM companies WHERE status = 'active'")['count'],
'trial_companies' => $db->fetchOne("SELECT COUNT(*) as count FROM companies WHERE status = 'trial'")['count'],
'total_users' => $db->fetchOne("SELECT COUNT(*) as count FROM users")['count'],
'active_users' => $db->fetchOne("SELECT COUNT(*) as count FROM users WHERE status = 'active'")['count'],
'total_projects' => $db->fetchOne("SELECT COUNT(*) as count FROM projects")['count'],
'active_projects' => $db->fetchOne("SELECT COUNT(*) as count FROM projects WHERE status = 'active'")['count'],
'total_tasks' => $db->fetchOne("SELECT COUNT(*) as count FROM tasks")['count'],
'completed_tasks' => $db->fetchOne("SELECT COUNT(*) as count FROM tasks WHERE status = 'completed'")['count']
];
// Get revenue statistics
$revenue = [
'mrr' => $db->fetchOne("
SELECT SUM(
CASE
WHEN plan = 'starter' THEN 10
WHEN plan = 'business' THEN 20
WHEN plan = 'enterprise' THEN 35
ELSE 0
END
) as total
FROM companies WHERE status = 'active'
")['total'] ?? 0,
'arr' => 0
];
$revenue['arr'] = $revenue['mrr'] * 12;
// Get recent activities
$recentActivities = $db->fetchAll("
SELECT al.*, u.name as user_name, c.name as company_name
FROM audit_logs al
JOIN users u ON al.user_id = u.id
JOIN companies c ON al.company_id = c.id
ORDER BY al.created_at DESC
LIMIT 10
");
// Get growth metrics
$growthData = $db->fetchAll("
SELECT DATE(created_at) as date, COUNT(*) as new_companies
FROM companies
WHERE created_at >= DATE_SUB(NOW(), INTERVAL 30 DAY)
GROUP BY DATE(created_at)
ORDER BY date ASC
");
$pageTitle = 'Admin Dashboard';
include '../includes/header.php';
?>
C$= number_format($revenue['mrr']) ?>
+12.5% from last month
C$= number_format($revenue['arr']) ?>
+18.3% from last year
= $stats['active_companies'] ?>
+= $stats['trial_companies'] ?> trials
= number_format($stats['active_users']) ?>
= round(($stats['active_users'] / $stats['total_users']) * 100, 1) ?>% activation rate
| Total Companies |
= number_format($stats['total_companies']) ?> |
| Active Companies |
= number_format($stats['active_companies']) ?> |
| Trial Companies |
= number_format($stats['trial_companies']) ?> |
| Total Users |
= number_format($stats['total_users']) ?> |
| Active Users |
= number_format($stats['active_users']) ?> |
| Total Projects |
= number_format($stats['total_projects']) ?> |
| Active Projects |
= number_format($stats['active_projects']) ?> |
| Total Tasks |
= number_format($stats['total_tasks']) ?> |
| Completed Tasks |
= number_format($stats['completed_tasks']) ?> |
| Action |
User |
Company |
Time |
|
= htmlspecialchars($activity['action']) ?>
|
= htmlspecialchars($activity['user_name']) ?> |
= htmlspecialchars($activity['company_name']) ?> |
= date('M j, g:i A', strtotime($activity['created_at'])) ?>
|