DocumentStatusEnum::class, 'priority' => DocumentPriorityEnum::class, 'submitted_at' => 'datetime', 'scan_date' => 'datetime', 'processing_deadline' => 'datetime', 'finalized_at' => 'datetime', 'finalized_by' => 'integer', 'pet_id' => 'integer', 'requester_id' => 'integer', ]; public function pet() { return $this->belongsTo(Pet::class); } public function requester() { return $this->belongsTo(User::class, 'requester_id'); } public function finalizedBy() { return $this->belongsTo(User::class); } public function assignments() { return $this->hasMany(DocumentAssignment::class); } public function reports() { return $this->hasMany(Report::class); } public function media() { return $this->morphToMany( \App\Models\Medium::class, 'mediable', 'media_assignments', 'mediable_id', 'media_id' )->withPivot('collection'); } public function primaryFiles() { return $this->media()->wherePivot('collection', 'primary'); } public function historyFiles() { return $this->media()->wherePivot('collection', 'history'); } public function users() { return $this->belongsToMany(User::class, 'document_assignments') ->withPivot('role') ->withTimestamps(); } public function mediaAssignments() { return $this->morphMany(MediaAssignment::class, 'mediable'); } }