35607-vm/_get_sales_data.php
Flatlogic Bot 9b5a06451f SInarKasih
2025-11-10 04:11:47 +00:00

43 lines
1.7 KiB
PHP

<?php
require_once 'db/config.php';
header('Content-Type: application/json');
$p_start_date = date('Y-m-d', strtotime('-6 days'));
$p_end_date = date('Y-m-d');
$sql = "SELECT
d.sale_date,
COALESCE(SUM(s.total_amount), 0) AS daily_total
FROM
(SELECT CURDATE() - INTERVAL (a.a + (10 * b.a) + (100 * c.a)) DAY AS sale_date
FROM (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS a
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS b
CROSS JOIN (SELECT 0 AS a UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) AS c
) AS d
LEFT JOIN
sales s ON d.sale_date = DATE(s.sale_date)
WHERE
d.sale_date BETWEEN :start_date AND :end_date
GROUP BY
d.sale_date
ORDER BY
d.sale_date ASC;";
$stmt = db()->prepare($sql);
$stmt->bindParam(':start_date', $p_start_date, PDO::PARAM_STR);
$stmt->bindParam(':end_date', $p_end_date, PDO::PARAM_STR);
$stmt->execute();
$sales_data = $stmt->fetchAll(PDO::FETCH_ASSOC);
$labels = [];
$data = [];
foreach ($sales_data as $row) {
$labels[] = date('M d', strtotime($row['sale_date']));
$data[] = $row['daily_total'];
}
echo json_encode(['labels' => $labels, 'data' => $data]);