<?php  namespace App\Models;  use App\Enums\SurveyType; use App\Traits\IsClonable; use App\Enums\QuestionType; use Illuminate\Http\Request; use App\Contracts\Reportable; use App\Traits\HasTranslations; use App\Traits\HasUserActivity; use App\Enums\ClientSurveyStatus; use App\Observers\SurveyObserver; use App\Enums\CategoryReportGroup; use Illuminate\Support\Collection; use App\Enums\InternalBaApplicantType; use Illuminate\Database\Eloquent\Builder; use App\Contracts\IsClonable as IsClonableContract; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasManyThrough; use App\Contracts\HasUserActivity as HasUserActivityContract;  class Survey extends Model implements HasUserActivityContract, IsClonableContract, Reportable { 	use HasTranslations, IsClonable, HasUserActivity;  	public array $translatable = ['title', 'description'];  	protected $casts = [ 		'title' => 'array', 		'description' => 'array', 		'relevant' => 'boolean', 	];  	public static function getAddRouteForType(int $survey_type): string 	{ 		switch ($survey_type) { 			case SurveyType::PPI->value: 				$survey_route = 'surveys.add-ppi';  				break;  			case SurveyType::BA->value: 				$survey_route = 'surveys.add-ba';  				break;  			default: 				$survey_route = 'surveys.add';  				break; 		}  		return $survey_route; 	}  	public static function getListRouteForType(int $survey_type): string 	{ 		switch ($survey_type) { 			case SurveyType::PPI->value: 				$survey_route = 'surveys.list-ppi';  				break;  			case SurveyType::BA->value: 				$survey_route = 'surveys.list-ba';  				break;  			default: 				$survey_route = 'surveys.list';  				break; 		}  		return $survey_route; 	}  	protected static function initObservers(): string 	{ 		return SurveyObserver::class; 	}  	public function getClonableRelations(): array{}  	public function beforeCloneIsSaved(object $original): self{}  	public function getUserActivityTitle(): string{}  	public function getUserActivityUrl(): string{}  	public function clientSurvey(): HasMany{}  	public function categories(): HasMany{}  	public function rewards(): HasMany{}  	public function questions(): HasManyThrough{}  	public function cycles(): HasMany{}  	public function scopeIzzSurveys(Builder $query): Builder{}  	public function scopePpiSurveys(Builder $query): Builder{}  	public function scopeBaSurveys(Builder $query): Builder{}  	public function scopeByType(Builder $query, ?SurveyType $survey_type = null): Builder{}  	public function scopeRelevant(Builder $query): Builder{}  	public function getRelevantSurveyForType(SurveyType $type): Survey{}  	public function getRelevantIzzSurvey(): Survey{}  	public function getRelevantPulsSurvey(): Survey{}  	public function getApplicants(): Collection{}  	public function getNumberOfEmployees(): int{}  	public function getTotalNumberOfEmployeesInCompany(): int{}  	public function getCategories(): Collection{}  	public function getExtraQuestionsForPdf(array $collection): Collection{}  	public function hasDepartments(): bool{}  	public function hasLocations(): bool{}  	public function getDemographicQuestions(array $items): Collection{}  	public function getIds(): array{}  	public function getStartDate(): string{}  	public function getEndDate(): string{}  	public function getAvatar(string $locale = 'hr'): string{}  	public function getYear(): int{}  	public function generateDownloadFileName(string $locale): string{}  	public function loadAdditionalDataWithFilters(Request $request): Reportable{}  	public function getViewFile(): string{}  	public function getEngagementCategoryIds(): array{}  	public function getPromotorApplicantsCount(?InternalBaApplicantType $applicantType = null): int{}  	public function getPassiveApplicantsCount(?InternalBaApplicantType $applicantType = null): int{}  	public function getCriticApplicantsCount(?InternalBaApplicantType $applicantType = null): int{}  	public function showReportableComments(): bool{}  	public function isGeneratingReportPossible(): bool{}  	public function getClientName(): string{} }