parseDataTableQuery($request); $tableQuery['search_id'] = $request->string('search_id')->trim()->toString(); return Inertia::render('admin/manage/purchases/Index', [ 'purchases' => $this->purchaseService->paginateForIndex($tableQuery), 'filters' => $this->dataTableFilters($tableQuery, [ 'search_id' => $tableQuery['search_id'], ]), ]); } public function create(Request $request): Response { $user = $request->user(); return Inertia::render('admin/manage/purchases/Create', [ 'suppliers' => $this->purchaseService->supplierOptions(), 'catalog' => $this->purchaseService->catalogItems(user: $user), 'draftItems' => $this->purchaseService->draftItemsForUser($user), ]); } public function store(PurchaseRequest $request): RedirectResponse { $this->purchaseService->create($request->validated(), $request->user()); if ($request->user()->can(Permission::OWNER_VERIFICATIONS_VERIFY->value)) { $this->flashCreated('Belanja'); } else { $this->flashSuccess('Belanja berhasil diajukan dan menunggu verifikasi owner.'); } return redirect()->route('admin.manage.purchases.index'); } public function edit(Purchase $purchase): Response { return Inertia::render('admin/manage/purchases/Edit', [ 'purchase' => $this->purchaseService->findForEdit($purchase), 'suppliers' => $this->purchaseService->supplierOptions(), 'catalog' => $this->purchaseService->catalogItems($purchase), ]); } public function update(PurchaseRequest $request, Purchase $purchase): RedirectResponse { $this->purchaseService->update($purchase, $request->validated(), $request->user()); if ($request->user()->can(Permission::OWNER_VERIFICATIONS_VERIFY->value)) { $this->flashUpdated('Belanja'); } else { $this->flashSuccess('Perubahan belanja berhasil diajukan dan menunggu verifikasi owner.'); } return redirect()->route('admin.manage.purchases.index'); } public function destroy(Request $request, Purchase $purchase): RedirectResponse { $this->purchaseService->delete($purchase, $request->user()); if ($request->user()->can(Permission::OWNER_VERIFICATIONS_VERIFY->value)) { $this->flashDeleted('Belanja'); } else { $this->flashSuccess('Penghapusan belanja berhasil diajukan dan menunggu verifikasi owner.'); } return redirect()->route('admin.manage.purchases.index'); } }