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

// Pastikan user telah login
if (!isset($_SESSION['username'])) {
    echo json_encode(['status' => 'error', 'message' => 'Silakan login terlebih dahulu.']);
    exit();
}

// Ambil data RFID dari POST
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['rfid_code'])) {
    $rfid_barang = trim($_POST['rfid_code']); // Mengambil RFID yang dipindai

    // Cek apakah RFID ada di database
    $sql = "SELECT * FROM inventaris WHERE LOWER(rfid_barang) = LOWER(?)";
    $stmt = $conn->prepare($sql);
    if (!$stmt) {
        error_log("Prepare failed: " . $conn->error);
        echo json_encode(['status' => 'error', 'message' => 'Gagal menyiapkan query.']);
        exit();
    }
    
    $stmt->bind_param("s", $rfid_barang);
    $stmt->execute();
    $result = $stmt->get_result();

    if ($result && $result->num_rows > 0) {
        // Barang ditemukan
        $barang = $result->fetch_assoc();
        
        // Dapatkan status barang saat ini
        $status_barang_sekarang = $barang['status_barang'];
        
        // Tentukan status barang baru menggunakan if-else
        if ($status_barang_sekarang === 'Masuk') {
            $status_barang_baru = 'Keluar';
        } else if ($status_barang_sekarang === 'Keluar') {
            $status_barang_baru = 'Masuk';
        } else {
            // Jika status tidak sesuai dengan "Masuk" atau "Keluar", atur status barang baru sebagai 'Masuk' secara default
            $status_barang_baru = 'Masuk';
        }
        
        // Update status barang di database
        $update_sql = "UPDATE inventaris SET status_barang = ? WHERE rfid_barang = ?";
        $stmt_update = $conn->prepare($update_sql);
        if (!$stmt_update) {
            error_log("Prepare failed: " . $conn->error);
            echo json_encode(['status' => 'error', 'message' => 'Gagal menyiapkan query untuk update.']);
            exit();
        }

        $stmt_update->bind_param("ss", $status_barang_baru, $rfid_barang);
        if ($stmt_update->execute()) {
            // Simpan perubahan status di tabel riwayat_barang
            $insert_riwayat_sql = "INSERT INTO riwayat_barang (rfid_barang, status_awal, status_baru) VALUES (?, ?, ?)";
            $stmt_riwayat = $conn->prepare($insert_riwayat_sql);
            if (!$stmt_riwayat) {
                error_log("Prepare failed: " . $conn->error);
                echo json_encode(['status' => 'error', 'message' => 'Gagal menyiapkan query untuk menyimpan riwayat.']);
                exit();
            }
            $stmt_riwayat->bind_param("sss", $rfid_barang, $status_barang_sekarang, $status_barang_baru);
            
            if ($stmt_riwayat->execute()) {
                echo json_encode(['status' => 'success', 'message' => $barang['nama_barang'] . ' status diubah menjadi: ' . $status_barang_baru]);
            } else {
                error_log("Execute failed: " . $stmt_riwayat->error);
                echo json_encode(['status' => 'error', 'message' => 'Gagal menyimpan riwayat perubahan status.']);
            }
        } else {
            error_log("Execute failed: " . $stmt_update->error);
            echo json_encode(['status' => 'error', 'message' => 'Gagal memperbarui status barang.']);
        }
    } else {
        // Barang tidak ditemukan
        echo json_encode(['status' => 'error', 'message' => 'RFID tidak ditemukan']);
    }
} else {
    echo json_encode(['status' => 'error', 'message' => 'RFID tidak valid']);
}
?>
