62 lines
No EOL
1.9 KiB
PHP
62 lines
No EOL
1.9 KiB
PHP
<?php
|
|
|
|
namespace Database\Factories;
|
|
|
|
use App\Models\PlannableItem;
|
|
use App\Models\Trip;
|
|
use Illuminate\Database\Eloquent\Factories\Factory;
|
|
|
|
class PlannableItemFactory extends Factory
|
|
{
|
|
protected $model = PlannableItem::class;
|
|
|
|
public function definition()
|
|
{
|
|
$types = ['hotel', 'restaurant', 'attraction', 'transport', 'activity'];
|
|
$type = $this->faker->randomElement($types);
|
|
|
|
return [
|
|
'trip_id' => Trip::factory(),
|
|
'name' => $this->faker->company(),
|
|
'type' => $type,
|
|
'address' => $this->faker->address(),
|
|
'notes' => $this->faker->sentence(),
|
|
'metadata' => $this->getMetadataForType($type),
|
|
];
|
|
}
|
|
|
|
private function getMetadataForType($type)
|
|
{
|
|
switch ($type) {
|
|
case 'hotel':
|
|
return [
|
|
'checkin_time' => '15:00',
|
|
'checkout_time' => '11:00',
|
|
'confirmation_number' => $this->faker->uuid()
|
|
];
|
|
case 'restaurant':
|
|
return [
|
|
'reservation_time' => '19:00',
|
|
'party_size' => $this->faker->numberBetween(2, 6)
|
|
];
|
|
case 'transport':
|
|
return [
|
|
'departure_time' => '10:00',
|
|
'arrival_time' => '14:00',
|
|
'transport_type' => $this->faker->randomElement(['flight', 'train', 'bus'])
|
|
];
|
|
case 'attraction':
|
|
return [
|
|
'opening_hours' => '9:00 AM - 5:00 PM',
|
|
'ticket_price' => '$' . $this->faker->numberBetween(10, 50)
|
|
];
|
|
case 'activity':
|
|
return [
|
|
'duration' => $this->faker->numberBetween(1, 4) . ' hours',
|
|
'meeting_point' => $this->faker->streetAddress()
|
|
];
|
|
default:
|
|
return [];
|
|
}
|
|
}
|
|
} |