'datetime', ]; public function organization(): BelongsTo { return $this->belongsTo(Organization::class); } public function requestedBy(): BelongsTo { return $this->belongsTo(User::class, 'requested_by_user_id'); } public function approvedBy(): BelongsTo { return $this->belongsTo(User::class, 'approved_by'); } public function items(): HasMany { return $this->hasMany(CourseRequestItem::class); } public function isPending(): bool { return $this->status === 'pending'; } public function isApproved(): bool { return $this->status === 'approved'; } public function isRejected(): bool { return $this->status === 'rejected'; } public function approve(User $approvedBy): void { $this->update([ 'status' => 'approved', 'approved_by' => $approvedBy->id, 'approved_at' => now(), ]); } public function reject(User $approvedBy): void { $this->update([ 'status' => 'rejected', 'approved_by' => $approvedBy->id, 'approved_at' => now(), ]); } }