belongsTo(Employee::class); } public function type(): BelongsTo { return $this->belongsTo(Keyword::class, 'reimbursement_type_id', 'key'); } public function modelFilter(): string { return ReimbursementFilter::class; } public function canUpdate(): bool { return in_array($this->workflow?->check_status, [CheckStatus::None, CheckStatus::Fail, CheckStatus::Cancel]); } public function canDelete(): bool { return in_array($this->workflow?->check_status, [CheckStatus::None, CheckStatus::Fail, CheckStatus::Cancel]); } protected function photos(): Attribute { return Attribute::make( get: function (mixed $value) { if (! is_array($photos = json_decode($value ?? '', true))) { $photos = []; } return $photos; }, set: fn (mixed $value) => json_encode(is_array($value) ? $value : []), ); } }