'int', 'inquiry_id' => 'int', 'booking_id' => 'int', 'current_version_id' => 'int', 'created_by' => 'int', ]; public function contact(): BelongsTo { return $this->belongsTo(Contact::class); } public function inquiry(): BelongsTo { // Nach Modul 3 Phase 2: `Lead`-Model bildet die `inquiries`-Tabelle ab return $this->belongsTo(Lead::class, 'inquiry_id'); } public function booking(): BelongsTo { return $this->belongsTo(Booking::class); } public function currentVersion(): BelongsTo { return $this->belongsTo(OfferVersion::class, 'current_version_id'); } public function versions(): HasMany { return $this->hasMany(OfferVersion::class)->orderBy('version_no'); } public function accessTokens(): HasMany { return $this->hasMany(OfferAccessToken::class); } public function creator(): BelongsTo { return $this->belongsTo(User::class, 'created_by'); } public function scopeStatus(Builder $q, string $status): Builder { return $q->where('status', $status); } public function scopeOpen(Builder $q): Builder { return $q->whereIn('status', [self::STATUS_DRAFT, self::STATUS_SENT]); } public function isEditable(): bool { return in_array($this->status, [self::STATUS_DRAFT, self::STATUS_SENT], true); } }