35286-vm/api/chart-data.php
Flatlogic Bot 6e132e0b38 0.2
2025-10-27 21:34:11 +00:00

69 lines
2.2 KiB
PHP

<?php
header('Content-Type: application/json');
require_once __DIR__ . '/../db/config.php';
try {
$pdo = db();
// 1. Data for the line chart (applications over time)
$line_chart_stmt = $pdo->prepare(
"SELECT DATE(created_at) as date, COUNT(*) as count
FROM subscriptions
WHERE created_at >= CURDATE() - INTERVAL 30 DAY
GROUP BY DATE(created_at)
ORDER BY date ASC"
);
$line_chart_stmt->execute();
$line_chart_results = $line_chart_stmt->fetchAll(PDO::FETCH_ASSOC);
$line_chart_labels = [];
$line_chart_data = [];
foreach ($line_chart_results as $row) {
$line_chart_labels[] = $row['date'];
$line_chart_data[] = (int)$row['count'];
}
// 2. Data for status counts (key metrics)
$status_stmt = $pdo->prepare("SELECT status, COUNT(*) as count FROM subscriptions GROUP BY status");
$status_stmt->execute();
$status_results = $status_stmt->fetchAll(PDO::FETCH_KEY_PAIR);
$total_applications = array_sum($status_results);
$status_counts = [
'Total' => $total_applications,
'Approved' => $status_results['Approved'] ?? 0,
'Pending' => $status_results['Pending'] ?? 0,
'Rejected' => $status_results['Rejected'] ?? 0,
];
// 3. Data for insurance type distribution (pie chart)
$type_stmt = $pdo->prepare("SELECT insuranceType, COUNT(*) as count FROM subscriptions GROUP BY insuranceType");
$type_stmt->execute();
$type_results = $type_stmt->fetchAll(PDO::FETCH_KEY_PAIR);
$pie_chart_labels = array_keys($type_results);
$pie_chart_data = array_values($type_results);
// --- Combine all data into a single response ---
echo json_encode([
'success' => true,
'line_chart' => [
'labels' => $line_chart_labels,
'data' => $line_chart_data,
],
'key_metrics' => $status_counts,
'pie_chart' => [
'labels' => $pie_chart_labels,
'data' => $pie_chart_data,
],
]);
} catch (Exception $e) {
http_response_code(500);
echo json_encode([
'success' => false,
'message' => 'Failed to fetch chart data.',
'error' => $e->getMessage() // For debugging
]);
}