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

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

$id_produksi    = $_POST['id_produksi'] ?? null;
$id_pengeringan = $_POST['id_pengeringan'] ?? null;
$id_user        = $_SESSION['id_user'] ?? null;

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

// Ambil berat kering awal
$q = mysqli_query($conn, "SELECT berat_kering FROM pengeringan WHERE id_pengeringan = $id_pengeringan LIMIT 1");
$data = mysqli_fetch_assoc($q);
$berat_kering_awal = floatval($data['berat_kering']);

// Hitung total berat kering yang digunakan selain yang akan diedit
$id_sortasi_implode = implode(",", array_map('intval', $id_sortasi_arr));
$q_total = mysqli_query($conn, "
    SELECT SUM(berat_sortasi + berat_rusak) AS total_terpakai 
    FROM sortasi 
    WHERE id_pengeringan = $id_pengeringan AND id_sortasi NOT IN ($id_sortasi_implode)
");
$d_total = mysqli_fetch_assoc($q_total);
$total_terpakai_lain = floatval($d_total['total_terpakai']);

$total_baru_semua = 0;

foreach ($id_sortasi_arr as $i => $id_sortasi) {
    $id_teh_baru    = intval($id_teh_arr[$i]);
    $berat_sortasi  = floatval($berat_sortasi_arr[$i] ?? 0);
    $berat_rusak    = floatval($berat_rusak_arr[$i] ?? 0);
    $kondisi_baru   = $kondisi_arr[$i];

    // Ambil data lama sortasi
    $q_lama = mysqli_query($conn, "
        SELECT berat_sortasi, berat_rusak, kondisi, id_teh 
        FROM sortasi 
        WHERE id_sortasi = $id_sortasi LIMIT 1
    ");
    $data_lama = mysqli_fetch_assoc($q_lama);
    $berat_lama_sortasi = floatval($data_lama['berat_sortasi']);
    $berat_lama_rusak   = floatval($data_lama['berat_rusak']);
    $kondisi_lama       = $data_lama['kondisi'];
    $id_teh_lama        = $data_lama['id_teh'];

    // Validasi input kondisi
    if ($kondisi_baru === 'Bagus') {
        if ($berat_sortasi <= 0) die("❌ Berat teh bagus harus diisi.");
        $berat_rusak = 0;
    } elseif ($kondisi_baru === 'Rusak') {
        if ($berat_rusak <= 0) die("❌ Berat teh rusak harus diisi.");
        $berat_sortasi = 0;
    } else {
        die("❌ Kondisi tidak valid.");
    }

    $total_baru_semua += $berat_sortasi + $berat_rusak;

    // Update data sortasi
    $stmt = $conn->prepare("
        UPDATE sortasi 
        SET berat_sortasi = ?, 
            berat_rusak = ?, 
            kondisi = ?, 
            keterangan = ?, 
            id_teh = ? 
        WHERE id_sortasi = ?
    ");
    $stmt->bind_param("ddssii", $berat_sortasi, $berat_rusak, $kondisi_baru, $keterangan, $id_teh_baru, $id_sortasi);
    $stmt->execute();
    $stmt->close();

    // Rollback data lama di jenis_teh
    if ($kondisi_lama === 'Bagus') {
        mysqli_query($conn, "
            UPDATE jenis_teh 
            SET jumlah_teh = jumlah_teh - $berat_lama_sortasi,
                jumlah_bagus = jumlah_bagus - $berat_lama_sortasi
            WHERE id_teh = $id_teh_lama
        ");
    } elseif ($kondisi_lama === 'Rusak') {
        mysqli_query($conn, "
            UPDATE jenis_teh 
            SET jumlah_teh = jumlah_teh - $berat_lama_rusak,
                jumlah_rusak = jumlah_rusak - $berat_lama_rusak
            WHERE id_teh = $id_teh_lama
        ");
    }

    // Tambahkan efek baru ke jenis_teh baru
    if ($kondisi_baru === 'Bagus') {
        mysqli_query($conn, "
            UPDATE jenis_teh 
            SET jumlah_teh = jumlah_teh + $berat_sortasi,
                jumlah_bagus = jumlah_bagus + $berat_sortasi
            WHERE id_teh = $id_teh_baru
        ");
    } elseif ($kondisi_baru === 'Rusak') {
        mysqli_query($conn, "
            UPDATE jenis_teh 
            SET jumlah_teh = jumlah_teh + $berat_rusak,
                jumlah_rusak = jumlah_rusak + $berat_rusak
            WHERE id_teh = $id_teh_baru
        ");
    }
}

// Validasi akhir: semua total baru tidak boleh melebihi sisa berat
if ($total_baru_semua > ($berat_kering_awal - $total_terpakai_lain)) {
    die("❌ Total berat baru melebihi sisa berat kering.");
}

// ✅ Redirect
header("Location: sortasi.php?id_produksi=$id_produksi&status=updated");
exit;
?>
