query('limit', null); $query = Transaksi::with(['kasir', 'sales', 'items.item.produk'])->latest(); if ($limit) { $query->limit((int)$limit); } $transaksi = $query->get(); $transaksi = Transaksi::with(['kasir', 'sales', 'items.item.produk'])->latest()->limit(100)->get(); return response()->json($transaksi); } // Detail transaksi by ID public function show($id) { $transaksi = Transaksi::with(['kasir', 'sales', 'items.item.produk.foto'])->findOrFail($id); return response()->json($transaksi); } // Membuat transaksi baru public function store(Request $request) { $request->validate([ 'id_kasir' => 'required|exists:akun,id', 'id_sales' => 'nullable|exists:sales,id', 'nama_sales' => 'nullable|string', 'no_hp' => 'nullable|string', 'alamat' => 'nullable|string', 'ongkos_bikin' => 'nullable|numeric', 'total_harga' => 'required|numeric', 'items' => 'required|array', 'items.*.id_item' => 'required|exists:item,id', 'items.*.harga_deal' => 'required|numeric', ]); DB::beginTransaction(); try { $transaksi = Transaksi::create([ 'id_kasir' => $request->id_kasir, 'id_sales' => $request->id_sales, 'nama_sales' => $request->nama_sales, 'no_hp' => $request->no_hp, 'alamat' => $request->alamat, 'ongkos_bikin' => $request->ongkos_bikin, 'total_harga' => $request->total_harga, ]); foreach ($request->items as $it) { ItemTransaksi::create([ 'id_transaksi' => $transaksi->id, 'id_item' => $it['id_item'], 'harga_deal' => $it['harga_deal'], ]); Item::where('id', $it['id_item'])->update(['is_sold' => true]); } DB::commit(); return response()->json($transaksi->load('items'), 201); } catch (\Exception $e) { DB::rollBack(); return response()->json(['error' => $e->getMessage()], 500); } } // Update transaksi public function update(Request $request, $id) { $transaksi = Transaksi::findOrFail($id); $transaksi->update($request->only([ 'id_sales', 'nama_sales', 'no_hp', 'alamat', 'ongkos_bikin', 'total_harga' ])); return response()->json($transaksi); } // Hapus transaksi public function destroy($id) { $transaksi = Transaksi::findOrFail($id); $transaksi->delete(); return response()->json(['message' => 'Transaksi berhasil dihapus']); } }