<?php
$pageTitle = 'Reportes';
require_once __DIR__ . '/../../config/config.php';
requireLogin();

if ($_SESSION['rol'] != 'admin') {
    showAlert('No tiene permisos para acceder a esta sección', 'danger');
    header('Location: ' . SITE_URL);
    exit;
}

$db = getDB();

// Estadísticas generales del mes
$mesActual = date('Y-m');

// Órdenes del mes
$stmt = $db->prepare("SELECT COUNT(*) FROM ordenes WHERE DATE_FORMAT(fecha_orden, '%Y-%m') = ?");
$stmt->execute([$mesActual]);
$ordenesMes = $stmt->fetchColumn();

// Ingresos del mes
$stmt = $db->prepare("SELECT COALESCE(SUM(monto), 0) FROM pagos WHERE DATE_FORMAT(fecha_pago, '%Y-%m') = ?");
$stmt->execute([$mesActual]);
$ingresosMes = $stmt->fetchColumn();

// Pacientes nuevos del mes
$stmt = $db->prepare("SELECT COUNT(*) FROM pacientes WHERE DATE_FORMAT(created_at, '%Y-%m') = ?");
$stmt->execute([$mesActual]);
$pacientesNuevos = $stmt->fetchColumn();

// Exámenes más solicitados
$stmt = $db->query("
    SELECT e.nombre, COUNT(od.id) as total
    FROM orden_detalle od
    JOIN examenes e ON od.examen_id = e.id
    JOIN ordenes o ON od.orden_id = o.id
    WHERE o.fecha_orden >= DATE_SUB(CURDATE(), INTERVAL 30 DAY)
    GROUP BY e.id
    ORDER BY total DESC
    LIMIT 10
");
$examenesMasSolicitados = $stmt->fetchAll();

// Ingresos últimos 7 días
$stmt = $db->query("
    SELECT DATE(fecha_pago) as fecha, SUM(monto) as total
    FROM pagos
    WHERE fecha_pago >= DATE_SUB(CURDATE(), INTERVAL 7 DAY)
    GROUP BY DATE(fecha_pago)
    ORDER BY fecha
");
$ingresosUltimos7Dias = $stmt->fetchAll();

require_once __DIR__ . '/../../includes/header.php';
?>

<div class="d-flex justify-content-between align-items-center mt-4 mb-4">
    <h2><i class="bi bi-graph-up"></i> Reportes y Estadísticas</h2>
    <div>
        <a href="ventas.php" class="btn btn-outline-primary">
            <i class="bi bi-cash"></i> Reporte de Ventas
        </a>
        <a href="examenes.php" class="btn btn-outline-success">
            <i class="bi bi-droplet"></i> Reporte de Exámenes
        </a>
        <a href="gastos_inventario.php" class="btn btn-outline-danger">
            <i class="bi bi-graph-down"></i> Gastos de Inventario
        </a>
    </div>
</div>

<!-- Resumen del mes -->
<div class="row mb-4">
    <div class="col-md-4">
        <div class="card bg-primary text-white">
            <div class="card-body text-center">
                <h6>Órdenes del Mes</h6>
                <h2><?= $ordenesMes ?></h2>
            </div>
        </div>
    </div>
    <div class="col-md-4">
        <div class="card bg-success text-white">
            <div class="card-body text-center">
                <h6>Ingresos del Mes</h6>
                <h2><?= formatMoney($ingresosMes) ?></h2>
            </div>
        </div>
    </div>
    <div class="col-md-4">
        <div class="card bg-info text-white">
            <div class="card-body text-center">
                <h6>Pacientes Nuevos</h6>
                <h2><?= $pacientesNuevos ?></h2>
            </div>
        </div>
    </div>
</div>

<div class="row">
    <!-- Gráfico de ingresos -->
    <div class="col-md-8">
        <div class="card mb-4">
            <div class="card-header">
                <h5 class="mb-0"><i class="bi bi-bar-chart"></i> Ingresos Últimos 7 Días</h5>
            </div>
            <div class="card-body">
                <canvas id="chartIngresos" height="100"></canvas>
            </div>
        </div>
    </div>

    <!-- Exámenes más solicitados -->
    <div class="col-md-4">
        <div class="card mb-4">
            <div class="card-header">
                <h5 class="mb-0"><i class="bi bi-trophy"></i> Top 10 Exámenes</h5>
            </div>
            <div class="card-body">
                <ul class="list-group list-group-flush">
                    <?php foreach ($examenesMasSolicitados as $i => $ex): ?>
                    <li class="list-group-item d-flex justify-content-between align-items-center">
                        <span>
                            <strong><?= $i + 1 ?>.</strong> <?= $ex['nombre'] ?>
                        </span>
                        <span class="badge bg-primary rounded-pill"><?= $ex['total'] ?></span>
                    </li>
                    <?php endforeach; ?>
                </ul>
            </div>
        </div>
    </div>
</div>

<!-- Enlaces rápidos a reportes -->
<div class="row">
    <div class="col-md-3">
        <div class="card text-center">
            <div class="card-body">
                <i class="bi bi-calendar-day" style="font-size: 3rem; color: #6c757d;"></i>
                <h5 class="mt-2">Reporte Diario</h5>
                <a href="diario.php" class="btn btn-outline-primary btn-sm">Ver Reporte</a>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="card text-center">
            <div class="card-body">
                <i class="bi bi-calendar-week" style="font-size: 3rem; color: #6c757d;"></i>
                <h5 class="mt-2">Reporte Semanal</h5>
                <a href="semanal.php" class="btn btn-outline-primary btn-sm">Ver Reporte</a>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="card text-center">
            <div class="card-body">
                <i class="bi bi-calendar-month" style="font-size: 3rem; color: #6c757d;"></i>
                <h5 class="mt-2">Reporte Mensual</h5>
                <a href="mensual.php" class="btn btn-outline-primary btn-sm">Ver Reporte</a>
            </div>
        </div>
    </div>
    <div class="col-md-3">
        <div class="card text-center">
            <div class="card-body">
                <i class="bi bi-people" style="font-size: 3rem; color: #6c757d;"></i>
                <h5 class="mt-2">Pacientes</h5>
                <a href="pacientes.php" class="btn btn-outline-primary btn-sm">Ver Reporte</a>
            </div>
        </div>
    </div>
</div>

<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
<script>
// Gráfico de ingresos
const ctx = document.getElementById('chartIngresos').getContext('2d');
new Chart(ctx, {
    type: 'bar',
    data: {
        labels: [<?php 
            echo implode(',', array_map(function($d) { 
                return "'" . date('d/m', strtotime($d['fecha'])) . "'"; 
            }, $ingresosUltimos7Dias)); 
        ?>],
        datasets: [{
            label: 'Ingresos',
            data: [<?php echo implode(',', array_column($ingresosUltimos7Dias, 'total')); ?>],
            backgroundColor: 'rgba(102, 126, 234, 0.8)',
            borderColor: 'rgba(102, 126, 234, 1)',
            borderWidth: 1
        }]
    },
    options: {
        responsive: true,
        scales: {
            y: {
                beginAtZero: true,
                ticks: {
                    callback: function(value) {
                        return '<?= CURRENCY ?>' + value;
                    }
                }
            }
        },
        plugins: {
            legend: {
                display: false
            }
        }
    }
});
</script>

<?php require_once __DIR__ . '/../../includes/footer.php'; ?>
