<?php
require_once __DIR__ . '/includes/config.php';

$action = $_GET['action'] ?? '';
$filtro = $_GET['filtro_fecha'] ?? '30dias';
$fecha_desde = $_GET['fecha_desde'] ?? null;
$fecha_hasta = $_GET['fecha_hasta'] ?? null;

function calcular_fechas($filtro) {
    $fecha_inicio = null;
    $fecha_fin = null;
    
    switch ($filtro) {
        case 'hoy': $fecha_inicio = $fecha_fin = date('Y-m-d'); break;
        case 'ayer': $fecha_inicio = $fecha_fin = date('Y-m-d', strtotime('-1 day')); break;
        case '7dias': $fecha_inicio = date('Y-m-d', strtotime('-7 days')); $fecha_fin = date('Y-m-d'); break;
        case '30dias': $fecha_inicio = date('Y-m-d', strtotime('-30 days')); $fecha_fin = date('Y-m-d'); break;
        case 'mes_actual': $fecha_inicio = date('Y-m-01'); $fecha_fin = date('Y-m-d'); break;
        case 'mes_pasado': $fecha_inicio = date('Y-m-01', strtotime('-1 month')); $fecha_fin = date('Y-m-t', strtotime('-1 month')); break;
    }
    
    return ['inicio' => $fecha_inicio, 'fin' => $fecha_fin];
}

if ($fecha_desde && $fecha_hasta) {
    $fecha_inicio = $fecha_desde;
    $fecha_fin = $fecha_hasta;
} else {
    $fechas = calcular_fechas($filtro);
    $fecha_inicio = $fechas['inicio'];
    $fecha_fin = $fechas['fin'];
}

header('Content-Type: application/json');

if ($action == 'items_por_estado') {
    $estado = $_GET['estado'] ?? '';
    
    $sql = "SELECT i.nombre, COALESCE(SUM(d.monto), 0) as total
            FROM items i
            LEFT JOIN donaciones d ON i.id = d.item_id AND d.estado = :estado
            WHERE i.activo = 1";
    
    if ($fecha_inicio && $fecha_fin) {
        $sql .= " AND DATE(d.fecha_donacion) BETWEEN :fecha_inicio AND :fecha_fin";
    }
    
    $sql .= " GROUP BY i.id, i.nombre ORDER BY total DESC LIMIT 8";
    
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':estado', $estado);
    if ($fecha_inicio && $fecha_fin) {
        $stmt->bindParam(':fecha_inicio', $fecha_inicio);
        $stmt->bindParam(':fecha_fin', $fecha_fin);
    }
    $stmt->execute();
    $items = $stmt->fetchAll();
    
    echo json_encode([
        'labels' => array_column($items, 'nombre'),
        'values' => array_column($items, 'total')
    ]);
    
} elseif ($action == 'estados_por_item') {
    $item = $_GET['item'] ?? '';
    
    $sql = "SELECT d.estado, COUNT(*) as cantidad
            FROM donaciones d
            LEFT JOIN items i ON d.item_id = i.id
            WHERE i.nombre = :item";
    
    if ($fecha_inicio && $fecha_fin) {
        $sql .= " AND DATE(d.fecha_donacion) BETWEEN :fecha_inicio AND :fecha_fin";
    }
    
    $sql .= " GROUP BY d.estado";
    
    $stmt = $pdo->prepare($sql);
    $stmt->bindParam(':item', $item);
    if ($fecha_inicio && $fecha_fin) {
        $stmt->bindParam(':fecha_inicio', $fecha_inicio);
        $stmt->bindParam(':fecha_fin', $fecha_fin);
    }
    $stmt->execute();
    $estados = $stmt->fetchAll();
    
    $colors = [];
    foreach ($estados as $e) {
        $colors[] = $e['estado'] == 'completada' ? '#27ae60' : ($e['estado'] == 'pendiente' ? '#f39c12' : '#e74c3c');
    }
    
    echo json_encode([
        'labels' => array_map('ucfirst', array_column($estados, 'estado')),
        'values' => array_column($estados, 'cantidad'),
        'colors' => $colors
    ]);
}
?>