<?php
include "connect.php"; // Pastikan file connect.php sudah benar dan berisi koneksi database

// Ambil data dari POST request
$nama_menu = (isset($_POST['nama_menu'])) ? htmlentities($_POST['nama_menu']) : "";
$keterangan = (isset($_POST['keterangan'])) ? htmlentities($_POST['keterangan']) : "";
$harga = (isset($_POST['harga'])) ? htmlentities($_POST['harga']) : "";
$stok = (isset($_POST['stok'])) ? htmlentities($_POST['stok']) : "";

if (!empty($_POST['input_menu_validate'])) {
    $kode_rand = rand(10000, 99999) . "-"; // Generate random code
    $target_dir = "../assets/img/";
    $image_name = $kode_rand . basename($_FILES['foto']['name']); // Gunakan kode_rand untuk nama file
    $target_file = $target_dir . $image_name; // Path lengkap untuk file yang akan diunggah
    $imageType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION)); // Ekstensi file

    $statusUpload = 1; // Default status upload berhasil
    $message = ""; // Inisialisasi pesan

    // Validasi input harga dan stok (pastikan berupa angka)
    if (!is_numeric($harga) && $statusUpload == 1) {
        $message = "Harga harus berupa angka.";
        $statusUpload = 0;
    }
    if (!filter_var($stok, FILTER_VALIDATE_INT) && $statusUpload == 1) {
        $message = "Stok harus berupa bilangan bulat.";
        $statusUpload = 0;
    }


    // Cek apakah file adalah gambar
    $check = getimagesize($_FILES['foto']['tmp_name']);
    if ($check === false) {
        $message = "Ini bukan file gambar.";
        $statusUpload = 0;
    }

    // Cek apakah file sudah ada di direktori target_dir
    if (file_exists($target_file) && $statusUpload == 1) {
        $message = "Maaf, File dengan nama ini telah ada (meskipun dengan kode unik).";
        $statusUpload = 0;
    }

    // Cek ukuran file
    if ($_FILES['foto']['size'] > 500000 && $statusUpload == 1) { // 500KB
        $message = "File foto yang diupload terlalu besar (maksimal 500KB).";
        $statusUpload = 0;
    }

    // Izinkan format file tertentu
    if (!in_array($imageType, ["jpg", "png", "jpeg", "gif"]) && $statusUpload == 1) {
        $message = "Maaf, hanya diperbolehkan gambar yang memiliki format JPG, JPEG, PNG, dan GIF.";
        $statusUpload = 0;
    }

    // Jika ada masalah upload atau validasi, tampilkan pesan dan redirect
    if ($statusUpload == 0) {
        echo '<script>alert("' . $message . ' Gambar tidak dapat diupload atau input tidak valid.");
              window.location="../menu";</script>';
    } else {
        // Cek apakah nama menu sudah ada di database (sebelum upload gambar)
        $select_menu = mysqli_query($conn, "SELECT * FROM tb_daftar_menu WHERE nama_menu = '$nama_menu'");
        if (mysqli_num_rows($select_menu) > 0) {
            echo '<script>alert("Nama menu yang dimasukkan telah ada.");
                  window.location="../menu";</script>';
        } else {
            // Lanjutkan proses upload dan insert ke database
            if (move_uploaded_file($_FILES['foto']['tmp_name'], $target_file)) {
                // Gunakan prepared statement untuk keamanan
                $stmt = $conn->prepare("INSERT INTO tb_daftar_menu (foto, nama_menu, keterangan, harga, stok) VALUES (?, ?, ?, ?, ?)");
                // "sssis" -> s=string, i=integer, d=double (untuk harga)
                // Menggunakan "s" untuk harga karena kita ambil dari $_POST dan ingin mengikatnya sebagai string,
                // meskipun tipe kolomnya DECIMAL. PHP akan mengonversi secara otomatis.
                // Atau lebih baik, convert ke float/int di PHP terlebih dahulu
                $harga_float = floatval($harga);
                $stok_int = intval($stok);

                $stmt->bind_param("sssdi", $image_name, $nama_menu, $keterangan, $harga_float, $stok_int);

                if ($stmt->execute()) {
                    echo '<script>alert("Data berhasil dimasukkan.");
                          window.location="../menu";</script>';
                } else {
                    // Jika query gagal (misalnya, masalah database)
                    echo '<script>alert("Data gagal dimasukkan: ' . $stmt->error . '");
                          window.location="../menu";</script>';
                }
                $stmt->close(); // Tutup prepared statement

            } else {
                // Jika move_uploaded_file gagal
                echo '<script>alert("Maaf, Terjadi Kesalahan. File Tidak Dapat Diupload ke server.");
                      window.location="../menu";</script>';
            }
        }
    }
} else {
    // Jika tidak ada POST['input_menu_validate'] (misalnya, diakses langsung tanpa submit form)
    echo '<script>alert("Akses tidak valid.");
          window.location="../menu";</script>';
}
?>