69 lines
2.2 KiB
PHP
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
|
|
]);
|
|
}
|