'datetime', 'type' => AssignmentType::class, ]; } // --- Accessors & Mutators --- protected function formattedDueDate(): Attribute { return Attribute::get(fn () => $this->due_date?->translatedFormat('l, d M Y H:i')); } protected function formattedCreatedAt(): Attribute { return Attribute::get(fn () => $this->created_at->translatedFormat('l, d M Y H:i')); } protected function formattedUpdatedAt(): Attribute { return Attribute::get(fn () => $this->updated_at?->translatedFormat('l, d M Y H:i')); } // --- Relations --- public function assignmentPins(): HasMany { return $this->hasMany(AssignmentPin::class); } public function assignmentSubmissions(): HasMany { return $this->hasMany(AssignmentSubmission::class); } public function assignmentTargets(): HasMany { return $this->hasMany(AssignmentTarget::class); } public function classSession(): BelongsTo { return $this->belongsTo(ClassSession::class); } public function course(): BelongsTo { return $this->belongsTo(Course::class); } public function students(): BelongsToMany { return $this->belongsToMany( Student::class, 'assignment_targets', 'assignment_id', 'student_id' ); } public function studyGroups(): BelongsToMany { return $this->belongsToMany( StudyGroup::class, 'assignment_targets', 'assignment_id', 'study_group_id' ); } }