RegistrationStatus::class, 'signed_at' => 'datetime', 'reviewed_at' => 'datetime', ]; } public function registerMediaCollections(): void { $this->addMediaCollection('signature')->singleFile(); } public function student(): BelongsTo { return $this->belongsTo(Student::class); } public function academicTerm(): BelongsTo { return $this->belongsTo(AcademicTerm::class); } public function reviewer(): BelongsTo { return $this->belongsTo(User::class, 'reviewed_by'); } public function courseRegistrations(): HasMany { return $this->hasMany(CourseRegistration::class, 'submission_id'); } public function logs(): HasMany { return $this->hasMany(CourseRegistrationSubmissionLog::class, 'submission_id'); } protected function signatureUrl(): Attribute { return Attribute::make( get: fn () => $this->getFirstMediaUrl('signature') ?: null, ); } }