<?php
session_start();
include 'koneksi.php';

$id_produksi    = $_POST['id_produksi'] ?? null;
$id_pengeringan = $_POST['id_pengeringan'] ?? null;
$kode_sortasi   = $_POST['kode_sortasi'] ?? null;
$id_user        = $_SESSION['id_user'] ?? null;
$berat_kering   = floatval($_POST['berat_kering'] ?? 0);
$keterangan     = $_POST['keterangan'] ?? '-';

$kondisi_arr       = $_POST['kondisi'] ?? [];
$id_teh_arr        = $_POST['id_teh'] ?? [];
$berat_sortasi_arr = $_POST['berat_sortasi'] ?? [];
$berat_rusak_arr   = $_POST['berat_rusak'] ?? [];

if (!$id_user || !$id_produksi || !$id_pengeringan || !$kode_sortasi) {
    die("❌ Data wajib tidak lengkap.");
}

// ✅ Ambil berat_kering dari pengeringan (pastikan akurat dari DB)
$stmtKering = $conn->prepare("SELECT berat_kering FROM pengeringan WHERE id_pengeringan = ?");
$stmtKering->bind_param("i", $id_pengeringan);
$stmtKering->execute();
$stmtKering->bind_result($berat_kering_db);
$stmtKering->fetch();
$stmtKering->close();

// ✅ Ambil name & jabatan dari users
$stmtUser = $conn->prepare("SELECT `name`, jabatan FROM users WHERE id_user = ?");
$stmtUser->bind_param("i", $id_user);
$stmtUser->execute();
$stmtUser->bind_result($name, $jabatan);
$stmtUser->fetch();
$stmtUser->close();

// Hitung total berat input
$total_masuk = 0;
for ($i = 0; $i < count($kondisi_arr); $i++) {
    $total_masuk += floatval($berat_sortasi_arr[$i] ?? 0) + floatval($berat_rusak_arr[$i] ?? 0);
}

// Hitung sisa berat
$query = $conn->prepare("SELECT COALESCE(SUM(berat_sortasi + berat_rusak), 0) FROM sortasi WHERE kode_sortasi = ?");
$query->bind_param("s", $kode_sortasi);
$query->execute();
$query->bind_result($total_terpakai);
$query->fetch();
$query->close();

$sisa_kering = $berat_kering_db - $total_terpakai;
if ($total_masuk > $sisa_kering) {
    die("❌ Total berat input ($total_masuk kg) melebihi sisa berat kering ($sisa_kering kg).");
}

// Proses setiap baris input
for ($i = 0; $i < count($kondisi_arr); $i++) {
    $kondisi       = $kondisi_arr[$i];
    $id_teh        = intval($id_teh_arr[$i] ?? 0);
    $berat_sortasi = floatval($berat_sortasi_arr[$i] ?? 0);
    $berat_rusak   = floatval($berat_rusak_arr[$i] ?? 0);

    // Ambil kelas_mutu, mutu, grade dari jenis_teh
    $kelas_mutu = $mutu = $grade = null;
    if ($id_teh > 0) {
        $stmt_teh = $conn->prepare("SELECT kelas_mutu, mutu, grade FROM jenis_teh WHERE id_teh = ?");
        $stmt_teh->bind_param("i", $id_teh);
        $stmt_teh->execute();
        $stmt_teh->bind_result($kelas_mutu, $mutu, $grade);
        $stmt_teh->fetch();
        $stmt_teh->close();
    }

    // Cek apakah ada baris kosong
    $cek = $conn->prepare("SELECT id_sortasi FROM sortasi 
                           WHERE kode_sortasi = ? AND id_teh IS NULL LIMIT 1");
    $cek->bind_param("s", $kode_sortasi);
    $cek->execute();
    $result = $cek->get_result();
    $cek->close();

    if ($result->num_rows > 0) {
        // UPDATE baris kosong
        $row = $result->fetch_assoc();
        $id_sortasi = $row['id_sortasi'];

        $stmt = $conn->prepare("UPDATE sortasi SET 
            id_teh = ?, id_user = ?, kondisi = ?, berat_kering = ?, berat_sortasi = ?, berat_rusak = ?, 
            kelas_mutu = ?, mutu = ?, grade = ?, keterangan = ?, 
            name = ?, jabatan = ?, status = 'Selesai', tanggal_input = NOW()
            WHERE id_sortasi = ?");
        $stmt->bind_param("iissddssssssi", 
            $id_teh, $id_user, $kondisi, $berat_kering_db, $berat_sortasi, $berat_rusak, 
            $kelas_mutu, $mutu, $grade, $keterangan, 
            $name, $jabatan, $id_sortasi);
        $stmt->execute();
        $stmt->close();
    } else {
        // INSERT baru
        $stmt = $conn->prepare("INSERT INTO sortasi (
            kode_sortasi, id_produksi, id_pengeringan, id_teh, id_user, kondisi, berat_kering,
            berat_sortasi, berat_rusak, kelas_mutu, mutu, grade, keterangan,
            name, jabatan, status, tanggal_input
        ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'Selesai', NOW())");
        $stmt->bind_param("siiiisddsssssss",
            $kode_sortasi, $id_produksi, $id_pengeringan, $id_teh, $id_user,
            $kondisi, $berat_kering_db, $berat_sortasi, $berat_rusak,
            $kelas_mutu, $mutu, $grade, $keterangan,
            $name, $jabatan
        );
        $stmt->execute();
        $stmt->close();
    }

    // Update data di jenis_teh
    $total_input = 0;
    if ($kondisi === 'Bagus' && $berat_sortasi > 0) {
        $total_input = $berat_sortasi;
        $stmt = $conn->prepare("UPDATE jenis_teh 
            SET jumlah_teh = jumlah_teh + ?, jumlah_bagus = jumlah_bagus + ? 
            WHERE id_teh = ?");
        $stmt->bind_param("ddi", $total_input, $berat_sortasi, $id_teh);
        $stmt->execute();
        $stmt->close();
    } elseif ($kondisi === 'Rusak' && $berat_rusak > 0) {
        $total_input = $berat_rusak;
        $stmt = $conn->prepare("UPDATE jenis_teh 
            SET jumlah_teh = jumlah_teh + ?, jumlah_rusak = jumlah_rusak + ? 
            WHERE id_teh = ?");
        $stmt->bind_param("ddi", $total_input, $berat_rusak, $id_teh);
        $stmt->execute();
        $stmt->close();
    }
}

header("Location: sortasi.php?id_produksi=$id_produksi&status=Berhasil");
exit;
?>
