'datetime', 'responded_at' => 'datetime', ]; } public function package(): BelongsTo { return $this->belongsTo(BidPackage::class, 'bid_package_id'); } public function contractor(): BelongsTo { return $this->belongsTo(Contractor::class); } public function submission(): HasOne { return $this->hasOne(BidSubmission::class); } public function accept(): void { $this->update([ 'status' => 'accepted', 'responded_at' => now(), ]); } public function decline(string $reason = null): void { $this->update([ 'status' => 'declined', 'responded_at' => now(), 'decline_reason' => $reason, ]); } public function getHasSubmittedAttribute(): bool { return $this->submission()->exists(); } }