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 ]); }