public function rules(): array 	{ 		return [ 			'client_id' => ['required', 'uuid', 'exists:' . Client::class . ',id'], 			'survey_id' => ['required', 'uuid', 'exists:' . Survey::class . ',id'], 			'start_date' => ['nullable', 'required_unless:status,' . ClientSurveyStatus::Created->value, 'date'], 			'end_date' => ['nullable', 'required_unless:status,' . ClientSurveyStatus::Created->value, 'date', 'after:start_date'], 			'invitation_date' => ['nullable', 'date', 'after_or_equal:start_date', 'before:end_date', Rule::requiredIf(fn () => !($this->status == ClientSurveyStatus::Created->value) && $this->send_codes_via_email && $this->online_applicants_count)], 			'reminder_date' => ['nullable', 'date', 'after:invitation_date', 'before:end_date'], 			'number_of_employees' => ['required_unless:status,' . ClientSurveyStatus::Created->value, 'integer'], 			'number_of_male_employees' => ['nullable', 'integer', 'min:0', new CheckEmployeeDataIsLessThanTotalEmployeeCount([ 				$this->number_of_male_employees, 				$this->number_of_female_employees, 				$this->number_of_other_employees, 			], $this->number_of_employees, 'gender')], 			'number_of_female_employees' => ['nullable', 'integer', 'min:0', new CheckEmployeeDataIsLessThanTotalEmployeeCount([ 				$this->number_of_male_employees, 				$this->number_of_female_employees, 				$this->number_of_other_employees, 			], $this->number_of_employees, 'gender')], 			'number_of_other_employees' => ['nullable', 'integer', 'min:0', new CheckEmployeeDataIsLessThanTotalEmployeeCount([ 				$this->number_of_male_employees, 				$this->number_of_female_employees, 				$this->number_of_other_employees, 			], $this->number_of_employees, 'gender')], 			'number_of_employees_with_special_qualification' => ['nullable', 'integer', 'min:0', new CheckEmployeeDataIsLessThanTotalEmployeeCount([ 				$this->number_of_employees_with_special_qualification, 				$this->number_of_employees_with_higher_qualification, 				$this->number_of_employees_with_middle_qualification, 				$this->number_of_employees_with_lower_qualification, 			], $this->number_of_employees, 'qualification')], 			'number_of_employees_with_higher_qualification' => ['nullable', 'integer', 'min:0', new CheckEmployeeDataIsLessThanTotalEmployeeCount([ 				$this->number_of_employees_with_special_qualification, 				$this->number_of_employees_with_higher_qualification, 				$this->number_of_employees_with_middle_qualification, 				$this->number_of_employees_with_lower_qualification, 			], $this->number_of_employees, 'qualification')], 			'number_of_employees_with_middle_qualification' => ['nullable', 'integer', 'min:0', new CheckEmployeeDataIsLessThanTotalEmployeeCount([ 				$this->number_of_employees_with_special_qualification, 				$this->number_of_employees_with_higher_qualification, 				$this->number_of_employees_with_middle_qualification, 				$this->number_of_employees_with_lower_qualification, 			], $this->number_of_employees, 'qualification')], 			'number_of_employees_with_lower_qualification' => ['nullable', 'integer', 'min:0', new CheckEmployeeDataIsLessThanTotalEmployeeCount([ 				$this->number_of_employees_with_special_qualification, 				$this->number_of_employees_with_higher_qualification, 				$this->number_of_employees_with_middle_qualification, 				$this->number_of_employees_with_lower_qualification, 			], $this->number_of_employees, 'qualification')], 			'online_applicants_count' => ['required_unless:status,' . ClientSurveyStatus::Created->value, 'nullable', 'integer', 'min:0', 				new CheckApplicantEmployeesCountMatchesSettings([$this->online_applicants_count, $this->offline_applicants_count]), 				new CheckEmployeeDataIsLessThanTotalEmployeeCount([$this->online_applicants_count, $this->offline_applicants_count], $this->number_of_employees, 'applicant'), 			], 			'offline_applicants_count' => ['required_unless:status,' . ClientSurveyStatus::Created->value, 'nullable', 'integer', 'min:0', 				new CheckApplicantEmployeesCountMatchesSettings([$this->online_applicants_count, $this->offline_applicants_count]), 				new CheckEmployeeDataIsLessThanTotalEmployeeCount([$this->online_applicants_count, $this->offline_applicants_count], $this->number_of_employees, 'applicant'), 			], 			'multiple_access_codes' => ['boolean'], 			'include_demographic_questions' => ['boolean'], 			'paid' => ['boolean'], 			'relevant' => ['boolean'], 			'company_size' => ['nullable', 'integer', new Enum(CompanySize::class)], 			'emails' => ['array', Rule::requiredIf(fn () => !($this->status == ClientSurveyStatus::Created->value) && $this->send_codes_via_email), new ValidateEmailsListCount($this->online_applicants_count)], 			'emails.*' => ['required', 'email', 'max:50', 'distinct'], 			'location_answer_required' => ['boolean'], 			'department_answer_required' => ['boolean'],  			'locations' => ['array', 'required_if:location_answer_required,true'], 			'locations.*.title_en' => ['nullable', 'string', 'max:150'], 			'locations.*.title_hr' => ['nullable', 'string', 'max:150'], 			'locations.*.title_bs' => ['nullable', 'string', 'max:150'], 			'locations.*.title_mk' => ['nullable', 'string', 'max:150'], 			'locations.*.title_sl' => ['nullable', 'string', 'max:150'], 			'locations.*.title_sr' => ['nullable', 'string', 'max:150'], 			'locations.*.title_fr' => ['nullable', 'string', 'max:150'], 			'locations.*.title_de' => ['nullable', 'string', 'max:150'], 			'locations_description_en' => ['nullable', 'string', 'max:150'], 			'locations_description_hr' => ['nullable', 'string', 'max:150'], 			'locations_description_bs' => ['nullable', 'string', 'max:150'], 			'locations_description_mk' => ['nullable', 'string', 'max:150'], 			'locations_description_sl' => ['nullable', 'string', 'max:150'], 			'locations_description_sr' => ['nullable', 'string', 'max:150'], 			'locations_description_fr' => ['nullable', 'string', 'max:150'], 			'locations_description_de' => ['nullable', 'string', 'max:150'], 			'departments' => ['array', 'required_if:department_answer_required,true'], 			'departments.*.title_en' => ['nullable', 'string', 'max:150'], 			'departments.*.title_hr' => ['nullable', 'string', 'max:150'], 			'departments.*.title_bs' => ['nullable', 'string', 'max:150'], 			'departments.*.title_mk' => ['nullable', 'string', 'max:150'], 			'departments.*.title_sl' => ['nullable', 'string', 'max:150'], 			'departments.*.title_sr' => ['nullable', 'string', 'max:150'], 			'departments.*.title_fr' => ['nullable', 'string', 'max:150'], 			'departments.*.title_de' => ['nullable', 'string', 'max:150'], 			'departments_description_en' => ['nullable', 'string', 'max:150'], 			'departments_description_hr' => ['nullable', 'string', 'max:150'], 			'departments_description_bs' => ['nullable', 'string', 'max:150'], 			'departments_description_mk' => ['nullable', 'string', 'max:150'], 			'departments_description_sl' => ['nullable', 'string', 'max:150'], 			'departments_description_sr' => ['nullable', 'string', 'max:150'], 			'departments_description_fr' => ['nullable', 'string', 'max:150'], 			'departments_description_de' => ['nullable', 'string', 'max:150'],  			'client_comment' => ['nullable', 'string', 'max:200'], 			'admin_comment' => ['nullable', 'string', 'max:200'], 			'status' => ['nullable', 'integer', Rule::in(array_column(ClientSurveyStatus::izzSurveyStatuses(), 'value'))], 			'display_report' => ['boolean'], 			'switch_basic_and_additional_question_order' => ['boolean'], 			'comparable' => ['boolean'], 			'filter' => ['boolean'], 			'send_codes_via_email' => ['boolean'], 			'demographic_question_ids' => ['array'], 			'demographic_question_ids.*' => ['nullable', 'uuid', 'exists:' . Question::class . ',id'], 			'demographic_question_removal_ids' => ['array'], 			'demographic_question_removal_ids.*' => ['nullable', 'uuid', 'exists:' . Question::class . ',id'], 			'demographic_answers_required' => ['boolean'], 			'demographic_first' => ['boolean', Rule::prohibitedIf(fn () => $this->locations_first || $this->departments_first)], 			'departments_first' => ['boolean', Rule::prohibitedIf(fn () => $this->demographic_first || $this->locations_first)], 			'locations_first' => ['boolean', Rule::prohibitedIf(fn () => $this->departments_first || $this->demographic_first)], 		]; 	}