diff --git a/app/Http/Controllers/FotoSementaraController.php b/app/Http/Controllers/FotoSementaraController.php index 339ad6d..b04b8c3 100644 --- a/app/Http/Controllers/FotoSementaraController.php +++ b/app/Http/Controllers/FotoSementaraController.php @@ -10,8 +10,12 @@ class FotoSementaraController extends Controller { public function upload(Request $request) { + $user = $request->user(); + if (!$user) { + return response()->json(['message' => 'Unauthorized'], 401); + } + $request->validate([ - 'id_user' => 'required|exists:users,id', 'foto' => 'required|image|mimes:jpg,jpeg,png|max:2048', ]); @@ -19,15 +23,20 @@ class FotoSementaraController extends Controller $url = asset('storage/' . $path); $foto = FotoSementara::create([ - 'id_user' => $request->id_user, + 'id_user' => $user->id, 'url' => $url, ]); return response()->json($foto, 201); } - public function hapus($id) + public function hapus(Request $request, int $id) { + $user = $request->user(); + if (!$user) { + return response()->json(['message' => 'Unauthorized'], 401); + } + $foto = FotoSementara::findOrFail($id); // Extract the relative path from the URL @@ -42,18 +51,25 @@ class FotoSementaraController extends Controller return response()->json(['message' => 'Foto berhasil dihapus']); } - public function getAll($user_id) + public function getAll(Request $request) { - $data = FotoSementara::where('id_user', $user_id); - if (!$data->exists()) { - return response()->json(['message' => 'Tidak ada foto ditemukan'], 404); + $user = $request->user(); + if (!$user) { + return response()->json(['message' => 'Unauthorized'], 401); } + + $data = FotoSementara::where('id_user', $user->id)->get(); return response()->json($data); } - public function reset($user_id) + public function reset(Request $request) { - FotoSementara::where('id_user', $user_id)->delete(); + $user = $request->user(); + if (!$user) { + return response()->json(['message' => 'Unauthorized'], 401); + } + + FotoSementara::where('id_user', $user->id)->delete(); return response()->json(['message' => 'Foto sementara berhasil direset']); } } diff --git a/app/Http/Controllers/ItemController.php b/app/Http/Controllers/ItemController.php index 1ec7f7c..44d431e 100644 --- a/app/Http/Controllers/ItemController.php +++ b/app/Http/Controllers/ItemController.php @@ -31,6 +31,8 @@ class ItemController extends Controller $item = Item::create($validated); + $item->load('nampan'); + return response()->json([ 'message' => 'Item berhasil dibuat', 'data' => $item diff --git a/app/Http/Controllers/ProdukController.php b/app/Http/Controllers/ProdukController.php index 7100b10..681189a 100644 --- a/app/Http/Controllers/ProdukController.php +++ b/app/Http/Controllers/ProdukController.php @@ -26,63 +26,56 @@ class ProdukController extends Controller */ public function store(Request $request) { - $validated = $request->validate([ - 'nama' => 'required|string|max:100', - 'id_kategori' => 'required|exists:kategoris,id', - 'berat' => 'required|numeric', - 'kadar' => 'required|integer', - 'harga_per_gram' => 'required|numeric', - 'harga_jual' => 'required|numeric', - 'id_user' => 'nullable|exists:users,id', - ], - [ - 'nama.required' => 'Nama produk harus diisi.', - 'id_kategori' => 'Kategori tidak valid.', - 'berat.required' => 'Berat harus diisi.', - 'kadar.required' => 'Kadar harus diisi', - 'harga_per_gram.required' => 'Harga per gram harus diisi', - 'harga_jual.required' => 'Harga jual harus diisi' - ]); + $user = $request->user(); + if (!$user) { + return response()->json(['message' => 'Unauthorized'], 401); + } + + $validated = $request->validate( + [ + 'nama' => 'required|string|max:100', + 'id_kategori' => 'required|exists:kategoris,id', + 'berat' => 'required|numeric', + 'kadar' => 'required|integer', + 'harga_per_gram' => 'required|numeric', + 'harga_jual' => 'required|numeric', + ], + [ + 'nama.required' => 'Nama produk harus diisi.', + 'id_kategori' => 'Kategori tidak valid.', + 'berat.required' => 'Berat harus diisi.', + 'kadar.required' => 'Kadar harus diisi.', + 'harga_per_gram.required' => 'Harga per gram harus diisi.', + 'harga_jual.required' => 'Harga jual harus diisi.' + ] + ); DB::beginTransaction(); try { - // Create produk - $produk = Produk::create([ - 'nama' => $validated['nama'], - 'id_kategori' => $validated['id_kategori'], - 'berat' => $validated['berat'], - 'kadar' => $validated['kadar'], - 'harga_per_gram' => $validated['harga_per_gram'], - 'harga_jual' => $validated['harga_jual'], - ]); + $produk = Produk::create($validated); - // Pindahkan foto sementara ke foto permanen jika ada - if (isset($validated['id_user'])) { - $fotoSementara = FotoSementara::where('id_user', $validated['id_user'])->get(); + $fotoSementara = FotoSementara::where('id_user', $user->id)->get(); - foreach ($fotoSementara as $fs) { - Foto::create([ - 'id_produk' => $produk->id, - 'url' => $fs->url - ]); + foreach ($fotoSementara as $fs) { + Foto::create([ + 'id_produk' => $produk->id, + 'url' => $fs->url + ]); - // Hapus foto sementara setelah dipindah - $fs->delete(); - } + $fs->delete(); } DB::commit(); return response()->json([ 'message' => 'Produk berhasil dibuat', - 'data' => $produk->load('foto') + 'data' => $produk->load('foto') ], 201); - } catch (\Exception $e) { DB::rollback(); return response()->json([ 'message' => 'Gagal membuat produk', - 'error' => $e->getMessage() + 'error' => $e->getMessage() ], 500); } } @@ -96,29 +89,55 @@ class ProdukController extends Controller return response()->json($produk); } + /** + * Get the specified resource to edit. + */ + public function edit(Request $request, int $id) + { + $user = $request->user(); + if (!$user) { + return response()->json(['message' => 'Unauthorized'], 401); + } + + $produk = Produk::with('foto', 'kategori')->findOrFail($id); + $foto_sementara = []; + foreach ($produk->foto as $foto) { + $foto_sementara[] = FotoSementara::create([ + 'id_user' => $user->id, + 'url' => $foto->url + ]); + } + return response()->json($produk); + } + /** * Update the specified resource in storage. */ public function update(Request $request, int $id) { - $validated = $request->validate([ - 'nama' => 'required|string|max:100', - 'id_kategori' => 'required|exists:kategoris,id', - 'berat' => 'required|numeric', - 'kadar' => 'required|integer', - 'harga_per_gram' => 'required|numeric', - 'harga_jual' => 'required|numeric', - 'id_user' => 'nullable|exists:users,id', // untuk mengambil foto sementara baru - 'hapus_foto_lama' => 'nullable|boolean', // flag untuk menghapus foto lama - ], - [ - 'nama.required' => 'Nama produk harus diisi.', - 'id_kategori' => 'Kategori tidak valid.', - 'berat.required' => 'Berat harus diisi.', - 'kadar.required' => 'Kadar harus diisi', - 'harga_per_gram.required' => 'Harga per gram harus diisi', - 'harga_jual.required' => 'Harga jual harus diisi' - ]); + $user = $request->user(); + if (!$user) { + return response()->json(['message' => 'Unauthorized'], 401); + } + + $validated = $request->validate( + [ + 'nama' => 'required|string|max:100', + 'id_kategori' => 'required|exists:kategoris,id', + 'berat' => 'required|numeric', + 'kadar' => 'required|integer', + 'harga_per_gram' => 'required|numeric', + 'harga_jual' => 'required|numeric', + ], + [ + 'nama.required' => 'Nama produk harus diisi.', + 'id_kategori' => 'Kategori tidak valid.', + 'berat.required' => 'Berat harus diisi.', + 'kadar.required' => 'Kadar harus diisi', + 'harga_per_gram.required' => 'Harga per gram harus diisi', + 'harga_jual.required' => 'Harga jual harus diisi', + ] + ); DB::beginTransaction(); try { @@ -134,31 +153,29 @@ class ProdukController extends Controller 'harga_jual' => $validated['harga_jual'], ]); - // Hapus foto lama jika diminta - if (isset($validated['hapus_foto_lama']) && $validated['hapus_foto_lama']) { - foreach ($produk->foto as $foto) { - // Hapus file fisik + // Hapus foto lama + foreach ($produk->foto as $foto) { + // Hapus file fisik jika memungkinkan + try { $relativePath = str_replace(asset('storage') . '/', '', $foto->url); if (Storage::disk('public')->exists($relativePath)) { Storage::disk('public')->delete($relativePath); } - $foto->delete(); + } catch (\Exception $e) { + // Maklum Pak, soalnya kadang url aja, ga ada file fisiknya #Bagas } + $foto->delete(); } - // Tambahkan foto baru dari foto sementara jika ada - if (isset($validated['id_user'])) { - $fotoSementara = FotoSementara::where('id_user', $validated['id_user'])->get(); + $fotoSementara = FotoSementara::where('id_user', $user->id)->get(); - foreach ($fotoSementara as $fs) { - Foto::create([ - 'id_produk' => $produk->id, - 'url' => $fs->url - ]); + foreach ($fotoSementara as $fs) { + Foto::create([ + 'id_produk' => $produk->id, + 'url' => $fs->url + ]); - // Hapus foto sementara setelah dipindah - $fs->delete(); - } + $fs->delete(); } DB::commit(); @@ -167,7 +184,6 @@ class ProdukController extends Controller 'message' => 'Produk berhasil diubah', 'data' => $produk->load('foto') ], 200); - } catch (\Exception $e) { DB::rollback(); return response()->json([ @@ -203,7 +219,6 @@ class ProdukController extends Controller return response()->json([ 'message' => 'Produk berhasil dihapus.' ], 200); - } catch (\Exception $e) { DB::rollback(); return response()->json([ diff --git a/resources/js/components/BrankasList.vue b/resources/js/components/BrankasList.vue index fa165f0..9c3fd4a 100644 --- a/resources/js/components/BrankasList.vue +++ b/resources/js/components/BrankasList.vue @@ -1,4 +1,3 @@ -// brankas list