<?php
require_once 'config.php';

// Determinar el tipo de traslados a mostrar
$tipo = isset($_GET['tipo']) && $_GET['tipo'] === 'recibidos' ? 'recibidos' : 'enviados';
$fecha_inicio = isset($_GET['fecha_inicio']) ? trim($_GET['fecha_inicio']) : '';
$fecha_fin = isset($_GET['fecha_fin']) ? trim($_GET['fecha_fin']) : '';

// La base de la consulta es la misma
$sql = "SELECT 
            p.NombreComercial,
            t.fecha_traslado,
            t.estado,
            CASE WHEN dt.presentacion_id = 1 THEN dt.cantidad ELSE 0 END AS cantidad_unidad,
            CASE WHEN dt.presentacion_id = 2 THEN dt.cantidad ELSE 0 END AS cantidad_blister,
            CASE WHEN dt.presentacion_id = 3 THEN dt.cantidad ELSE 0 END AS cantidad_caja,
            dt.es_facturado AS sefactura,
            s_origen.nombre AS sucursal_origen,
            s_destino.nombre AS sucursal_destino,
            u_envia.nombre AS usuario_envia,
            u_recibe.nombre AS usuario_recibe
        FROM detalle_traslados AS dt
        JOIN traslados AS t ON dt.traslado_id = t.id
        JOIN productos AS p ON dt.producto_id = p.id
        JOIN sucursales AS s_origen ON t.sucursal_origen = s_origen.id
        JOIN sucursales AS s_destino ON t.sucursal_destino = s_destino.id
        JOIN usuarios AS u_envia ON t.usuario_id = u_envia.id
        LEFT JOIN usuarios AS u_recibe ON t.usuario_receptor_id = u_recibe.id";

$where_clauses = [];
$params = [];

// Filtro por sucursal origen/destino segÃºn tipo
if ($tipo === 'enviados') {
    $where_clauses[] = "t.sucursal_origen = ?";
    $params[] = ID_SUCURSAL_ACTUAL;
} else { // recibidos
    $where_clauses[] = "t.sucursal_destino = ?";
    $params[] = ID_SUCURSAL_ACTUAL;
}

// Filtros por fecha
if (!empty($fecha_inicio)) {
    $where_clauses[] = "t.fecha_traslado >= ?";
    $params[] = $fecha_inicio . ' 00:00:00';
}
if (!empty($fecha_fin)) {
    $where_clauses[] = "t.fecha_traslado <= ?";
    $params[] = $fecha_fin . ' 23:59:59';
}

if (!empty($where_clauses)) {
    $sql .= " WHERE " . implode(" AND ", $where_clauses);
}

$sql .= " ORDER BY t.fecha_traslado DESC";

// Si no se filtra por fecha, limitamos a 20 para rendimiento
if (empty($fecha_inicio) && empty($fecha_fin)) {
    $sql .= " LIMIT 20";
} else {
    $sql .= " LIMIT 500"; // LÃ­mite amplio para bÃºsquedas por fecha
}

try {
    $stmt = $pdo->prepare($sql);
    $stmt->execute($params);
    $traslados = $stmt->fetchAll(PDO::FETCH_ASSOC);

    if ($traslados) {
        $html = '';
        foreach ($traslados as $t) {
            
            $cantidad = 0;
            $presentacion = 'N/A';
            if ($t['cantidad_caja'] > 0) {
                $cantidad = $t['cantidad_caja'];
                $presentacion = 'Caja';
            } elseif ($t['cantidad_blister'] > 0) {
                $cantidad = $t['cantidad_blister'];
                $presentacion = 'Bl„1¤7„1¤7ster';
            } elseif ($t['cantidad_unidad'] > 0) {
                $cantidad = $t['cantidad_unidad'];
                $presentacion = 'Unidad';
            }
            
            $fecha = date('d/m/Y H:i A', strtotime($t['fecha_traslado']));
            $usuario_recibe = $t['usuario_recibe'] ? $t['usuario_recibe'] : 'N/A';
            
            $clase_estado = 'bg-secondary';
            if ($t['estado'] == 'en_transito') $clase_estado = 'bg-warning text-dark';
            if ($t['estado'] == 'completado') $clase_estado = 'bg-success';
            if ($t['estado'] == 'cancelado') $clase_estado = 'bg-danger';

            $facturable_texto = $t['sefactura'] == 1 
                ? "<span class='badge bg-success'>SI</span>" 
                : "<span class='badge bg-secondary'>NO</span>";

            $html .= "<tr>";
            $html .= "<td>{$t['NombreComercial']}</td>";
            $html .= "<td>{$presentacion}</td>";
            $html .= "<td>{$cantidad}</td>";
            $html .= "<td>{$t['sucursal_origen']}</td>";
            $html .= "<td>{$t['sucursal_destino']}</td>";
            $html .= "<td>{$t['usuario_envia']}</td>";
            $html .= "<td>{$usuario_recibe}</td>";
            $html .= "<td>{$facturable_texto}</td>";
            $html .= "<td><span class='badge {$clase_estado}'>{$t['estado']}</span></td>";
            $html .= "<td>{$fecha}</td>";
            $html .= "</tr>";
        }
        echo $html;
    } else {
        echo "<tr><td colspan='10' class='text-center'>No hay traslados registrados para esta vista.</td></tr>";
    }

} catch (PDOException $e) {
    echo "<tr><td colspan='10' class='text-center text-danger'>Error de base de datos: " . $e->getMessage() . "</td></tr>";
}
?>