id; $options = $question->questionOptions->pluck('option_text', 'id'); $field = match ($question->question_type->value) { QuestionType::TEXT->value => TextInput::make($fieldName), QuestionType::TEXTAREA->value => Textarea::make($fieldName), QuestionType::SELECT->value => Select::make($fieldName)->options($options), QuestionType::MULTISELECT->value => Select::make($fieldName)->multiple()->options($options), QuestionType::RADIO->value => Radio::make($fieldName)->options($options), }; if ($question->validation_rule) { $field = $field->rules($question->rule_text); } return $field ->columnSpanFull() ->label($question->question_text) ->required(); } /** * @return array */ public static function getFieldsByJob(int|string|null $jobId): array { $job = Job::find($jobId); if (! $job) { return []; } return self::getFields($job->client_speciality_id); } /** * @return array */ public static function getFields(mixed $clientSpecialityId = null): array { if (! $clientSpecialityId) { return []; } $questions = self::getQuestions($clientSpecialityId); $fields = []; foreach ($questions as $question) { $fields[] = self::getField($question); $fields = self::addNextQuestions($fields, $question); } return $fields; }