*/ use HasFactory; protected $fillable = [ 'portal', 'topic', 'status', 'name', 'email', 'message', 'page_url', 'payload', 'requester_ip', 'user_id', 'resolved_by_user_id', 'admin_note', 'resolved_at', ]; protected function casts(): array { return [ 'topic' => ContactMessageTopic::class, 'status' => ContactMessageStatus::class, 'payload' => 'array', 'resolved_at' => 'datetime', ]; } /** * Öffentliche Vorgangsnummer — analog zu Legal-Requests ("M-{id}"). */ public function reference(): string { return 'KT-'.$this->id; } /** * @return BelongsTo */ public function user(): BelongsTo { return $this->belongsTo(User::class); } /** * @return BelongsTo */ public function resolver(): BelongsTo { return $this->belongsTo(User::class, 'resolved_by_user_id'); } /** * @param Builder $query * @return Builder */ public function scopeOpen(Builder $query): Builder { return $query->whereIn('status', [ ContactMessageStatus::Open->value, ContactMessageStatus::InProgress->value, ]); } }