<?php namespace App\Module; use Illuminate\Http\RedirectResponse; use Illuminate\Validation\Rule; use Lorisleiva\Actions\ActionRequest; use Lorisleiva\Actions\Concerns\AsAction; class ModuleStoreAction { use AsAction; /** * @param array<string, mixed> $input */ public function handle(array $input): void { $settings = app(ModuleSettings::class); $settings->fill([ 'modules' => $input['modules'], ]); $settings->save(); } /** * @return array<string, mixed> */ public function rules(): array { return [ 'modules' => 'present|array', 'modules.*' => ['string', Rule::in(Module::values())], ]; } public function asController(ActionRequest $request): RedirectResponse { $this->handle($request->validated()); return redirect()->back(); } }