updateOrCreate( ['assignment_id' => $assignment->id, 'student_id' => $student->id], [ 'notes' => $data['notes'] ?? null, 'status' => SubmissionStatus::Submitted, 'submitted_at' => now(), ], ); if ($file) { $submission->addMedia($file)->toMediaCollection('submission_file'); } return $submission; } public function forAssignment(Assignment $assignment): Collection { return $assignment->submissions() ->with(['student.user.profile', 'student.department']) ->latest('created_at') ->get(); } public function grade(Submission $submission, ?float $score): Submission { $submission->score = $score; $submission->update(); return $submission; } }