public function rules(): array 	{ 		$current_domain = auth()->user()->user->getActiveDomain(); 		$validation_rule_builder = [];  		foreach (DomainLanguages::cases() as $language) { 			$lang = $language->value;  			if (is_null($this->title_en) && count($this->available_answers_en) === 0) { 				$validation_rule_builder['title_' . $current_domain->main_language] = ['required', 'string', 'max:250']; 			} else { 				$validation_rule_builder['title_' . $lang] = ['nullable', 'string', 'max:250']; 			}  			$validation_rule_builder['description_' . $lang] = ['nullable', 'string', 'max:250']; 		}  		return array_merge($validation_rule_builder, [ 			'code' => ['nullable', 'string', 'max:250'], 			'class' => ['required', 'integer', new Enum(QuestionClass::class)], 			'category_id' => ['nullable', 'required_if:class,' . QuestionClass::PpiBasic->value . ',' . QuestionClass::PpiPrize->value, 'prohibited_if:class,' . QuestionClass::categoryIdProhibitedCases(), 'uuid', 'exists:categories,id'], 			'client_survey_id' => ['nullable', 'required_if:class,' . QuestionClass::Additional->value, 'prohibited_if:class,' . QuestionClass::clientSurveyIdProhibitedCases(), 'uuid', 'exists:client_surveys,id'], 			'available_answers_en' => ['sometimes', 'prohibited_unless:type,' . QuestionType::CustomRadio->value . ',' . QuestionType::Checkbox->value . ',' . QuestionType::CheckboxLimitedAnswers->value . ',' . QuestionType::CheckboxWithCustomAnswer->value . ',' . QuestionType::CheckboxWithAnswerPositivity->value, 'array', Rule::requiredIf(function () { 				return $this->title_en && (((int) $this->type === QuestionType::CustomRadio->value) || ((int) $this->type === QuestionType::Checkbox->value) || ((int) $this->type === QuestionType::CheckboxLimitedAnswers->value) || ((int) $this->type === QuestionType::CheckboxWithCustomAnswer->value) || ((int) $this->type === QuestionType::CheckboxWithAnswerPositivity->value)); 			})], 			'available_answers_en.*' => ['nullable', 'string', 'max:250', new MatchFieldCountPPI([count($this->available_answers_hr ?? [])], count($this->available_answers_en ?? []), $this->title_en)], 			'available_answers_hr' => ['sometimes', 'prohibited_unless:type,' . QuestionType::CustomRadio->value . ',' . QuestionType::Checkbox->value . ',' . QuestionType::CheckboxLimitedAnswers->value . ',' . QuestionType::CheckboxWithCustomAnswer->value . ',' . QuestionType::CheckboxWithAnswerPositivity->value, 'array', Rule::requiredIf(function () { 				return $this->title_hr && (((int) $this->type === QuestionType::CustomRadio->value) || ((int) $this->type === QuestionType::Checkbox->value) || ((int) $this->type === QuestionType::CheckboxLimitedAnswers->value) || ((int) $this->type === QuestionType::CheckboxWithCustomAnswer->value) || ((int) $this->type === QuestionType::CheckboxWithAnswerPositivity->value)); 			})], 			'available_answers_hr.*' => ['nullable', 'string', 'max:250', new MatchFieldCountPPI([count($this->available_answers_hr ?? [])], count($this->available_answers_en ?? []), $this->title_en)], 			'available_answers_bs' => ['sometimes', 'prohibited_unless:type,' . QuestionType::CustomRadio->value . ',' . QuestionType::Checkbox->value . ',' . QuestionType::CheckboxLimitedAnswers->value . ',' . QuestionType::CheckboxWithCustomAnswer->value . ',' . QuestionType::CheckboxWithAnswerPositivity->value, 'array', Rule::requiredIf(function () { 				return $this->title_bs && (((int) $this->type === QuestionType::CustomRadio->value) || ((int) $this->type === QuestionType::Checkbox->value) || ((int) $this->type === QuestionType::CheckboxLimitedAnswers->value) || ((int) $this->type === QuestionType::CheckboxWithCustomAnswer->value) || ((int) $this->type === QuestionType::CheckboxWithAnswerPositivity->value)); 			})], 			'available_answers_bs.*' => ['nullable', 'string', 'max:250', new MatchFieldCountPPI([count($this->available_answers_bs ?? [])], count($this->available_answers_en ?? []), $this->title_en)], 			'available_answers_mk' => ['sometimes', 'prohibited_unless:type,' . QuestionType::CustomRadio->value . ',' . QuestionType::Checkbox->value . ',' . QuestionType::CheckboxLimitedAnswers->value . ',' . QuestionType::CheckboxWithCustomAnswer->value . ',' . QuestionType::CheckboxWithAnswerPositivity->value, 'array', Rule::requiredIf(function () { 				return $this->title_mk && (((int) $this->type === QuestionType::CustomRadio->value) || ((int) $this->type === QuestionType::Checkbox->value) || ((int) $this->type === QuestionType::CheckboxLimitedAnswers->value) || ((int) $this->type === QuestionType::CheckboxWithCustomAnswer->value) || ((int) $this->type === QuestionType::CheckboxWithAnswerPositivity->value)); 			})], 			'available_answers_mk.*' => ['nullable', 'string', 'max:250', new MatchFieldCountPPI([count($this->available_answers_mk ?? [])], count($this->available_answers_en ?? []), $this->title_en)], 			'available_answers_sl' => ['sometimes', 'prohibited_unless:type,' . QuestionType::CustomRadio->value . ',' . QuestionType::Checkbox->value . ',' . QuestionType::CheckboxLimitedAnswers->value . ',' . QuestionType::CheckboxWithCustomAnswer->value . ',' . QuestionType::CheckboxWithAnswerPositivity->value, 'array', Rule::requiredIf(function () { 				return $this->title_sl && (((int) $this->type === QuestionType::CustomRadio->value) || ((int) $this->type === QuestionType::Checkbox->value) || ((int) $this->type === QuestionType::CheckboxLimitedAnswers->value) || ((int) $this->type === QuestionType::CheckboxWithCustomAnswer->value) || ((int) $this->type === QuestionType::CheckboxWithAnswerPositivity->value)); 			})], 			'available_answers_sl.*' => ['nullable', 'string', 'max:250', new MatchFieldCountPPI([count($this->available_answers_sl ?? [])], count($this->available_answers_en ?? []), $this->title_en)], 			'available_answers_sr' => ['sometimes', 'prohibited_unless:type,' . QuestionType::CustomRadio->value . ',' . QuestionType::Checkbox->value . ',' . QuestionType::CheckboxLimitedAnswers->value . ',' . QuestionType::CheckboxWithCustomAnswer->value . ',' . QuestionType::CheckboxWithAnswerPositivity->value, 'array', Rule::requiredIf(function () { 				return $this->title_sr && (((int) $this->type === QuestionType::CustomRadio->value) || ((int) $this->type === QuestionType::Checkbox->value) || ((int) $this->type === QuestionType::CheckboxLimitedAnswers->value) || ((int) $this->type === QuestionType::CheckboxWithCustomAnswer->value) || ((int) $this->type === QuestionType::CheckboxWithAnswerPositivity->value)); 			})], 			'available_answers_sr.*' => ['nullable', 'string', 'max:250', new MatchFieldCountPPI([count($this->available_answers_sr ?? [])], count($this->available_answers_en ?? []), $this->title_en)], 			'available_answers_fr' => ['sometimes', 'prohibited_unless:type,' . QuestionType::CustomRadio->value . ',' . QuestionType::Checkbox->value . ',' . QuestionType::CheckboxLimitedAnswers->value . ',' . QuestionType::CheckboxWithCustomAnswer->value . ',' . QuestionType::CheckboxWithAnswerPositivity->value, 'array', Rule::requiredIf(function () { 				return $this->title_fr && (((int) $this->type === QuestionType::CustomRadio->value) || ((int) $this->type === QuestionType::Checkbox->value) || ((int) $this->type === QuestionType::CheckboxLimitedAnswers->value) || ((int) $this->type === QuestionType::CheckboxWithCustomAnswer->value) || ((int) $this->type === QuestionType::CheckboxWithAnswerPositivity->value)); 			})], 			'available_answers_fr.*' => ['nullable', 'string', 'max:250', new MatchFieldCountPPI([count($this->available_answers_fr ?? [])], count($this->available_answers_en ?? []), $this->title_en)], 			'available_answers_de' => ['sometimes', 'prohibited_unless:type,' . QuestionType::CustomRadio->value . ',' . QuestionType::Checkbox->value . ',' . QuestionType::CheckboxLimitedAnswers->value . ',' . QuestionType::CheckboxWithCustomAnswer->value . ',' . QuestionType::CheckboxWithAnswerPositivity->value, 'array', Rule::requiredIf(function () { 				return $this->title_de && (((int) $this->type === QuestionType::CustomRadio->value) || ((int) $this->type === QuestionType::Checkbox->value) || ((int) $this->type === QuestionType::CheckboxLimitedAnswers->value) || ((int) $this->type === QuestionType::CheckboxWithCustomAnswer->value) || ((int) $this->type === QuestionType::CheckboxWithAnswerPositivity->value)); 			})], 			'available_answers_de.*' => ['nullable', 'string', 'max:250', new MatchFieldCountPPI([count($this->available_answers_de ?? [])], count($this->available_answers_en ?? []), $this->title_en)], 			'checkbox_max_answers_limit' => ['nullable', 'integer', 'required_if:type,' . QuestionType::CheckboxLimitedAnswers->value], 			'ordering' => ['nullable', 'integer', 'min:0', 'max:65535'], 			'required' => ['boolean'], 			'type' => ['required', 'numeric', new Enum(QuestionType::class)], 			'question_group_id' => ['nullable', 'uuid', 'exists:' . QuestionGroup::class . ',id'], 		]); 	}