<?php  namespace App\Models;  use App\Enums\SurveyType; use App\Traits\HasStorage; use App\Traits\IsClonable; use App\Contracts\HasMedia; use App\Traits\HasTranslations; use App\Traits\HasUserActivity; use App\Enums\CategoryReportGroup; use App\Observers\CategoryObserver; use App\Contracts\HasDragAndDropReorder; use Illuminate\Database\Eloquent\Builder; use App\Contracts\IsClonable as IsClonableContract; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasManyThrough; use App\Contracts\HasUserActivity as HasUserActivityContract;  /**  * @property float|int $average_px  * @property float|int $category_average  */ class Category extends Model implements HasDragAndDropReorder, HasMedia, HasUserActivityContract, IsClonableContract { 	use HasTranslations, HasStorage, IsClonable, HasUserActivity;  	public array $translatable = ['name', 'description'];  	protected $casts = [ 		'active' => 'boolean', 		'name' => 'array', 		'description' => 'array', 		'category_report_group' => CategoryReportGroup::class, 	];  	public static function getAddRouteForType(?SurveyType $survey_type): string 	{ 		switch ($survey_type) { 			case SurveyType::PPI: 				$survey_route = 'categories.add-ppi';  				break;  			case SurveyType::BA: 				$survey_route = 'categories.add-ba';  				break;  			default: 				$survey_route = 'categories.add';  				break; 		}  		return $survey_route; 	}  	public static function getListRouteForType(?SurveyType $survey_type): string 	{ 		switch ($survey_type) { 			case SurveyType::PPI: 				$survey_route = 'categories.list-ppi';  				break;  			case SurveyType::BA: 				$survey_route = 'categories.list-ba';  				break;  			default: 				$survey_route = 'categories.list';  				break; 		}  		return $survey_route; 	}  	public static function getOrderFieldName(): string 	{ 		return 'ordering'; 	}  	protected static function initObservers(): string 	{ 		return CategoryObserver::class; 	}  	public function getClonableRelations(): array{}  	public function beforeCloneIsSaved(object $original): self{}  	public function getCloneParentForeignKey(): string{}  	public function getUserActivityTitle(): string{}  	public function getUserActivityUrl(): string{}  	public function getDefaultMediaPrefix(): string{}  	public function mediaConfig(): array{}  	public function scopeAvailable(Builder $query): Builder{}  	public function scopeIzz(Builder $query): Builder{}  	public function scopePpi(Builder $query): Builder{}  	public function scopeBa(Builder $query): Builder{}  	public function scopeBySurveyType(Builder $query, ?SurveyType $survey_type = null): Builder{}  	public function scopeEmployeeEngagementGroup(Builder $query): Builder{}  	public function scopeFilterBySurvey(Builder $query, ?string $survey_id = null): Builder{}  	public function survey(): BelongsTo{}  	public function questions(): HasMany{}  	public function answers(): HasManyThrough{}  	protected function getIncludes(): array{} }