'array', 'is_active' => 'boolean', 'show_prices' => 'boolean', 'show_stock' => 'boolean' ]; /** * Beziehung zu Benutzern */ public function users(): HasMany { return $this->hasMany(User::class); } /** * Beziehung zu Snackautomaten */ public function vendingMachines(): HasMany { return $this->hasMany(VendingMachine::class); } /** * Beziehung zu Produkten */ public function products(): HasMany { return $this->hasMany(Product::class); } /** * Beziehung zu Einstellungen */ public function settings(): HasMany { return $this->hasMany(Setting::class); } /** * Boot-Methode für automatische Slug-Generierung */ protected static function boot() { parent::boot(); static::creating(function ($tenant) { if (empty($tenant->slug)) { $tenant->slug = $tenant->generateSlug($tenant->name); } }); static::updating(function ($tenant) { if (empty($tenant->slug)) { $tenant->slug = $tenant->generateSlug($tenant->name); } }); } /** * Generiere einen einzigartigen Slug basierend auf dem Namen */ public function generateSlug($name) { if (empty($name)) { $name = 'tenant-' . time(); } $slug = Str::slug($name); $originalSlug = $slug; $counter = 1; // Prüfe ob Slug bereits existiert und füge Nummer hinzu wenn nötig while (static::where('slug', $slug)->where('id', '!=', $this->id ?? 0)->exists()) { $slug = $originalSlug . '-' . $counter++; } return $slug; } }