<?php
header('Content-Type: application/json; charset=utf-8');
require_once __DIR__ . '/../../services/pdo_connection.php';

try {
    $pdo = (new Database())->getConnection();

    $y = isset($_GET['y']) ? (int)$_GET['y'] : (int)date('Y');
    $m = isset($_GET['m']) ? (int)$_GET['m'] : (int)date('n');
    if ($m < 1 || $m > 12) { $m = (int)date('n'); }
    if ($y < 2000 || $y > 2100) { $y = (int)date('Y'); }

    $platillos = (int)$pdo->query("SELECT COUNT(*) FROM producto WHERE activo=1")->fetchColumn();

    $stmt = $pdo->prepare("
        SELECT
          COUNT(*) AS pedidos,
          COALESCE(SUM(CASE WHEN COALESCE(estado_entrega, estado)='ENTREGADO' THEN monto_total ELSE 0 END),0) AS ganancias,
          COALESCE(SUM(CASE WHEN COALESCE(estado_entrega, estado)='ENTREGADO' THEN 1 ELSE 0 END),0) AS entregados,
          COALESCE(SUM(CASE WHEN COALESCE(estado_entrega, estado)='CANCELADO' THEN 1 ELSE 0 END),0) AS cancelados
        FROM pedido
        WHERE YEAR(fecha_pedido) = :y
          AND MONTH(fecha_pedido)= :m
    ");
    $stmt->execute([':y'=>$y, ':m'=>$m]);
    $row = $stmt->fetch(PDO::FETCH_ASSOC) ?: [];

    $pedidos    = (int)($row['pedidos'] ?? 0);
    $ganancias  = (float)($row['ganancias'] ?? 0);
    $entregados = (int)($row['entregados'] ?? 0);
    $cancelados = (int)($row['cancelados'] ?? 0);
    $pendientes = max(0, $pedidos - $entregados - $cancelados);

    $pct = function($n,$d){ return $d>0 ? round($n*100/$d) : 0; };

    echo json_encode([
        'success' => true,
        'data' => [
            'kpis' => [
                'platillos_activos' => $platillos,
                'pedidos_mes'       => $pedidos,
                'ganancias_mes'     => $ganancias,
                'entregados'        => $entregados,
                'cancelados'        => $cancelados,
                'pendientes'        => $pendientes,
                'pct_entregados'    => $pct($entregados, $pedidos),
                'pct_cancelados'    => $pct($cancelados, $pedidos),
                'pct_pendientes'    => $pct($pendientes, $pedidos),
            ]
        ]
    ], JSON_UNESCAPED_UNICODE);
} catch (Throwable $e) {
    echo json_encode(['success'=>false,'message'=>$e->getMessage()]);
}
