isVisibleTo($request->user()), 403); $data = $request->validate([ 'to_location_id' => ['nullable', 'uuid', 'exists:asset_locations,id'], 'to_department_id' => ['nullable', 'uuid', 'exists:departments,id'], 'to_asset_user_id' => ['nullable', 'uuid', 'exists:asset_users,id'], 'notes' => ['nullable', 'string'], 'performed_at' => ['nullable', 'date'], ]); $this->assets->move($asset, $data); return back()->with('success', 'Movement aset berhasil dicatat.'); } public function storeDisposal(Request $request, Asset $asset): RedirectResponse { abort_unless($asset->isVisibleTo($request->user()), 403); $data = $request->validate([ 'reason' => ['required', 'string', 'max:255'], 'notes' => ['nullable', 'string'], 'disposed_at' => ['nullable', 'date'], ]); $this->assets->dispose($asset, $data); return back()->with('success', 'Disposal aset berhasil dicatat.'); } public function reverseDisposal(Request $request, AssetDisposal $disposal): RedirectResponse { abort_unless(optional($disposal->asset)->isVisibleTo($request->user()), 403); $data = $request->validate([ 'notes' => ['nullable', 'string'], ]); $this->assets->reverseDisposal($disposal, $data['notes'] ?? null); return back()->with('success', 'Reverse disposal berhasil.'); } }