Файловый менеджер - Редактировать - /home/clickysoft/public_html/travel-guru.clickysoft.net/database/seeders/UserSeeder.php
Назад
<?php namespace Database\Seeders; use App\Models\Appointment; use App\Models\User; use App\Models\Category; use App\Models\UserReview; use App\Models\Badge; use App\Models\Destination; use App\Models\TimeSlot; use App\Models\UserChat; use Illuminate\Database\Seeder; use Spatie\Permission\Models\Role; use Faker\Factory as Faker; use Illuminate\Support\Str; class UserSeeder extends Seeder { /** * Run the database seeds. */ public function run() { $faker = Faker::create(); // Create Regular Users $userRole = Role::where('name', 'User')->first(); $users = []; for ($i = 1; $i <= 12; $i++) { $name = $faker->firstName . ' ' . $faker->lastName; $email = strtolower($faker->firstName . '.' . $faker->lastName . "@mailinator.com"); $user = User::create([ 'email' => $email, 'full_name' => $name, 'password' => 123, 'is_verified' => 1, 'phone_number' => $faker->phoneNumber, 'country' => $faker->country, 'last_seen' => $faker->dateTimeThisYear(), 'email_verified_at' => now(), 'is_active'=> true, 'uuid' => (string) Str::uuid(), ]); $user->assignRole([$userRole->id]); $users[] = $user; } // Create Travel Agents $travelAgentRole = Role::where('name', 'Travel Agent')->first(); $agents = []; for ($i = 1; $i <= 12; $i++) { $name = $faker->firstName . ' ' . $faker->lastName; $email = strtolower($faker->firstName . '.' . $faker->lastName . "@mailinator.com"); $agent = User::create([ 'email' => $email, 'full_name' => $name, 'password' => 123, 'is_verified' => 1, 'years_of_experience' => rand(1, 10), 'summary' => $faker->sentence, 'phone_number' => $faker->phoneNumber, 'languages' => implode(', ', $faker->words(3)), 'last_seen' => $faker->dateTimeThisYear(), 'email_verified_at' => now(), 'is_active'=> true, 'specialist' => 'Business travel specialist.', 'uuid' => (string) Str::uuid(), ]); $agent->assignRole([$travelAgentRole->id]); $agents[] = $agent; // TODO: Assign travel agents to multiple countries // $countries = Country::inRandomOrder()->take(rand(1, 6))->pluck('id'); // $agent->countries()->attach($countries); // Assign exactly two categories to each travel agent $categories = Category::pluck('id')->shuffle()->take(2); $agent->categories()->attach($categories); // Assign 3 or 4 random destinations to each travel agent $destinations = Destination::whereIn('id', range(1, 7))->inRandomOrder()->take(rand(3, 4))->pluck('id'); $agent->destinations()->attach($destinations); // Add random reviews for travel agents $this->addRandomReviews($agent, $faker); // Assign 1 to 3 random badges to each travel agent $this->assignRandomBadges($agent); } // Seed Chats between Users and Travel Agents foreach ($users as $user) { foreach ($agents as $agent) { $this->seedChat($user, $agent, $faker); $this->seedChat($agent, $user, $faker); // Bi-directional chats } } $this->createAppointments($users, $agents, $faker); } private function addRandomReviews(User $agent, $faker) { $numberOfReviews = rand(1, 5); for ($i = 0; $i < $numberOfReviews; $i++) { UserReview::create([ 'user_id' => rand(1, 12), 'agent_id' => $agent->id, 'message' => $faker->text(200), 'rating' => rand(1, 5), 'status' => 'approved', ]); } } private function assignRandomBadges(User $agent) { $badgeIds = Badge::pluck('id')->toArray(); $randomBadgeIds = array_rand(array_flip($badgeIds), rand(1, 3)); if (!is_array($randomBadgeIds)) { $randomBadgeIds = [$randomBadgeIds]; } $agent->badges()->attach($randomBadgeIds); } private function seedChat($sender, $receiver, $faker) { $numberOfChats = rand(1, 5); for ($i = 0; $i < $numberOfChats; $i++) { // Generate a random date between today and 1 year ago $randomDate = $faker->dateTimeBetween('-1 year', 'now'); UserChat::create([ 'sender_id' => $sender->id, 'receiver_id' => $receiver->id, 'message' => $faker->sentence, 'status' => 'unread', 'file_name' => null, 'file_path' => null, 'file_type' => null, 'created_at' => $randomDate, ]); } } private function createAppointments($users, $agents, $faker) { $timeSlots = TimeSlot::all(); foreach ($users as $user) { foreach ($agents as $agent) { if ($faker->boolean(50)) { $appointmentDate = $faker->dateTimeBetween('now', '+1 month'); $timeSlot = $timeSlots->random(); Appointment::create([ 'user_id' => $user->id, 'agent_id' => $agent->id, 'date' => $appointmentDate->format('Y-m-d'), 'time_slot_id' => $timeSlot->id ]); } } } } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.29 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка