$this->service->paginated( ...$request->validatedWithDefaults(), filters: $request->only(['status']), ), 'filters' => $request->only(['status']), ]); } public function create(): Response { return Inertia::render('admin/master/product/create', [ 'categories' => $this->categoryService->getAll(), ]); } public function store(ProductRequest $request): RedirectResponse { return $this->handleAction( fn () => $this->service->create($request->validated()), 'Produk berhasil ditambahkan.', 'admin.master.products.index', 'admin.master.products.create' ); } public function edit(Product $product): Response { return Inertia::render('admin/master/product/edit', [ 'product' => $this->service->getForEdit($product), 'categories' => $this->categoryService->getAll(), ]); } public function update(ProductRequest $request, Product $product): RedirectResponse { return $this->handleAction( fn () => $this->service->update($product, $request->validated()), 'Produk berhasil diperbarui.', 'admin.master.products.index', 'admin.master.products.edit', ['product' => $product] ); } public function destroy(Product $product): RedirectResponse { return $this->handleAction( fn () => $this->service->delete($product), 'Produk berhasil dihapus.', 'admin.master.products.index' ); } public function toggleStatus(Product $product): RedirectResponse { $this->service->toggleStatus($product); $status = $product->fresh()->status; Inertia::flash('toast', ['type' => 'success', 'message' => "Status produk berhasil diubah menjadi {$status->label()}."]); return to_route('admin.master.products.index'); } }