From a1cb3e3f21766c891371e8e54c0b64dc168aa26e Mon Sep 17 00:00:00 2001 From: Baghaztra Date: Tue, 14 Oct 2025 11:35:36 +0700 Subject: [PATCH] [Update] Validasi update/create nampan --- app/Http/Controllers/NampanController.php | 9 +++++---- .../2025_08_25_071441_create_nampans_table.php | 2 +- resources/js/pages/Produk.vue | 1 - resources/js/pages/Tray.vue | 13 +++++++++---- 4 files changed, 15 insertions(+), 10 deletions(-) diff --git a/app/Http/Controllers/NampanController.php b/app/Http/Controllers/NampanController.php index 91f7ffd..8e98de8 100644 --- a/app/Http/Controllers/NampanController.php +++ b/app/Http/Controllers/NampanController.php @@ -27,14 +27,13 @@ class NampanController extends Controller 'nama' => 'required|string|max:10|unique:nampans,nama', ], [ - 'nama.required' => 'Nama nampan harus diisi.', + 'nama.max' => 'Nama nampan maksimal 10 karakter.', 'nama.unique' => 'Nampan dengan nama yang sama sudah ada.', - 'nama.max' => 'Nama nampan maksimal 10 karakter.' + 'nama.required' => 'Nama nampan harus diisi.' ]); Nampan::create($validated); - return response()->json([ 'message' => 'Nampan berhasil dibuat' ],201); @@ -59,7 +58,9 @@ class NampanController extends Controller 'nama' => 'required|string|max:10|unique:nampans,nama,'.$id, ], [ - 'nama' => 'Nama nampan harus diisi.' + 'nama.max' => 'Nama nampan maksimal 10 karakter.', + 'nama.unique' => 'Nampan dengan nama yang sama sudah ada.', + 'nama.required' => 'Nama nampan harus diisi.' ]); $nampan = Nampan::findOrFail($id); diff --git a/database/migrations/2025_08_25_071441_create_nampans_table.php b/database/migrations/2025_08_25_071441_create_nampans_table.php index 812d225..754bd0b 100644 --- a/database/migrations/2025_08_25_071441_create_nampans_table.php +++ b/database/migrations/2025_08_25_071441_create_nampans_table.php @@ -13,7 +13,7 @@ return new class extends Migration { Schema::create('nampans', function (Blueprint $table) { $table->id(); - $table->string('nama', 100)->unique(); + $table->string('nama', 10)->unique(); $table->timestamps(); }); } diff --git a/resources/js/pages/Produk.vue b/resources/js/pages/Produk.vue index 943ac37..5a4670d 100644 --- a/resources/js/pages/Produk.vue +++ b/resources/js/pages/Produk.vue @@ -307,7 +307,6 @@ function handleItemAdded() { if (detail.value) { detail.value.items_count++; } - creatingItem.value = false; } // Hapus produk diff --git a/resources/js/pages/Tray.vue b/resources/js/pages/Tray.vue index 35a2f84..f278275 100644 --- a/resources/js/pages/Tray.vue +++ b/resources/js/pages/Tray.vue @@ -99,7 +99,10 @@ const saveTray = async () => { } try { const token = localStorage.getItem("token"); - const headers = { Authorization: `Bearer ${token}` }; + const headers = { + Accept: 'application/json', + Authorization: `Bearer ${token}` + }; if (editingTrayId.value) { await axios.put(`/api/nampan/${editingTrayId.value}`, { nama: trayName.value }, { headers }); alert.value = { success: "Nampan berhasil diperbarui" }; @@ -110,11 +113,13 @@ const saveTray = async () => { timer.value = setTimeout(() => { alert.value = null; }, 5000); closeModal(); if (trayList.value) { - await trayList.value.refreshData(); // Call refreshData on TrayList + await trayList.value.refreshData(); } } catch (error) { - console.error(error); - errorCreate.value = error.response?.data?.message || "Gagal menyimpan nampan."; + const errors = error.response?.data?.errors?.nama || []; + console.log(errors); + errorCreate.value = errors[0] || 'Gagal menyimpan nampan.'; + clearTimeout(timer.value); timer.value = setTimeout(() => { errorCreate.value = ""; }, 3000); }