diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index 399e5e0..3e336d4 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -52,8 +52,8 @@ class ItemController extends Controller public function update(Request $request, int $id) { $validated = $request->validate([ - 'id_produk' => 'required|in:produks.id', - 'id_nampan' => 'nullable|in:nampans.id' + 'id_produk' => 'required|exists:produks,id', + 'id_nampan' => 'nullable|exists:nampans,id' ],[ 'id_produk' => 'Id produk tidak valid.', 'id_nampan' => 'Id nampan tidak valid' diff --git a/resources/js/components/TrayList.vue b/resources/js/components/TrayList.vue index 9453e41..de19062 100644 --- a/resources/js/components/TrayList.vue +++ b/resources/js/components/TrayList.vue @@ -34,10 +34,12 @@
+ v-for="item in tray.items" + :key="item.id" + class="flex justify-between items-center border rounded-lg p-2" + @click="openMovePopup(item)" +> +
{{ item.produk.berat }}g -
@@ -168,16 +164,20 @@ const closePopup = () => { const saveMove = async () => { if (!selectedTrayId.value || !selectedItem.value) return; try { - await axios.put(`/api/item/${selectedItem.value.id}`, { nampan_id: selectedTrayId.value }); + await axios.put(`/api/item/${selectedItem.value.id}`, { + id_nampan: selectedTrayId.value, + id_produk: selectedItem.value.id_produk, // ikutkan id_produk karena API minta + }); await refreshData(); closePopup(); } catch (err) { - console.error("Gagal memindahkan item:", err); + console.error("Gagal memindahkan item:", err.response?.data || err); alert("Gagal memindahkan item. Silakan coba lagi."); } }; + // --- Ambil data nampan + item --- const refreshData = async () => { try {