sprintf('required|in:%s', implode(",", TrackQuestionTemplateConstants::$valid_class_names)) ]; if ($update) { $base_rules = array_merge($base_rules, [ 'name' => 'sometimes|alpha_dash|max:255', 'label' => 'sometimes|string', 'is_mandatory' => 'sometimes|boolean', 'is_read_only' => 'sometimes|boolean', 'tracks' => 'sometimes|int_array', ]); } else { $base_rules = array_merge($base_rules, [ 'name' => 'required|alpha_dash|max:255', 'label' => 'required|string', 'is_mandatory' => 'sometimes|boolean', 'is_read_only' => 'sometimes|boolean', 'tracks' => 'sometimes|int_array', ]); } switch ($data['class_name']) { case TrackTextBoxQuestionTemplate::ClassName: { return array_merge($base_rules, ['initial_value' => 'string|sometimes']); } break; case TrackCheckBoxQuestionTemplate::ClassName: { return array_merge($base_rules, ['initial_value' => 'string|sometimes']); } break; case TrackCheckBoxListQuestionTemplate::ClassName: { return array_merge ( $base_rules, TrackMultiValueQuestionTemplateValidationRulesFactory::build($data, $update) ); } break; case TrackRadioButtonListQuestionTemplate::ClassName: { return array_merge ( $base_rules, TrackMultiValueQuestionTemplateValidationRulesFactory::build($data, $update) ); } break; case TrackDropDownQuestionTemplate::ClassName: { return array_merge ( $base_rules, TrackMultiValueQuestionTemplateValidationRulesFactory::build($data, $update), [ 'is_multiselect' => 'sometimes|boolean', 'is_country_selector' => 'sometimes|boolean', ] ); } break; case TrackLiteralContentQuestionTemplate::ClassName: { return array_merge( $base_rules, TrackLiteralContentQuestionTemplateValidationRulesFactory::build($data, $update) ); } break; default: { throw new ValidationException(sprintf('invalid class_name param (%s)', implode(",", TrackQuestionTemplateConstants::$valid_class_names))); } break; } return []; } }