View file test.4imas.ru/ajax/admin/dashboard_stats.php

File size: 1.89Kb
<?php
// ajax/admin/dashboard_stats.php
require '../../config/bootstrap.php';
require '../../config/auth.php';

// Доступ только для администратора
if (!isAdmin()) {
    http_response_code(403);
    echo json_encode(['success'=>false, 'error'=>'Доступ запрещён']);
    exit;
}

// Проверка CSRF (опционально, если запрос через AJAX из админки)
$csrf = $_GET['csrf'] ?? '';
if (!empty($csrf) && $csrf !== ($_SESSION['csrf'] ?? '')) {
    http_response_code(403);
    echo json_encode(['success'=>false, 'error'=>'Неверный CSRF токен']);
    exit;
}

try {
    // Количество пользователей
    $total_users = $pdo->query("SELECT COUNT(*) FROM users")->fetchColumn();

    // Количество заказов
    $total_orders = $pdo->query("SELECT COUNT(*) FROM orders")->fetchColumn();

    // Общая сумма заказов
    $total_revenue = $pdo->query("SELECT SUM(price * quantity) FROM orders")->fetchColumn();
    $total_revenue = $total_revenue ?: 0;

    // Загружено фотографий
    $total_photos = $pdo->query("SELECT COUNT(*) FROM photos")->fetchColumn();

    // Статистика по статусам заказов
    $stmt = $pdo->query("SELECT status, COUNT(*) as count FROM orders GROUP BY status");
    $orders_by_status = $stmt->fetchAll(PDO::FETCH_ASSOC);

    echo json_encode([
        'success' => true,
        'total_users' => intval($total_users),
        'total_orders' => intval($total_orders),
        'total_revenue' => floatval($total_revenue),
        'total_photos' => intval($total_photos),
        'orders_by_status' => $orders_by_status
    ]);
} catch (Exception $e) {
    echo json_encode(['success'=>false, 'error'=>'Ошибка получения статистики: '.$e->getMessage()]);
}