<?php namespace App\Form\Actions; use App\Form\Models\Participant; use App\Lib\Events\Succeeded; use Illuminate\Http\JsonResponse; use Lorisleiva\Actions\ActionRequest; use Lorisleiva\Actions\Concerns\AsAction; class ParticipantUpdateAction { use AsAction; /** * @return array<string, mixed> */ public function rules(): array { /** @var Participant */ $participant = request()->route('participant'); return $participant->form->getRegistrationRules(); } /** * @return array<string, mixed> */ public function getValidationAttributes(): array { /** @var Participant */ $participant = request()->route('participant'); return $participant->form->getRegistrationAttributes(); } /** * @return array<string, mixed> */ public function getValidationMessages(): array { /** @var Participant */ $participant = request()->route('participant'); return $participant->form->getRegistrationMessages(); } public function handle(Participant $participant, ActionRequest $request): JsonResponse { $participant->update(['data' => [...$participant->data, ...$request->validated()]]); ExportSyncAction::dispatch($participant->form->id); Succeeded::message('Teilnehmer*in bearbeitet.')->dispatch(); return response()->json([]); } }