Update partner packages, copy, and demo switcher
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-01-15 17:33:36 +01:00
parent 2f93271d94
commit ad829ae509
50 changed files with 1335 additions and 411 deletions

View File

@@ -26,7 +26,7 @@ class SeedDemoSwitcherTenants extends Command
{
protected $signature = 'demo:seed-switcher {--with-photos : Download sample photos from Pexels} {--photos-per-event=18 : Target photos per event when downloading} {--cleanup : Remove demo switcher tenants/events/photos instead of seeding}';
protected $description = 'Seeds demo tenants used by the DevTenantSwitcher (endcustomer + reseller profiles)';
protected $description = 'Seeds demo tenants used by the DevTenantSwitcher (endcustomer + partner profiles)';
public function __construct(private EventStorageManager $eventStorageManager)
{
@@ -129,7 +129,7 @@ class SeedDemoSwitcherTenants extends Command
$slugs = [
'starter' => 'Starter',
'standard' => 'Standard',
's-small-reseller' => 'Reseller S',
's-small-reseller' => 'Partner Start',
];
$packages = [];
@@ -232,17 +232,18 @@ class SeedDemoSwitcherTenants extends Command
private function seedResellerActive(array $packages, array $eventTypes): void
{
$eventPackage = $this->resolveIncludedPackage($packages['s-small-reseller'], $packages);
$tenant = $this->upsertTenant(
slug: 'demo-reseller-active',
name: 'Demo Reseller Active',
contactEmail: 'reseller-active@demo.fotospiel',
name: 'Demo Partner Active',
contactEmail: 'partner-active@demo.fotospiel',
attributes: [
'subscription_tier' => 'reseller',
'subscription_status' => 'active',
],
);
$this->upsertAdmin($tenant, 'reseller-active@demo.fotospiel');
$this->upsertAdmin($tenant, 'partner-active@demo.fotospiel');
TenantPackage::updateOrCreate(
['tenant_id' => $tenant->id, 'package_id' => $packages['s-small-reseller']->id],
@@ -279,7 +280,7 @@ class SeedDemoSwitcherTenants extends Command
foreach ($events as $index => $config) {
$event = $this->upsertEvent(
tenant: $tenant,
package: $packages['standard'],
package: $eventPackage,
eventType: $config['type'],
attributes: [
'name' => $config['name'],
@@ -296,17 +297,18 @@ class SeedDemoSwitcherTenants extends Command
private function seedResellerFull(array $packages, array $eventTypes): void
{
$eventPackage = $this->resolveIncludedPackage($packages['s-small-reseller'], $packages);
$tenant = $this->upsertTenant(
slug: 'demo-reseller-full',
name: 'Demo Reseller Voll',
contactEmail: 'reseller-full@demo.fotospiel',
name: 'Demo Partner Voll',
contactEmail: 'partner-full@demo.fotospiel',
attributes: [
'subscription_tier' => 'reseller',
'subscription_status' => 'active',
],
);
$this->upsertAdmin($tenant, 'reseller-full@demo.fotospiel');
$this->upsertAdmin($tenant, 'partner-full@demo.fotospiel');
TenantPackage::updateOrCreate(
['tenant_id' => $tenant->id, 'package_id' => $packages['s-small-reseller']->id],
@@ -330,7 +332,7 @@ class SeedDemoSwitcherTenants extends Command
foreach ($eventConfigs as $index => $config) {
$event = $this->upsertEvent(
tenant: $tenant,
package: $packages['standard'],
package: $eventPackage,
eventType: $config['type'],
attributes: [
'name' => $config['name'],
@@ -435,6 +437,19 @@ class SeedDemoSwitcherTenants extends Command
return $event;
}
private function resolveIncludedPackage(Package $resellerPackage, array $packages): Package
{
$includedSlug = $resellerPackage->included_package_slug;
if ($includedSlug && isset($packages[$includedSlug])) {
return $packages[$includedSlug];
}
$fallback = $packages['starter'] ?? $packages['standard'] ?? null;
return $fallback ?? $resellerPackage;
}
private function fallbackEventType(): ?EventType
{
$fallback = EventType::first();