'boolean', 'configuration' => 'array', ]; public function paymentMethod(): BelongsTo { return $this->belongsTo(PaymentMethod::class, 'slug', 'slug'); } /** * Sind alle Pflicht-Optionen dieses Moduls (siehe Options-Schema des Zahlungsmoduls) befüllt? */ public function isComplete(): bool { return PaymentMethod::isConfigurationComplete($this->slug, $this->configuration ?? []); } public function events(): BelongsToMany { // Pivot verknüpft über den Slug -- Event::paymentMethods() greift daher automatisch nur // auf Events des aktuell gebundenen Tenants zu (SiteScope auf Event + AvailablePaymentMethod). return $this->belongsToMany(Event::class, 'event_payment_methods', 'slug', 'event_id', 'slug', 'id')->withTimestamps(); } }