feat(packages): implement package-based business model

This commit is contained in:
Codex Agent
2025-09-26 22:13:56 +02:00
parent 6fc36ebaf4
commit 0a643c3e4d
54 changed files with 3301 additions and 282 deletions

View File

@@ -0,0 +1,138 @@
<?php
namespace Database\Seeders;
use Illuminate\Database\Seeder;
use App\Models\Package;
class PackageSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
// Endcustomer Packages
Package::create([
'name' => 'Free / Test',
'type' => 'endcustomer',
'price' => 0.00,
'max_photos' => 30,
'max_guests' => 10,
'gallery_days' => 3,
'max_tasks' => 5,
'watermark_allowed' => false,
'branding_allowed' => false,
'features' => json_encode([
'basic_uploads' => true,
'limited_sharing' => true,
'no_branding' => true,
]),
'description' => 'Ideal für kleine Test-Events oder erste Erfahrungen.',
]);
Package::create([
'name' => 'Starter',
'type' => 'endcustomer',
'price' => 19.00,
'max_photos' => 300,
'max_guests' => 50,
'gallery_days' => 14,
'max_tasks' => 20,
'watermark_allowed' => true,
'branding_allowed' => false,
'features' => json_encode([
'extended_gallery' => true,
'guest_sharing' => true,
'basic_analytics' => true,
]),
'description' => 'Perfekt für kleine Events wie Geburtstage oder Firmenfeiern.',
]);
Package::create([
'name' => 'Pro',
'type' => 'endcustomer',
'price' => 49.00,
'max_photos' => 1000,
'max_guests' => 200,
'gallery_days' => 30,
'max_tasks' => 50,
'watermark_allowed' => true,
'branding_allowed' => true,
'features' => json_encode([
'unlimited_sharing' => true,
'advanced_analytics' => true,
'custom_branding' => true,
'priority_support' => true,
]),
'description' => 'Für große Events wie Hochzeiten oder Konferenzen.',
]);
// Reseller Packages (jährliche Subscriptions)
Package::create([
'name' => 'Reseller S',
'type' => 'reseller',
'price' => 149.00,
'max_events_per_year' => 5,
'max_photos' => null, // Kein globales Limit, pro Event
'max_guests' => null,
'gallery_days' => null,
'max_tasks' => null,
'watermark_allowed' => true,
'branding_allowed' => true,
'expires_after' => now()->addYear(), // Jährlich
'features' => json_encode([
'event_management' => true,
'reseller_dashboard' => true,
'bulk_event_creation' => true,
'5_events_included' => true,
]),
'description' => 'Einstieg für kleine Agenturen: 5 Events pro Jahr.',
]);
Package::create([
'name' => 'Reseller M',
'type' => 'reseller',
'price' => 299.00,
'max_events_per_year' => 15,
'max_photos' => null,
'max_guests' => null,
'gallery_days' => null,
'max_tasks' => null,
'watermark_allowed' => true,
'branding_allowed' => true,
'expires_after' => now()->addYear(),
'features' => json_encode([
'event_management' => true,
'reseller_dashboard' => true,
'bulk_event_creation' => true,
'advanced_reporting' => true,
'15_events_included' => true,
]),
'description' => 'Für wachsende Agenturen: 15 Events pro Jahr.',
]);
Package::create([
'name' => 'Reseller L',
'type' => 'reseller',
'price' => 499.00,
'max_events_per_year' => 30,
'max_photos' => null,
'max_guests' => null,
'gallery_days' => null,
'max_tasks' => null,
'watermark_allowed' => true,
'branding_allowed' => true,
'expires_after' => now()->addYear(),
'features' => json_encode([
'event_management' => true,
'reseller_dashboard' => true,
'bulk_event_creation' => true,
'priority_support' => true,
'custom_integration' => true,
'30_events_included' => true,
]),
'description' => 'Für große Agenturen: 30 Events pro Jahr mit Premium-Features.',
]);
}
}