'boolean', ]; } public function isOffice(): bool { return $this->type === 'office'; } public function isMarkdown(): bool { return $this->type === 'markdown'; } public function isUpload(): bool { return $this->type === 'upload'; } public function renderedMarkdown(): string { return (new CommonMarkConverter())->convert($this->content ?? '')->getContent(); } public function isFolder(): bool { return $this->is_folder || $this->children()->exists(); } public function organization() { return $this->belongsTo(Organization::class); } public function folder() { return $this->belongsTo(Document::class, 'folder_id'); } public function children() { return $this->hasMany(Document::class, 'folder_id'); } public function versions() { return $this->hasMany(DocumentVersion::class)->orderByDesc('version'); } public function creator() { return $this->belongsTo(User::class, 'created_by'); } public function relatedItems() { return RelatedItem::forItem($this); } public function linkableKind(): string { return 'Document'; } public function linkableLabel(): string { return $this->name; } public function linkableUrl(): string { return route('organizations.documents.edit', [$this->organization_id, $this]); } }