'Scope expansion', 'missing_scope' => 'Missing or ambiguous scope', 'schedule_change' => 'Schedule change', 'site_condition' => 'Unexpected site condition', 'buyer_request' => 'Buyer-requested change', 'provider_request' => 'Provider-requested change', 'other' => 'Other', ]; public const STATUSES = ['open', 'accepted', 'declined', 'withdrawn']; protected function casts(): array { return [ 'responded_at' => 'datetime', ]; } public function workOrder(): BelongsTo { return $this->belongsTo(WorkOrder::class); } public function requester(): BelongsTo { return $this->belongsTo(User::class, 'requester_id'); } public function responder(): BelongsTo { return $this->belongsTo(User::class, 'responder_id'); } }