<?php
session_start();
if (!isset($_SESSION['admin_id'])) {
    header('HTTP/1.1 403 Forbidden');
    exit;
}
require_once __DIR__ . '/../../../config/db.php';

$database = new Database();
$db = $database->getConnection();

header('Content-Type: application/json');

try {
    $period = $_GET['period'] ?? '24h';
    $interval = 'INTERVAL 24 HOUR';
    $format = '%H:00';
    $groupBy = 'hour';

    switch ($period) {
        case '7d':
            $interval = 'INTERVAL 7 DAY';
            $format = '%d.%m';
            $groupBy = 'day';
            break;
        case '30d':
            $interval = 'INTERVAL 30 DAY';
            $format = '%d.%m';
            $groupBy = 'day';
            break;
        case '6m':
            $interval = 'INTERVAL 6 MONTH';
            $format = '%M %Y';
            $groupBy = 'month';
            break;
        case '1y':
            $interval = 'INTERVAL 1 YEAR';
            $format = '%M %Y';
            $groupBy = 'month';
            break;
        case 'all':
            $interval = 'INTERVAL 10 YEAR';
            $format = '%M %Y';
            $groupBy = 'month';
            break;
    }

    $sql = "
        SELECT DATE_FORMAT(timestamp, '$format') as label, COUNT(*) as count 
        FROM visitors 
        WHERE timestamp >= NOW() - $interval 
        GROUP BY label 
        ORDER BY MIN(timestamp) ASC
    ";

    $stmt = $db->query($sql);

    $labels = [];
    $values = [];

    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $labels[] = $row['label'];
        $values[] = (int)$row['count'];
    }

    // Default dummy data if empty
    if (empty($labels)) {
        $labels = ['Нет данных'];
        $values = [0];
    }

    echo json_encode(['labels' => $labels, 'values' => $values]);
} catch (Exception $e) {
    echo json_encode(['error' => $e->getMessage(), 'labels' => [], 'values' => []]);
}
