$this->sortedQuery( Position::query(), ['code', 'name', 'scope', 'sort_order'], 'sort_order' )->paginate(20)->withQueryString(), ]); } public function create(): View { return view('admin.setup.positions.create', [ 'position' => new Position, ]); } public function store(UpsertPositionRequest $request): RedirectResponse { Position::query()->create($this->payload($request)); return redirect()->route('admin.setup.positions.index') ->with('status', 'Jawatan telah disimpan.'); } public function edit(Position $position): View { return view('admin.setup.positions.edit', [ 'position' => $position, ]); } public function update(UpsertPositionRequest $request, Position $position): RedirectResponse { $position->update($this->payload($request)); return redirect()->route('admin.setup.positions.index') ->with('status', 'Jawatan telah dikemas kini.'); } public function destroy(Position $position): RedirectResponse { $position->forceDelete(); return redirect()->route('admin.setup.positions.index') ->with('status', 'Jawatan telah dipadam.'); } /** * @return array */ private function payload(UpsertPositionRequest $request): array { return [ ...$request->safe()->except([ 'is_public_applyable', 'is_assignable', 'allows_dual_role', ]), 'is_public_applyable' => $request->boolean('is_public_applyable'), 'is_assignable' => $request->boolean('is_assignable'), 'allows_dual_role' => $request->boolean('allows_dual_role'), ]; } }