'date', 'recurrence_rule' => 'array', 'started_at' => 'datetime', 'completed_at' => 'datetime', ]; public function project(): BelongsTo { return $this->belongsTo(Project::class); } public function creator(): BelongsTo { return $this->belongsTo(User::class, 'created_by'); } public function sprint(): BelongsTo { return $this->belongsTo(Sprint::class); } public function type(): BelongsTo { return $this->belongsTo(MeetingType::class, 'meeting_type_id'); } public function owner(): BelongsTo { return $this->belongsTo(User::class, 'owner_id'); } public function facilitator(): BelongsTo { return $this->belongsTo(User::class, 'facilitator_id'); } public function participants(): BelongsToMany { return $this->belongsToMany(User::class, 'meeting_user')->withTimestamps(); } public function actionItems(): HasMany { return $this->hasMany(MeetingActionItem::class); } public function structuredActionItems(): HasMany { return $this->hasMany(ActionItem::class); } public function structuredDecisions(): HasMany { return $this->hasMany(Decision::class); } public function blockers(): HasMany { return $this->hasMany(Blocker::class); } public function effectivenessReviews(): HasMany { return $this->hasMany(MeetingEffectivenessReview::class); } public function comments(): MorphMany { return $this->morphMany(Comment::class, 'commentable'); } public function files(): MorphMany { return $this->morphMany(File::class, 'fileable'); } }