<?php
session_start();
include "connect.php";
$kode_order = (isset($_POST['kode_order'])) ? htmlentities($_POST['kode_order']) : "";
$meja = (isset($_POST['meja'])) ? htmlentities($_POST['meja']) : "";
$pelanggan = (isset($_POST['pelanggan'])) ? htmlentities($_POST['pelanggan']) : "";
$total = (isset($_POST['total'])) ? htmlentities($_POST['total']) : "";
$uang = (isset($_POST['uang'])) ? htmlentities($_POST['uang']) : "";
$kembalian = $uang - $total;

if (!empty($_POST['bayar_validate'])) {
    if ($kembalian < 0) {
        $message = '<script>
        alert("NOMINAL UANG TIDAK MENCUKUPI");
        window.location="../?x=orderitem&order=' . $kode_order . '&meja=' . $meja . '&pelanggan=' . $pelanggan . '";
    </script>';
    } else {
        // Mulai transaksi database
        mysqli_autocommit($conn, false);
        
        try {
            // Insert pembayaran
            $query_bayar = mysqli_query($conn, "INSERT INTO tb_bayar (id_bayar,nominal_uang,total_bayar) VALUES ('$kode_order','$uang','$total')");
            
            if (!$query_bayar) {
                throw new Exception("Gagal menyimpan pembayaran");
            }
            
            // Ambil detail order untuk mengurangi stok
            $query_order = mysqli_query($conn, "SELECT menu, jumlah FROM tb_list_order WHERE kode_order = '$kode_order'");
            
            if (!$query_order) {
                throw new Exception("Gagal mengambil data order");
            }
            
            // Update stok untuk setiap item yang dipesan
            while ($row = mysqli_fetch_assoc($query_order)) {
                $id_menu = $row['menu']; // ID menu dari tb_list_order
                $jumlah_order = $row['jumlah'];
                
                // Cek stok saat ini berdasarkan ID menu
                $cek_stok = mysqli_query($conn, "SELECT nama_menu, stok FROM tb_daftar_menu WHERE id = '$id_menu'");
                $data_stok = mysqli_fetch_assoc($cek_stok);
                
                if ($data_stok) {
                    $nama_menu = $data_stok['nama_menu'];
                    $stok_sekarang = $data_stok['stok'];
                    
                    // Hitung stok baru
                    $stok_baru = $stok_sekarang - $jumlah_order;
                    
                    // Pastikan stok tidak negatif
                    if ($stok_baru < 0) {
                        throw new Exception("Stok tidak mencukupi untuk menu: $nama_menu (sisa stok: $stok_sekarang, dibutuhkan: $jumlah_order)");
                    }
                    
                    // Update stok
                    $update_stok = mysqli_query($conn, "UPDATE tb_daftar_menu SET stok = '$stok_baru' WHERE id = '$id_menu'");
                    
                    if (!$update_stok) {
                        throw new Exception("Gagal mengupdate stok untuk menu: $nama_menu");
                    }
                } else {
                    throw new Exception("Menu dengan ID $id_menu tidak ditemukan");
                }
            }
            
            // Commit transaksi jika semua berhasil
            mysqli_commit($conn);
            
            $message = '<script>alert("Pembayaran berhasil \nUANG KEMBALIAN Rp. '.$kembalian.'");
                        window.location="../?x=orderitem&order=' . $kode_order . '&meja=' . $meja . '&pelanggan=' . $pelanggan . '"</script>';
                        
        } catch (Exception $e) {
            // Rollback transaksi jika ada error
            mysqli_rollback($conn);
            
            $message = '<script>alert("Pembayaran Gagal: ' . $e->getMessage() . '");
                        window.location="../?x=orderitem&order=' . $kode_order . '&meja=' . $meja . '&pelanggan=' . $pelanggan . '"</script>';
        }
        
        // Kembalikan autocommit ke true
        mysqli_autocommit($conn, true);
    }
}
echo $message;
?>