*/ protected $fillable = [ 'membership_application_id', 'stage', 'decision', 'remarks', 'reviewer_id', 'reviewed_at', ]; /** * @var list */ protected $hidden = [ ]; protected function casts(): array { return [ 'stage' => ReviewStage::class, 'reviewed_at' => 'datetime', ]; } public function membershipApplication(): BelongsTo { return $this->belongsTo(MembershipApplication::class); } public function reviewer(): BelongsTo { return $this->belongsTo(User::class, 'reviewer_id'); } public function managementDecision(): ?ManagementDecision { if ($this->stage !== ReviewStage::Management) { return null; } return ManagementDecision::tryFrom($this->decision); } public function boardDecision(): ?BoardDecision { if ($this->stage !== ReviewStage::Board) { return null; } return BoardDecision::tryFrom($this->decision); } }