86 lines
2.7 KiB
PHP
86 lines
2.7 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\Event;
|
|
use App\Models\EventPackage;
|
|
use App\Models\EventType;
|
|
use App\Models\Package;
|
|
use App\Models\PackagePurchase;
|
|
use App\Models\Tenant;
|
|
use App\Services\EventJoinTokenService;
|
|
use Illuminate\Database\Seeder;
|
|
use Illuminate\Support\Facades\Schema;
|
|
|
|
class DemoEventSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$type = EventType::where('slug', 'wedding')->first();
|
|
if (! $type) {
|
|
return;
|
|
}
|
|
$demoTenant = Tenant::where('slug', 'demo-tenant')->first();
|
|
if (! $demoTenant) {
|
|
return;
|
|
}
|
|
$event = Event::updateOrCreate(['slug' => 'demo-wedding-2025'], [
|
|
'tenant_id' => $demoTenant->id,
|
|
'name' => ['de' => 'Demo Hochzeit 2025', 'en' => 'Demo Wedding 2025'],
|
|
'description' => ['de' => 'Demo-Event', 'en' => 'Demo event'],
|
|
'date' => now()->addMonths(3)->toDateString(),
|
|
'event_type_id' => $type->id,
|
|
'status' => 'published',
|
|
'is_active' => true,
|
|
'settings' => json_encode([]),
|
|
'default_locale' => 'de',
|
|
]);
|
|
|
|
if ($event->joinTokens()->count() === 0) {
|
|
/** @var EventJoinTokenService $service */
|
|
$service = app(EventJoinTokenService::class);
|
|
$service->createToken($event, [
|
|
'label' => 'Demo QR',
|
|
]);
|
|
}
|
|
|
|
$package = Package::where('slug', 'standard')->first();
|
|
if (! $package) {
|
|
$package = Package::where('type', 'endcustomer')->orderBy('price')->first();
|
|
}
|
|
|
|
if ($package) {
|
|
$eventPackageData = [
|
|
'purchased_price' => $package->price,
|
|
'purchased_at' => now()->subDays(7),
|
|
];
|
|
|
|
if (Schema::hasColumn('event_packages', 'used_photos')) {
|
|
$eventPackageData['used_photos'] = 0;
|
|
}
|
|
if (Schema::hasColumn('event_packages', 'used_guests')) {
|
|
$eventPackageData['used_guests'] = 0;
|
|
}
|
|
if (Schema::hasColumn('event_packages', 'gallery_expires_at')) {
|
|
$eventPackageData['gallery_expires_at'] = now()->addDays($package->gallery_days ?? 30);
|
|
}
|
|
|
|
EventPackage::updateOrCreate(
|
|
[
|
|
'event_id' => $event->id,
|
|
'package_id' => $package->id,
|
|
],
|
|
$eventPackageData
|
|
);
|
|
|
|
PackagePurchase::query()
|
|
->where('tenant_id', $demoTenant->id)
|
|
->where('package_id', $package->id)
|
|
->where('provider_id', 'demo-seed')
|
|
->update([
|
|
'event_id' => $event->id,
|
|
]);
|
|
}
|
|
}
|
|
}
|