$model->uuid ??= (string) Str::uuid()); } public function programs() { return $this->belongsToMany(Program::class, 'program_participants') ->withPivot(['registration_source', 'is_pre_registered', 'pre_registered_session', 'status', 'registered_at']) ->withTimestamps(); } public function programParticipants() { return $this->hasMany(ProgramParticipant::class); } public function attendances() { return $this->hasMany(Attendance::class); } public function certificates() { return $this->hasMany(Certificate::class); } public function questionnaireResponses() { return $this->hasMany(QuestionnaireResponse::class); } public function attendanceForProgram(int $programId): ?Attendance { return $this->attendances()->where('program_id', $programId)->first(); } public function hasAnsweredQuestionnaire(int $programId, int $questionnaireSetId): bool { return $this->questionnaireResponses() ->where('program_id', $programId) ->where('questionnaire_set_id', $questionnaireSetId) ->exists(); } }