<?php
/**
 * Script de test pour vérifier le système de commandes seller
 * Exécuter: php test_seller_orders.php
 */

require_once __DIR__ . '/../vendor/autoload.php';

$app = require_once __DIR__ . '/../bootstrap/app.php';
$kernel = $app->make(Illuminate\Contracts\Console\Kernel::class);
$kernel->bootstrap();

use App\Models\Order;
use App\Models\OrderItem;
use App\Models\Seller;
use App\Models\Product;
use App\Services\SellerOrderService;

echo "=== Test du système de commandes seller ===\n\n";

// 1. Vérifier les colonnes order_items
echo "1. Vérification des colonnes order_items:\n";
$columns = \Illuminate\Support\Facades\Schema::getColumnListing('order_items');
$requiredColumns = ['seller_id', 'seller_commission', 'seller_amount', 'seller_paid', 'seller_paid_at'];
foreach ($requiredColumns as $col) {
    $exists = in_array($col, $columns) ? '✓' : '✗';
    echo "   - {$col}: {$exists}\n";
}
echo "\n";

// 2. Vérifier les sellers existants
echo "2. Sellers dans la base:\n";
$sellers = Seller::with('user')->take(5)->get();
if ($sellers->isEmpty()) {
    echo "   Aucun seller trouvé\n";
} else {
    foreach ($sellers as $seller) {
        $productCount = Product::where('seller_id', $seller->id)->count();
        echo "   - {$seller->shop_name} (ID: {$seller->id}) - User: " . ($seller->user->name ?? 'N/A') . " - Produits: {$productCount} - Commission: {$seller->commission_rate}%\n";
    }
}
echo "\n";

// 3. Vérifier les produits avec seller_id
echo "3. Produits de sellers:\n";
$sellerProducts = Product::whereNotNull('seller_id')->with('seller')->take(5)->get();
if ($sellerProducts->isEmpty()) {
    echo "   Aucun produit de seller trouvé\n";
} else {
    foreach ($sellerProducts as $product) {
        echo "   - {$product->name} (Seller: " . ($product->seller->shop_name ?? 'N/A') . ")\n";
    }
}
echo "\n";

// 4. Vérifier les order_items avec seller_id
echo "4. Order items avec seller_id assigné:\n";
$sellerOrderItems = OrderItem::whereNotNull('seller_id')->with(['order', 'seller', 'product'])->take(5)->get();
if ($sellerOrderItems->isEmpty()) {
    echo "   Aucun order_item avec seller_id trouvé\n";
    echo "   → Le système est prêt mais n'a pas encore traité de commandes de sellers\n";
} else {
    foreach ($sellerOrderItems as $item) {
        echo "   - Commande #{$item->order->order_number} - Produit: " . ($item->product->name ?? 'N/A') . "\n";
        echo "     → Total: {$item->total_price} XOF | Commission: {$item->seller_commission} XOF | Net: {$item->seller_amount} XOF | Payé: " . ($item->seller_paid ? 'Oui' : 'Non') . "\n";
    }
}
echo "\n";

// 5. Vérifier les commandes récentes et si elles ont des produits seller non traités
echo "5. Vérification des commandes récentes:\n";
$recentOrders = Order::with(['orderItems.product'])->orderBy('created_at', 'desc')->take(5)->get();
if ($recentOrders->isEmpty()) {
    echo "   Aucune commande trouvée\n";
} else {
    foreach ($recentOrders as $order) {
        echo "   - Commande #{$order->order_number} ({$order->status}) - {$order->created_at->format('d/m/Y')}\n";
        $hasUnprocessedSellerItems = false;
        foreach ($order->orderItems as $item) {
            $product = $item->product;
            if ($product && $product->seller_id && !$item->seller_id) {
                $hasUnprocessedSellerItems = true;
                echo "     ⚠ Item non traité: {$product->name} (seller_id produit: {$product->seller_id}, seller_id item: NULL)\n";
            }
        }
        if (!$hasUnprocessedSellerItems) {
            echo "     ✓ Tous les items sont correctement traités\n";
        }
    }
}
echo "\n";

// 6. Test du service
echo "6. Test du SellerOrderService:\n";
$service = new SellerOrderService();
$firstSeller = Seller::first();
if ($firstSeller) {
    $stats = $service->getSellerStats($firstSeller);
    echo "   Stats pour {$firstSeller->shop_name}:\n";
    echo "   - Commandes totales: {$stats['total_orders']}\n";
    echo "   - Items vendus: {$stats['total_items_sold']}\n";
    echo "   - Revenu brut: " . number_format($stats['total_gross_revenue'] ?? 0, 0, ',', ' ') . " XOF\n";
    echo "   - Commissions payées: " . number_format($stats['total_commission_paid'] ?? 0, 0, ',', ' ') . " XOF\n";
    echo "   - Revenus nets: " . number_format($stats['total_net_revenue'] ?? 0, 0, ',', ' ') . " XOF\n";
    echo "   - Commandes en attente: {$stats['pending_orders']}\n";
    echo "   - Commandes livrées: {$stats['delivered_orders']}\n";
} else {
    echo "   Aucun seller pour tester\n";
}

echo "\n=== Test terminé ===\n";
