'decimal:2', 'max_photos' => 'integer', 'max_guests' => 'integer', 'gallery_days' => 'integer', 'max_tasks' => 'integer', 'max_events_per_year' => 'integer', 'expires_after' => 'datetime', 'watermark_allowed' => 'boolean', 'branding_allowed' => 'boolean', 'features' => 'array', ]; // features handled by $casts = ['features' => 'array'] public function eventPackages(): HasMany { return $this->hasMany(EventPackage::class); } public function tenantPackages(): HasMany { return $this->hasMany(TenantPackage::class); } public function packagePurchases(): HasMany { return $this->hasMany(PackagePurchase::class); } public function isEndcustomer(): bool { return $this->type === 'endcustomer'; } public function isReseller(): bool { return $this->type === 'reseller'; } public function getLimitsAttribute(): array { return [ 'max_photos' => $this->max_photos, 'max_guests' => $this->max_guests, 'gallery_days' => $this->gallery_days, 'max_tasks' => $this->max_tasks, 'max_events_per_year' => $this->max_events_per_year, ]; } }