<?php
require_once __DIR__ . '/helpers.php';
require_once __DIR__ . '/auth.php';

// Logout cleanup v2
// Amaç:
// - Sayfa değiştirince CSV önizlemesi kalsın.
// - Kullanıcı bilinçli olarak Çıkış yapınca, henüz admin onayına gitmemiş geçici önizlemeler silinsin.
// - v1'de temizlik uploaded_by eşleşmesine çok bağlıydı; bazı eski/admin yüklemelerinde uploaded_by uyuşmayınca kayıt kalabiliyordu.
// - Bu sürüm admin/production_manager çıkışında tüm geçici önizlemeleri, store_user çıkışında kendi mağazasındaki/kendi yüklediği geçici önizlemeleri temizler.

$user = current_user();

if ($user && isset($user['id'])) {
    $userId = (int)$user['id'];
    $role = (string)($user['role'] ?? '');
    $storeId = isset($user['store_id']) ? (int)$user['store_id'] : 0;

    try {
        $pdo = db();

        // 1) Asıl önemli temizlik: ekranda "Devam Eden CSV Önizlemeleri"ni oluşturan geçici satırlar.
        // Admin/production_manager için: operasyonda test/temizlik amaçlı tüm geçici preview satırlarını sil.
        // Store user için: sadece kendi yüklediği veya kendi mağazasına ait geçici preview satırlarını sil.
        if (in_array($role, ['admin', 'production_manager'], true)) {
            $stmt = $pdo->prepare("\n                DELETE FROM csv_import_rows\n                WHERE row_status IN ('store_pending', 'store_skipped')\n            ");
            $stmt->execute();
        } else {
            $stmt = $pdo->prepare("\n                DELETE FROM csv_import_rows\n                WHERE row_status IN ('store_pending', 'store_skipped')\n                  AND (uploaded_by = :user_id OR store_id = :store_id)\n            ");
            $stmt->execute([
                'user_id' => $userId,
                'store_id' => $storeId,
            ]);
        }

        // 2) Log temizliği yardımcıdır. Hata olursa logout'u engellemesin.
        // Satırlar silindikten sonra boşa düşen preview loglarını temizler.
        try {
            if (in_array($role, ['admin', 'production_manager'], true)) {
                $stmt = $pdo->prepare("\n                    DELETE cil\n                    FROM csv_import_logs cil\n                    LEFT JOIN csv_import_rows r1 ON r1.csv_import_log_id = cil.id\n                    LEFT JOIN csv_import_rows r2 ON r2.last_seen_import_log_id = cil.id\n                    WHERE cil.status IN ('preview_processing', 'preview_ready', 'store_skipped_partial')\n                      AND r1.id IS NULL\n                      AND r2.id IS NULL\n                ");
                $stmt->execute();
            } else {
                $stmt = $pdo->prepare("\n                    DELETE cil\n                    FROM csv_import_logs cil\n                    LEFT JOIN csv_import_rows r1 ON r1.csv_import_log_id = cil.id\n                    LEFT JOIN csv_import_rows r2 ON r2.last_seen_import_log_id = cil.id\n                    WHERE cil.status IN ('preview_processing', 'preview_ready', 'store_skipped_partial')\n                      AND (cil.uploaded_by = :user_id OR cil.store_id = :store_id)\n                      AND r1.id IS NULL\n                      AND r2.id IS NULL\n                ");
                $stmt->execute([
                    'user_id' => $userId,
                    'store_id' => $storeId,
                ]);
            }
        } catch (Throwable $ignored) {
            // Log temizliği yardımcıdır; ana satır temizliği yapıldıysa sistem yeterince temizlenir.
        }
    } catch (Throwable $ignored) {
        // Logout asıl işlevdir; temizlikte hata olsa bile kullanıcı çıkarılmalı.
    }
}

// Session temizliği.
$_SESSION = [];

if (ini_get('session.use_cookies')) {
    $params = session_get_cookie_params();
    setcookie(session_name(), '', time() - 42000,
        $params['path'],
        $params['domain'],
        $params['secure'],
        $params['httponly']
    );
}

session_destroy();
redirect('login.php');
