104 lines
4.2 KiB
PHP
104 lines
4.2 KiB
PHP
<?php
|
|
|
|
namespace Database\Seeders;
|
|
|
|
use App\Models\Offer;
|
|
use Illuminate\Database\Seeder;
|
|
|
|
class DemoDataSeeder extends Seeder
|
|
{
|
|
public function run(): void
|
|
{
|
|
$offers = [
|
|
[
|
|
'title' => 'Sunset Marina Table',
|
|
'slug' => 'sunset-marina-table',
|
|
'category' => 'restaurant',
|
|
'excerpt' => 'A polished waterfront dinner spot for couples or small groups.',
|
|
'description' => 'Priority seating, fast confirmation, and a memorable marina view that works well right after a taxi drop-off.',
|
|
'location_label' => 'Marina',
|
|
'price_from' => 42,
|
|
'duration_minutes' => 90,
|
|
'status' => 'published',
|
|
'is_featured' => true,
|
|
'priority_score' => 92,
|
|
'available_now' => true,
|
|
],
|
|
[
|
|
'title' => 'Old Town Tapas Walk',
|
|
'slug' => 'old-town-tapas-walk',
|
|
'category' => 'experience',
|
|
'excerpt' => 'A short guided route through the most photogenic local food spots.',
|
|
'description' => 'Ideal for first-time visitors who want a curated plan without committing half a day.',
|
|
'location_label' => 'Old Town',
|
|
'price_from' => 34,
|
|
'duration_minutes' => 75,
|
|
'status' => 'published',
|
|
'is_featured' => true,
|
|
'priority_score' => 88,
|
|
'available_now' => true,
|
|
],
|
|
[
|
|
'title' => 'Beach Club Day Pass',
|
|
'slug' => 'beach-club-day-pass',
|
|
'category' => 'activity',
|
|
'excerpt' => 'Fast-entry pass with towel, lounger, and drink credit included.',
|
|
'description' => 'An easy same-day upgrade for guests heading toward the waterfront zone.',
|
|
'location_label' => 'Beach',
|
|
'price_from' => 29,
|
|
'duration_minutes' => 120,
|
|
'status' => 'published',
|
|
'is_featured' => true,
|
|
'priority_score' => 85,
|
|
'available_now' => true,
|
|
],
|
|
[
|
|
'title' => 'City Center Brunch Slot',
|
|
'slug' => 'city-center-brunch-slot',
|
|
'category' => 'restaurant',
|
|
'excerpt' => 'Reliable reservation at a high-demand brunch concept.',
|
|
'description' => 'Convenient for arrivals into the city core with a predictable handoff to the host team.',
|
|
'location_label' => 'City Center',
|
|
'price_from' => 26,
|
|
'duration_minutes' => 60,
|
|
'status' => 'published',
|
|
'is_featured' => false,
|
|
'priority_score' => 74,
|
|
'available_now' => true,
|
|
],
|
|
[
|
|
'title' => 'Private Sailing Intro',
|
|
'slug' => 'private-sailing-intro',
|
|
'category' => 'experience',
|
|
'excerpt' => 'Short premium sailing experience from the marina.',
|
|
'description' => 'A premium upsell for guests already moving toward the port area.',
|
|
'location_label' => 'Marina',
|
|
'price_from' => 79,
|
|
'duration_minutes' => 105,
|
|
'status' => 'published',
|
|
'is_featured' => false,
|
|
'priority_score' => 80,
|
|
'available_now' => true,
|
|
],
|
|
[
|
|
'title' => 'Hotel Spa Recovery',
|
|
'slug' => 'hotel-spa-recovery',
|
|
'category' => 'service',
|
|
'excerpt' => 'Fast-access recovery ritual for same-day arrivals.',
|
|
'description' => 'Especially useful after airport or station pickups with short waiting windows.',
|
|
'location_label' => 'Hotel District',
|
|
'price_from' => 55,
|
|
'duration_minutes' => 60,
|
|
'status' => 'published',
|
|
'is_featured' => false,
|
|
'priority_score' => 71,
|
|
'available_now' => true,
|
|
],
|
|
];
|
|
|
|
foreach ($offers as $offer) {
|
|
Offer::updateOrCreate(['slug' => $offer['slug']], $offer);
|
|
}
|
|
}
|
|
}
|