<?php
// ============================================================
// FILE: admin/produk_hapus.php — Proses Hapus Produk
// Method: POST (dari form di produk.php)
// Aksi aman:
//   1. Cek apakah produk memiliki riwayat transaksi di pesanan_item
//   2. Jika tidak ada transaksi -> Hapus total beserta file fisik foto
//   3. Jika ada transaksi -> Soft delete (set is_aktif = 0) agar tidak error FK
// ============================================================
require_once __DIR__ . '/../includes/config.php';
require_once __DIR__ . '/../includes/db.php';
require_once __DIR__ . '/../includes/functions.php';
require_once __DIR__ . '/../includes/auth.php';
requireAdmin();

// Hanya terima POST
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    redirect(BASE_URL . '/admin/produk.php');
}

$id = (int)($_POST['hapus_id'] ?? 0);

if (!$id) {
    setFlash('danger', 'ID produk tidak valid.');
    redirect(BASE_URL . '/admin/produk.php');
}

$pdo = db();

// Ambil data produk untuk konfirmasi + nama
$produk = $pdo->prepare("SELECT id, nama FROM produk WHERE id = ? LIMIT 1");
$produk->execute([$id]);
$produk = $produk->fetch();

if (!$produk) {
    setFlash('danger', 'Produk tidak ditemukan.');
    redirect(BASE_URL . '/admin/produk.php');
}

// ── PERBAIKAN: Cek riwayat transaksi di tabel pesanan_item ──
$cekTransaksi = $pdo->prepare("SELECT COUNT(*) FROM pesanan_item WHERE produk_id = ?");
$cekTransaksi->execute([$id]);
$sudahAdaTransaksi = (int)$cekTransaksi->fetchColumn() > 0;

if ($sudahAdaTransaksi) {
    // JALUR 1: Jika sudah pernah dibeli, lakukan Soft Delete (Matikan status aktif)
    $pdo->prepare("UPDATE produk SET is_aktif = 0 WHERE id = ?")->execute([$id]);
    
    setFlash('info', 'Produk <strong>' . e($produk['nama']) . '</strong> tidak dihapus total karena memiliki riwayat transaksi pesanan. Status produk diubah menjadi <strong>Nonaktif (Disembunyikan)</strong>.');
} else {
    // JALUR 2: Jika benar-benar bersih belum ada transaksi, hapus total secara aman
    
    // Hapus semua foto fisik terlebih dahulu
    $fotos = $pdo->prepare("SELECT nama_file FROM produk_foto WHERE produk_id = ?");
    $fotos->execute([$id]);
    foreach ($fotos->fetchAll() as $foto) {
        hapusGambar($foto['nama_file'], 'produk');
    }

    // Hapus data dari DB
    $pdo->prepare("DELETE FROM produk_foto WHERE produk_id = ?")->execute([$id]);
    $pdo->prepare("DELETE FROM produk WHERE id = ?")->execute([$id]);

    setFlash('success', 'Produk <strong>' . e($produk['nama']) . '</strong> berhasil dihapus secara permanen beserta semua fotonya.');
}

redirect(BASE_URL . '/admin/produk.php');